Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Hilfe bei einem kleinen Spiel (https://www.delphipraxis.net/140031-hilfe-bei-einem-kleinen-spiel.html)

OmahaHawk 10. Sep 2009 16:28


Hilfe bei einem kleinen Spiel
 
hallo DP Community :hi:,

ich will ein kleines Spiel programmieren. Es ist sehr simpel und es klappt auch alles gut, nur habe ich ein Problem :
ich will das der asteroid quer durch das bild fliegt; momentan fliegt er nur senkrecht hinunter

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
randomize;
If shape1.top > 360 then
begin
shape1.Top := 50;
shape1.left := random(640);
Score := Score - 1;
Label1.Caption := inttostr(Score);
end;
shape1.Top := shape1.Top + 5;
If (shape1.Top > 328) and (Shape1.Left > Shape2.left-32) and (Shape1.Left < Shape2.left+64) then
begin
Score := Score + 1;
Label1.Caption := inttostr(Score);
shape1.Top := 50;
shape1.left := random(640);
end;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
Score := 0;
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
If key = 'd' then Shape2.Left := Shape2.Left + 10;
If key = 'a' then Shape2.Left := Shape2.Left - 10;
end;

end.
danke schonmal an alle die helfen :thumb:

himitsu 10. Sep 2009 16:37

Re: Hilfe bei einem kleinen Spiel
 
deine Timerprozedur sagt:
shape1.Top := shape1.Top + 5;


Top+5 = grade runter (Top = von oben)

Welchen Wert wird man da wohl auch noch ändern müssen, damit es seitwärts geht?

OmahaHawk 10. Sep 2009 16:44

Re: Hilfe bei einem kleinen Spiel
 
Zitat:

Zitat von himitsu
deine Timerprozedur sagt:
shape1.Top := shape1.Top + 5;


Top+5 = grade runter (Top = von oben)

Welchen Wert wird man da wohl auch noch ändern müssen, damit es seitwärts geht?

also muss ich nur noch einen weiteren befehl einbauen der -5 enthält ?
dann geht alle kreuz und quer durch das bild aber immer nach unter ?

himitsu 10. Sep 2009 16:59

Re: Hilfe bei einem kleinen Spiel
 
Top = Position vom oberen Rand

Top+5 = runter
Top-5 = hoch

Was wäre also Links/Rechts?

Tipp: Was machst du bei den Tasten A und D? :zwinker:



Und Beides (von Oben und von Links) gleichzeitig ändern ergibt schwäg.

OmahaHawk 10. Sep 2009 17:15

Re: Hilfe bei einem kleinen Spiel
 
sorry ich verstehe leider nicht, was ich ändern soll :gruebel:

Neutral General 10. Sep 2009 17:17

Re: Hilfe bei einem kleinen Spiel
 
Ich verstehe nicht warum Menschen wenn es ums Programmieren geht manchmal so kompliziert denken...

Wenn sich etwas schräg bewegt, dann bewegt es sich gleichzeitig in 2 verschiedene Richtungen. Z.B. nach unten und nach rechts.

D.h. du musst die Koordinaten deines Asteroiden nicht nur auf der y- sondern auch auf der x-Achse ändern. Zum Ändern auf der y-Achse gibts Top. Für die x-Achse gibt es Left.

Gruß
Neutral General

Satty67 10. Sep 2009 17:32

Re: Hilfe bei einem kleinen Spiel
 
Zitat:

Zitat von Neutral General
Ich verstehe nicht warum Menschen wenn es ums Programmieren geht manchmal so kompliziert denken.

Ich verstehe nicht, wie man einen eigenen Code posten kann, der Probleme zur seitlichen Bewegung/Positionierung mehrfach löst und dann ein einer weiteren Umsetzung scheitert. :gruebel:

Shape.Left wird ja nicht nur für Shape2 via A/D manipuliert, sondern Shape1 ja auch damit (zufällig) initialisiert.

Randomize könnte auch aus dem Timer-Code raus, z.B. in FormActivate

OmahaHawk 10. Sep 2009 19:21

Re: Hilfe bei einem kleinen Spiel
 
erstmal danke an alle die mir geholfen haben :thumb:
es läuft alles super nur verläuft das shape immer von oben rechts nach unten links
wie bekomme ich es hin, das es auch von oben links nach unten rechts oder abwechselnd senkrecht verläuft.

mit dem befehlt *or* und *right* kann er nichts anfangen :gruebel:

Luckie 10. Sep 2009 21:04

Aussagekräftiger Titel
 
Bitte auch mal selber überlegen und nicht gleich posten. Du weißt jetzt wie es von oben recht nach unten links geht, dann sollte es nicht zu schwer sein rauszubekommen, was man machen muss, damit es sich von oben links nach unten rechts bewegt.


Und bitte gib deinem Beitrag einen aussagekräftigen Titel. Der jetzige Titel lässt nicht erkennen, um was für ein Problem oder Frage es sich handelt. Um den Titel zu ändern, editiere einfach deinen ersten Beitrag. Damit erleichterst du das Auffinden deines Beitrages mit der Suche und ersparst anderen Mitglieder ein unnötiges Öffnen deines Beitrages.

dmdjt 11. Sep 2009 03:22

Re: Hilfe bei einem kleinen Spiel
 
Wenn ich es richtig interpretiere, willst Du das Shape1 sich über eine zufällig lange Strecke in eine zufällige Richtung bewegt?

Dann brauchst Du eine Counter-Variable die Du mit einem zufälligen Wert initialisierst und bei jedem OnTimer dekrementierst. Wenn diese Variable bei 0 angekommen ist, musst Du ihr wieder einen neuen zufälligen Wert zuweisen und eine Richtung berechnen. Das geht aber nur, wenn Du für z.B. die Berechnung x := x-5 eine Variable einführst... also z.B. x := x+ dx.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz