Entwickler-Ecke

Multimedia / Grafik - Game schließt sich


Aria - Mi 14.09.05 17:03
Titel: Game schließt sich
Hi,
ich habe mit Delphi für die Schule ein Moorhuhn fake Progemmiert, doch es hapert noch etwas!
Ich habe Image 2 und Image3, die durch den Bildschirm fliegen, diese muss man wegklicken, ansonsten schließt sich das game, aber wenn ich sie wegklicke, schließt es sich trotzdem, als ob das Bild einfach weiterlaufen würde!
Wie kann ich das beheben?

Die Antwort muss heute noch kommen, da ich es morgen abgeben muss (15.9) also BITTE helft mir!


Delphi-Quelltext
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:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Timer1: TTimer;
    Image2: TImage;
    Image3: TImage;
    Timer2: TTimer;
    Label4: TLabel;
    Timer3: TTimer;
    procedure Image1Click(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);
    procedure Image3Click(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Punkte: Integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Visible:=false;
label2.Visible:=false;
label3.Visible:=false;
image2.Visible:=true;
timer1.enabled:=true;
image3.Visible:=true;
timer2.enabled:=true;
timer3.Enabled:=true;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
image2.Top:=image2.Top+10;
image2.Left:=image2.left+10;
if image2.left> 869
then
form1.close;
end;

procedure TForm1.Image2Click(Sender: TObject);
begin
image2.Visible:=false;

end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
image3.Top:=image3.Top+23;
image3.Left:=image3.left+20;
if image2.left> 869
then
form1.close;
if image2.top> 600
then
form1.close;
end;

procedure TForm1.Image3Click(Sender: TObject);
begin
image3.Visible:=false;
end;

procedure TForm1.Timer3Timer(Sender: TObject);
begin
Punkte:=Punkte-1;
Label1.caption:=inTtostr (Punkte);
end;

procedure TForm1.Image1Click(Sender: TObject);
begin

end;

end.


Amateur - Mi 14.09.05 17:10


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
if image2.left> 869
then
form1.close;
if image2.top> 600
then
form1.close;


da könnte es probleme geben. einfach ma alle close befehle rausnehmen (natürlich die komplette if schleifein diesem fall). hast denselben code auch im timer1. alles was mit close zu tun hat raus. wenns dann startet haste irgendwas falsch geproggt. ansonsten liegt der fehler tiefer im programmcode

edit: habs ma getestet. also mit dem code den du gepostet hast funzt es also muss es wo anders dran liegen. poste ma den rest des codes


Aria - Mi 14.09.05 17:23

Ich habe das problem gefunden, es war wie du sagtest ein falsch eingegebener Code bei den close codes!
Nun noch eine frage:
Bei mir wird die Zeit gezählt, indem ein angeschaltetter Timer die Zeit voranlaufen lässt.
Ich möchte nun, dass wenn die Zeit bei 10 ist, dass dann das Fenster geschlossen wird, kann mir einer sagen wie das geht?

Danke nochmal für die antwort zur ersten frage!


Jonas1405 - Mi 14.09.05 17:29

user profile iconAria hat folgendes geschrieben:
Ich habe das problem gefunden, es war wie du sagtest ein falsch eingegebener Code bei den close codes!
Nun noch eine frage:
Bei mir wird die Zeit gezählt, indem ein angeschaltetter Timer die Zeit voranlaufen lässt.
Ich möchte nun, dass wenn die Zeit bei 10 ist, dass dann das Fenster geschlossen wird, kann mir einer sagen wie das geht?

Danke nochmal für die antwort zur ersten frage!


Ich weiß gerade nicht wasfür ein Interval du für den Timer eingegeben hast- aber eigentlich kannst du doch eine Variable nehmen und diehochzählen und ggf. so umrechnen, dass du einen sekundenwert hast- oder??!!

Jonas


Aria - Mi 14.09.05 17:35

Das verstehe ich nciht ganz!
Kannst du mir mal deinen vorschlag in codes sozusagen geben?
Dann kann ich es mal ausprobieren, wäre sehr nett!


Christian S. - Mi 14.09.05 17:36

user profile iconAmateur hat folgendes geschrieben:
natürlich die komplette if schleifein diesem fall
http://www.if-schleife.de :mrgreen:


Aria - Mi 14.09.05 17:45

Aber nun bitte zurück zum eigentlichen Thema


Amateur - Mi 14.09.05 18:14

ups natürlich if abfrage. sry. hab halt schnell ne antwort getippt und net drauf geachtet