Hi,
ich habe ein Problem mit einem Projekt.
Beschreibung des Programms/Spiels:
Man hat ein Spielfeld(Image-Kompente,auf der ne Canvas liegt).Darauf ist ein Bild von Stefan Raab.
Das Programm wird mit einem Button gestartet der einen Timer aktviert,der dafür sorgt das das Bild innerhalb des Spielfeldes hin und her springt.
Ziel des Spieles ist es, 3mal auf das Bild zu klicken,bei jedem Klick spirngt es schneller bzw. das Intervall des Timers wird herabgesetzt.
Wenn man es geschafft hat 3 mal auf das Bild zu klicken hat man gewonnen und es erscheint der Text 'Winner!'.
Wenn man 5mal daneben geklickt hat dann endet das Spiel und es erscheint der Text 'Loser!'.
Um die Klicks zu zählen verwende ich eine Variable und wenn man aufs Bild klickt wird eins hochgezählz.
Problem:
Ich hab das Problem das nichts passiert wenn ich auf das Bild klicke.
Ich habs ein paar mal durchgesehen,aber wie es meistens so ist,ist es wahrscheinlich nur ein dummer Fehler den man selbst so nicht erkennt.
Quellcode:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111:
| unit USchlagdenRaab;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, jpeg;
type TForm1 = class(TForm) bt_Start: TButton; Im_Spielfeld: TImage; Im_Raab2: TImage; Im_Raab: TImage; Timer1: TTimer; procedure FormActivate(Sender: TObject); procedure bt_StartClick(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Im_RaabClick(Sender: TObject); procedure Im_SpielfeldClick(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormActivate(Sender: TObject); begin randomize; Im_Spielfeld.Canvas.Rectangle(0,0,Im_Spielfeld.width,Im_Spielfeld.height); Im_Raab.Enabled:=False; Im_Raab2.Enabled:=False; Im_Spielfeld.Enabled:=False; Im_Raab2.Left:=Im_Raab.Left; Im_Raab2.Top:=Im_Raab.Top; end;
procedure TForm1.bt_StartClick(Sender: TObject); var klickzaehler,fehlklicks:real; begin if bt_Start.Caption='Start' then begin Timer1.Enabled:=True; end; Im_Raab.Enabled:=True; klickzaehler:=0; fehlklicks:=0; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Im_Raab.Left:=Im_Spielfeld.Left+random(Im_Spielfeld.width-Im_Raab.Width); Im_Raab.Top:=Im_Spielfeld.Top+random(Im_Spielfeld.Height-Im_Raab.height); Im_Raab2.Left:=Im_Raab.Left; Im_Raab2.Top:=Im_Raab.Top; Im_Raab.Enabled:=True; end;
procedure TForm1.Im_RaabClick(Sender: TObject); var klickzaehler:real; begin klickzaehler:=klickzaehler + 1; if klickzaehler=1 then begin Timer1.Interval:=750; end; if klickzaehler=2 then begin Timer1.Interval:=500; if klickzaehler=3 then begin Im_Spielfeld.Canvas.Font.Size:=80; Im_Spielfeld.Canvas.Font.Color:=clgreen; Im_Spielfeld.Canvas.Font.Name:='Comic Sans MS'; Im_Spielfeld.Canvas.Textout(Im_Spielfeld.Left,Im_Spielfeld.Top,'Winner'); Im_Raab.Visible:=False; Im_Raab2.Visible:=True; Im_Spielfeld.Enabled:=False; Im_Raab.Enabled:=False; Timer1.Enabled:=False; end; end;
end;
procedure TForm1.Im_SpielfeldClick(Sender: TObject); var fehlklicks:integer; begin fehlklicks:=fehlklicks+1; if fehlklicks=5 then begin Timer1.Enabled:=False; Im_Spielfeld.Canvas.Font.Size:=80; Im_Spielfeld.Canvas.Font.Color:=clgreen; Im_Spielfeld.Canvas.Font.Name:='Comic Sans MS'; Im_Spielfeld.Canvas.Textout(Im_Spielfeld.Left,Im_Spielfeld.Top,'Loser'); Im_Raab.Visible:=False; Im_Raab2.Visible:=True; Im_Spielfeld.Enabled:=False; Im_Raab.Enabled:=False; end; end;
end. |
Wäre sehr nett wenn ihr mir helfen könntet.
mfg
PS:Wie immer ist mir kein guter Titel eingefallen,sry.