Hallo extend your life,
Willkommen im Forum
Bitte für verschiedene Probleme Demnächst mehre Themen eröffnen.
Hier aber dennoch ein paar Hilfen:
1) Weiterschalten der Farbe:
Für den Anfang reicht ein Timer. In einer globalen Variablen merkst du dir welcher Kreis Aufleuten soll. In der Timer Mehtode färbst Du die Kreise entsprechend ein. Damit es schneller geht kannst Du die Timerzeit runterstellen. Wenn es dann nicht mehr leutchten soll, so chalte den Timer aus und "entfärbe" alle Kreise.
b) keine Methode zum Start ist nicht übersichtlich erstellt.
statt
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.StartClick(Sender: TObject); begin z := random(3) +1; if z = 1 then shape1.brush.color:=clred; if z = 2 then shape2.brush.color:=clred; if z = 3 then shape3.brush.color:=clred;
if z = 2 then shape1.brush.color:=clblack; if z = 3 then shape1.brush.color:=clblack;
if z = 1 then shape2.brush.color:=clblack; if z = 3 then shape2.brush.color:=clblack;
if z = 1 then shape3.brush.color:=clblack; if z = 2 then shape3.brush.color:=clblack;
end; |
besser so etwas:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.StartClick(Sender: TObject); begin z := random(3) +1; if z = 1 then begin shape1.brush.color:=clred; shape2.brush.color:=clblack; shape3.brush.color:=clblack; end; if z = 2 then begin shape2.brush.color:=clred; shape1.brush.color:=clblack; shape3.brush.color:=clblack; end; if z = 3 then begin shape3.brush.color:=clred; shape1.brush.color:=clblack; shape2.brush.color:=clblack; end; end; |
Mit einem case-Statement geht es auch.
c) Die Auflösung:
Die Shape Objekte haben mehrere Ereignisse. Ein Ereigniss dass Du verwenden könntest ist "OnMouseUp".
Ein guter Weg ist wenn Du eine Methode "NutzerWahl(Kreisnummer:integer)" erstellt, für jedes Kreisobjekt einen Aufruf nachdem Muster
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.Shape1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin NutzerWahl(1) end; |
erstellst und in der Methode "NutzerWahl" prüfst du der richtige Kreis ausgewählt wurde.
d) Ebenfalls gut ist es das initiale Färben der Kreise aus der Startmethode (zwischen "Kreise färben Anfang" und "Kreise färben Ende" in eine extra Methode zu schreiben -> vermeidung redundanter Code (buzzwords DRY und KISS)
Viel Erfolg und viel Lernerfolg!
Tilo