Hab dieses Jahr eine Ampel auf Assembler-Ebene programmiert, C ist mir da zu hoch...
Wo gibts denn sowas? Klingt nach nem ziemlichen Verkehrschaos...ok, geben wir folgendes vor: bei Klick auf den Button soll in die nächste Ampelphase gewechselt werden
Du kannst mit IF einen Timer bauen....Danke für die Hilfe, ich darf aber wie gsagt nur If&else benutzen, bei timern, true ect. sind wir nochgarnicht...
HALLO
k = k + 1
if k = 1000
goto TSCHUESS
else
goto HALLO
endif
TSCHUESS
wie schon erwähnt würde ich Ampeln über Timer oder Sensoren schalten ... aber in seiner Aufgabenstellung wird scheinbar ein Button verlangt, also muss ich dem ja irgendeinen Sinn gebenWo gibts denn sowas? Klingt nach nem ziemlichen Verkehrschaos...
ich denke, du musst auf jeden Fall mit gekoppelten Bedingungen arbeiten, also "and"Danke für die Hilfe, ich darf aber wie gsagt nur If&else benutzen, bei timern, true ect. sind wir nochgarnicht...
Hier nochmal der Code:
C#:using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Ample { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void cmdStart_Click(object sender, EventArgs e) { if (pnlRot.BackColor == Color.Gray) { this.pnlRot.BackColor = Color.Red; } else if (pnlRot.BackColor == Color.Red) { this.pnlGelb.BackColor = Color.Yellow; } } } }
Ich will erst alle Farben haben.
Also Klick1 Rot geht an
Klick 2 Gelb geht an, Rot bleibt.
Klick 3 Grün geht an, Rot u. Gelb bleibt.
Das will ich erstmal haben, dannach will ich erst Rot nachdem Gelb aufleutet, wieder grau machen.
Dannach mache ich noch ein Reset-Knopf.
Aber zuerst alle Farben haben.
Habs schon versucht, aber ich bekomme einfach das letzte Panel nicht zum leuchten. =/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Ample
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void cmdStart_Click(object sender, EventArgs e)
{
if (pnlRot.BackColor == Color.Gray) and (pnlGruen.BackColor == Color.Gray)
{
this.pnlRot.BackColor = Color.Red;
this.pnlGelb.BackColor = Color.Gray;
}
else if (pnlRot.BackColor == Color.Red) and (pnlGelb.BackColor == Color.Gray)
{
this.pnlRot.BackColor = Color.Red;
this.pnlGelb.BackColor = Color.Yellow;
}
else if (pnlRot.BackColor == Color.Red) and (pnlGelb.BackColor == Color.Yellow)
{
this.pnlRot.BackColor = Color.Gray;
this.pnlGelb.BackColor = Color.Gray;
this.pnlGruen.BackColor = Color.Gruen;
}
else if (pnlGelb.BackColor == Color.Gray) and (pnlGruen.BackColor == Color.Green)
{
this.pnlGelb.BackColor = Color.Yellow;
this.pnlGruen.BackColor = Color.Gray;
}
}
}
}
Du kannst mit IF einen Timer bauen....
Code:HALLO k = k + 1 if k = 1000 goto TSCHUESS else goto HALLO endif TSCHUESS
Abfrage 1: fragt ab, ob Rot und Grün aus sind -> nur Gelb ist an -> Schaltung auf Rot
Abfrage 2: fragt ab, ob Rot an und Gelb aus ist -> Gelb wird dazu geschaltet
Abfrage 3: fragt ab, ob Rot und Gelb an sind -> beide werden aus- und Grün wird angeschaltet
Abfrage 4: fragt ab, ob Gelb aus und Grün an ist -> Gelb schaltet an, Grün aus
das hatte ich doch mit meinen Check-Variablen und True/False-Abfragen versucht, aber er hat ja geschrieben, dass sie das nicht dürfenIch wäre ja für eine FLAG, denn ich mag das MVC-Pattern.
D.h. man sollte den Status der Ampel in einer anderen Variablen abstrahieren und sich nicht danach richten, welche Farben auf dem Panel angezeigt werden (wobei dies natürlich korrelieren sollte).
oder meinst du das so, dass man jedem Ampelstatus beispielsweise eine Nummer zuweist, also
Nur Rot = 1
Rot und Gelb = 2
Nur Gelb = 3
Nur Grün = 4
und den dann entsprechend auf einen Variable schreibt, abfragt und neu zuweist ?
Ich denke es wäre sehr gut, wenn du uns zeigst, was du für das letzte Panel programmiert hast, denn wenn duHabs schon versucht, aber ich bekomme einfach das letzte Panel nicht zum leuchten. =/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Ample
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void cmdStart_Click(object sender, EventArgs e)
{
if (pnlRot.BackColor == Color.Gray)
{
this.pnlRot.BackColor = Color.Red;
}
else if (pnlRot.BackColor == Color.Red)
{
this.pnlGelb.BackColor = Color.Yellow;
}
else if (pnlGelb.BackColor == Color.Yellow)
{
this.pnlGreen.BackColor = Color.Green;
}
}
}
}
else if (pnlGelb.BackColor == Color.Yellow)
{
this.pnlGreen.BackColor = Color.Green;
}
else if (pnlRot.BackColor == Color.Red)
{
this.pnlGelb.BackColor = Color.Yellow;
}
if (pnlRot.BackColor == Color.Gray) and (pnlGruen.BackColor == Color.Gray)
if ((pnlRot.BackColor == Color.Gray) && (pnlGruen.BackColor == Color.Gray))
Bin mir da jetzt nicht 100% sicher, in C(#) gibt es doch kein 'and' sondern '&&' oder ?Code:if (pnlRot.BackColor == Color.Gray) and (pnlGruen.BackColor == Color.Gray)
jo danke für's Korrigieren, ich kann wie gesagt leider kein C und kenne demzufolge die Schüsselwörter/Befehle da nichtBin mir da jetzt nicht 100% sicher, in C(#) gibt es doch kein 'and' sondern '&&' oder ?Code:if (pnlRot.BackColor == Color.Gray) and (pnlGruen.BackColor == Color.Gray)
Ausserdem muss der ganze Ausdruck nach dem 'if' noch eingeklammert werden weil nach if() sonst Schluss wäre mit dem if.
Code:if ((pnlRot.BackColor == Color.Gray) && (pnlGruen.BackColor == Color.Gray))
der Meinung bin auch auch, dass es nur mit if/then nicht lösbar ist - entweder man nutzt eben "and", oder eine Status-VariableNur mit IF kann es jedoch ohne einen weiteren Wert gar nicht lösbar sein, dann wenn du bei Gelb bist, woher willst du dann wissen, ob es nun von Gelb -> Grün, oder von Gelb -> Rot geht?
der Meinung bin auch auch, dass es nur mit if/then nicht lösbar ist - entweder man nutzt eben "and", oder eine Status-Variable
Ansichtssache
Finde es nur unnötig, falls sich mal jemand anderes den Code ansieht stolpert er erst mal darüber.
AND, wat soll dat denn ?
Kann aber auch sein, dass ich so auf C ( das einzig wahre) fixiert bin, dass mir AND ( Basic ? ) einfach zuwider ist.