AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Hilfe bei einem kleinen Spiel
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe bei einem kleinen Spiel

Ein Thema von OmahaHawk · begonnen am 10. Sep 2009 · letzter Beitrag vom 11. Sep 2009
Antwort Antwort
OmahaHawk

Registriert seit: 13. Mär 2009
20 Beiträge
 
#1

Hilfe bei einem kleinen Spiel

  Alt 10. Sep 2009, 17:28
hallo DP Community ,

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 = 'dthen Shape2.Left := Shape2.Left + 10;
If key = 'athen Shape2.Left := Shape2.Left - 10;
end;

end.
danke schonmal an alle die helfen
Danke für eure Hilfe !
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Hilfe bei einem kleinen Spiel

  Alt 10. Sep 2009, 17:37
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?
$2B or not $2B
  Mit Zitat antworten Zitat
OmahaHawk

Registriert seit: 13. Mär 2009
20 Beiträge
 
#3

Re: Hilfe bei einem kleinen Spiel

  Alt 10. Sep 2009, 17:44
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 ?
Danke für eure Hilfe !
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Hilfe bei einem kleinen Spiel

  Alt 10. Sep 2009, 17:59
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?



Und Beides (von Oben und von Links) gleichzeitig ändern ergibt schwäg.
$2B or not $2B
  Mit Zitat antworten Zitat
OmahaHawk

Registriert seit: 13. Mär 2009
20 Beiträge
 
#5

Re: Hilfe bei einem kleinen Spiel

  Alt 10. Sep 2009, 18:15
sorry ich verstehe leider nicht, was ich ändern soll
Danke für eure Hilfe !
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Hilfe bei einem kleinen Spiel

  Alt 10. Sep 2009, 18:17
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
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Hilfe bei einem kleinen Spiel

  Alt 10. Sep 2009, 18:32
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.

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
  Mit Zitat antworten Zitat
OmahaHawk

Registriert seit: 13. Mär 2009
20 Beiträge
 
#8

Re: Hilfe bei einem kleinen Spiel

  Alt 10. Sep 2009, 20:21
erstmal danke an alle die mir geholfen haben
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
Danke für eure Hilfe !
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Aussagekräftiger Titel

  Alt 10. Sep 2009, 22:04
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
dmdjt

Registriert seit: 19. Jul 2009
37 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Hilfe bei einem kleinen Spiel

  Alt 11. Sep 2009, 04:22
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:59 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