ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
494
494
EMPFEHLEN
-
Hey Leutz,
Ich habe früher viel C++ Programmiert bin aber vor einiger Zeit auf Delphi umgestiegen.
Nun bin ich dabei ein naja einfaches Game zu schreiben, mein Problem liegtnach
if (bar.Top = Kugel.Top)
then if
vermute ich Code.
Und zwar soll, wenn der Ball auf das Rechteck fliegt wieder zurück kehren.
Dummerweiße erkennt mein Programm nicht dass der Ball die gleiche .left wie mein
Balken(Rechteck) hat. Dass rechteck hat eine Width von 25 darum auch immer +1/-1
da er ja , egal auf welcher Fläche er landet es Merken soll.
Ich hoffe ihr habts kapiert ...
Hier der Code :
Mfg ImoDPHP-Code:var
Form1: TForm1;
counter : integer;
xK : integer;
yK: integer;
i : integer;
implementation
{$R *.dfm}
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
yy : string;
xx : string;
begin
yy := IntToStr(Y);
xx := IntToStr(X);
aY.Caption := yy;
aX.Caption := xx;
if Y > 350 then if Y < 426 then bar.Top := Y;
if X < 501 then bar.Left := X; // Bar der Maus nachlaufen lassen!
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
counter := 1;
xK := 300;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Kugel.Left := xK;
if (i = 1) then begin counter := counter +1;
yK := counter; end else
if (i = 2) then begin counter := counter -1;
yK := counter; end;
if (bar.Top = Kugel.Top)
then if
(bar.Left =
(Kugel.Left) or (Kugel.Left +1) or (Kugel.Left -1) or
(Kugel.Left +2) or (Kugel.Left -2) or (Kugel.Left +3) or (Kugel.Left -3) or
(Kugel.Left +4) or (Kugel.Left -4) or (Kugel.Left +5) or (Kugel.Left -5) or
(Kugel.Left +6) or (Kugel.Left -6) or (Kugel.Left +7) or (Kugel.Left -7) or
(Kugel.Left +8) or (Kugel.Left -8) or (Kugel.Left +9) or (Kugel.Left -9) or
(Kugel.Left +10) or (Kugel.Left -10) or (Kugel.Left +11) or (Kugel.Left -11) or
(Kugel.Left +12) or (Kugel.Left -12) or (Kugel.Left +13) or (Kugel.Left -13) or
(Kugel.Left +14) or (Kugel.Left -14) or (Kugel.Left +15) or (Kugel.Left -15) or
(Kugel.Left +16) or (Kugel.Left -16) or (Kugel.Left +17) or (Kugel.Left -17) or
(Kugel.Left +18) or (Kugel.Left -18) or (Kugel.Left +19) or (Kugel.Left -19) or
(Kugel.Left +20) or (Kugel.Left -20) or (Kugel.Left +21) or (Kugel.Left -21) or
(Kugel.Left +22) or (Kugel.Left -22) or (Kugel.Left +23) or (Kugel.Left -23) or
(Kugel.Left +24) or (Kugel.Left -24) or (Kugel.Left +25) or (Kugel.Left -25))
then begin
i := 2; end;
if Kugel.Top < 410 then
begin
Kugel.Top := Kugel.Top + yK;
end else begin
yK := 160; xK := 372; Panel1.Visible := true;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
i := 1
end;
end.
www.freaky-keylogger.de.ms ! -> Pls mal testen und mir ne Mail schreiben wäre echt net, da ich wissen muss obs so okay ist. Mfg Domi
-
hey,
sry mein Internet ist ausgefallen Router störung ... sry
undzwar mit ungelich <=/>=
geht es sehr gutwww.freaky-keylogger.de.ms ! -> Pls mal testen und mir ne Mail schreiben wäre echt net, da ich wissen muss obs so okay ist. Mfg Domi
-
27.06.08 13:34 #3
- Registriert seit
- Jun 2005
- Ort
- Schweiz
- Beiträge
- 65
könntest du ev. eine Zeichnung von dem machen, was du willst? ich kann es mir relativ schlecht vorstellen.
so vom Schiff aus würde ich sagen, dass der Fall bar.Top == Kugel.Top nie eintrifft, weil du keine Toleranzgrenze festgelegt hast. Oben beachtest du zwar eine Art Range
Code :1 2 3
(if Y > 350 then if Y < 426 then bar.Top := Y; if X < 501 then bar.Left := X; // Bar der Maus nachlaufen lassen! end; ),
aber unten ignorierst du sie wieder.Lächle, morgen wird alles noch schlimmer ...
-
hey,
wie meinst du das genau?
und wie bau ich so ne toleranz grenze ein, hab so was noch nie gemacht =(
Mfg Domiwww.freaky-keylogger.de.ms ! -> Pls mal testen und mir ne Mail schreiben wäre echt net, da ich wissen muss obs so okay ist. Mfg Domi
-
28.06.08 12:46 #5
- Registriert seit
- Jun 2005
- Ort
- Schweiz
- Beiträge
- 65
Code :1 2
if (bar.Top = Kugel.Top) then if
testet ja, ob die Y-Koordinate des Balkens und der Kugel gleich sind. Sobald sich in deinem Programm Werte schnell ändern , darfst du nicht mehr mit "=" arbeiten.
Man sagt sogar, dass man bei Schleifen eine Zählvariable nie nur auf Gleichheit testen soll.
falsch:
Code :1 2 3 4
i := 0; while not i == 532 do inc(i); end;
richtig:
Code :1 2 3 4
i := 0; while i < 532 do inc(i); end;
bei visuellen Komponenten kommt noch dazu, dass nicht jeder Pixel registriert wird, über den du mit der Maus fährst. (Zeichne mal in MSPaint mit dem Bleistift einen schnellen Kreis, dann sieht mans).
Wenn man Komponenten hat, die sich bewegen, checkt man nicht den Bereich, welchen sie nicht übertreten dürfen, sondern man legt den Bereich fest, in welchem sie sich aufhalten dürfen, oder nicht dürfen.
ich hoffe, ich habe dir jetzt nicht lauter Zeugs erzählt, dass du sowieso schon weisst. Wenn was unklar ist, einfach fragen.
grzLächle, morgen wird alles noch schlimmer ...
-
hey,
erstmals vielen Dank.
Leider weiß ich nicht wie ich so einen Breich festlegen soll
Mfg Domiwww.freaky-keylogger.de.ms ! -> Pls mal testen und mir ne Mail schreiben wäre echt net, da ich wissen muss obs so okay ist. Mfg Domi
-
30.06.08 09:25 #7
- Registriert seit
- Mar 2004
- Beiträge
- 441
Nur mal so in den Raum geworfen:
Helfen dir evtl. die Methoden IntersectRect() oder PtInRect aus der Unit "Types" weiter?
Ähnliche Themen
-
Break Out
Von Chickow im Forum Bildbearbeitung & IllustrationAntworten: 8Letzter Beitrag: 08.05.07, 09:05 -
BREAK; - Cannot break/continue 1 level
Von Papenburger im Forum PHPAntworten: 2Letzter Beitrag: 02.05.07, 15:12 -
Cannot break
Von GoldenEye im Forum PHPAntworten: 4Letzter Beitrag: 14.09.06, 19:35 -
break;
Von Flegmon im Forum Coders TalkAntworten: 5Letzter Beitrag: 06.12.05, 16:05 -
break
Von origin^sad im Forum PHPAntworten: 8Letzter Beitrag: 10.01.03, 23:32





Zitieren
Login





