Autor |
Beitrag |
Turbi
Beiträge: 22
|
Verfasst: Mi 13.08.08 09:08
Guten Tag
Ich hoffe ich nerve euch nicht, doch ich wollte euch mal fragen, wie man ein kleines Simples Snake spiel erstellt?
Mit diesn komischen openGL? Oder wie?
|
|
Hack Gott
Beiträge: 409
Windows Vista
Delphi 2005 Personal, Delphi 7
|
Verfasst: Mi 13.08.08 09:24
da ich die Suche benutzen kann, habe ich mal was für dich eingegeben und auch was gefunden:
www.delphi-forum.de/...amp;highlight=opengl
_________________ "Je mehr Käse, desto mehr Löcher; Je mehr Löcher, desto weniger Käse. Daraus folgt: Je mehr Käse desto weniger Käse!"
|
|
Hidden
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Mi 13.08.08 13:18
Hi,
Mit OpenGl hatten wir Snake schonmal: SNAKE3D, war interessant. Kannst ja von dort ein paar ideen suchen. Oder aber du lädst es runter, proggst was anderes und wir freuen uns über Vielfalt
Edit: Ich weiß ja nicht, wie lange du schon programmierst. Solltest du noch nciht so lange coden: Crashkurs von Christian S. und eventuell Suche nach CANVAS
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
Bergmann89
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Mi 13.08.08 14:19
HI,
OpenGL is am anfang n bisl häftig. Ich hab das damals einfach auf ne Image gezeichnet...
Ich helf dir ma auf die Sprünge. Bevor man loslegt macht man sich gedanken wie man das Spiel aufbaut, bzw. was mann braucht. Man fängt dabei mit dem Wesentlichen an (also die Schlange an sich und nich der GameOver-Bildschirm ) Also die Schlange besteht aus einzellnen Punkten (is am anfang das einfachste) da es mehrere Punkte sind bietet sich hier ein Array an. Da jeder Punkt der Schlange eine X- und eine Y_koordinate auf der Image hat brauchen wir also noch eon record für die x und y werte. Also wäre das in etwa unsere Schlange:
Delphi-Quelltext 1: 2:
| type TPoint = record x,y: Integer; end; var Snake: array of TPoint |
jetzt haben wir die Variable für die schlange. jetzt müssen wir beim start die Variablen initalisieren. Wir machen die schlange am anfang 5 Punkte lang und wollen sie auf einem 100x100 Punkte großen Feld in der Mitte platzieren:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure InitVariables; var i: Integer; begin SetLength(Snkae,5); for i := 0 to 4 do begin Snake[i].x := 50; Sanke[i].y := 48+i; end; end; |
so nun haben wir eine 5 Punkte lange schlange die sich auf der Mitte des Bilschirms befindet, aber wir sehen noch nix, deshalb müsssen wir uns überlegen, wie wir die schlnage nun auf die Image zeichnen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure RenderSnake; var i: Integer; begin Image.Canvas.Pen.Width := 5; for i := 0 to High(Snake) do begin Image.Canvas.MoveTo(Snake[i].x,Snake[i].y); Image.Canvas.LineTo(Snake[i].x,Snake[i].y+1); end; end; |
Jetzt is sollte die Schlange da sein. aber sie bewegt sich noch nich! also müssen wir die Punkte der schlange im Array weiter bewegen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure MoveSnake; begin for i := High(Snake) downto 1 do begin Snake[i].x := Snake[i-1].x; Snake[i].y := Snake[i-1].y; end; Snake[0].x := Snake[1].x; Snake[0].y := Snake[1].y-1; end; |
so das war erstma der anfang. ich mach am besten ma n kleines beispiel progg, was sich mit den Grundlagen beschäftigt.. meld mich wenn ich's fertsch hab...bis dann
MfG Bergmann.
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
Hidden
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Mi 13.08.08 14:28
Hi,
Das mittel der Wahl ist definitiv eine PAINTBOX, kein TImage(!!).
@Bergmann89: Bitte bring die Leute doch nicht noch auf den falschen Ansatz TImage ist für statische Bilder, auf TPaintBox zeichnet man, dazu ist sie da.
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
Turbi
Beiträge: 22
|
Verfasst: Mi 13.08.08 14:54
Titel: Danke
Vielen Dank an euch alle, das ihr mir so helft.
Und es ist echt voll nett von dir Bergmann, das du sogar ein Beispiel Programm erstellst.
So nun kapiere ich leider etws noch nicht (tut mir echt leid )
Also bei mir unterstreicht er immer die Worte:
-Snake
-x
-y
Ich habe mir schon etwas dabei gedacht, und zwar das ich diese Wörter noch irgendwo einfügen muss, damit er weiß was diese sein sollen.
Da habe ich gedacht das dieser Code dafür wichtig ist:
Delphi-Quelltext 1: 2:
| type TPoint = record x,y: Integer; end; var Snake: array of TPoint |
So nun weiß ich allerdings nicht, wo ich diesen Code einfügen soll :/ .
Und wo ich die anderen Cods einfügen soll, weiß ich auch nicht.
Ich habe es dann einfach so gemacht, und diesen Code:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure InitVariables; var i: Integer; begin SetLength(Snkae,5); for i := 0 to 4 do begin Snake[i].x := 50; Sanke[i].y := 48+i; end; end; |
In einem Button eingefügt...
Die anderen Codes habe ich einfach darunter eingefügt.
Eine Paintbox habe ich auch in die Mitte des Fensters eingefügt...
Es tut mir echt leid, und ich will euch auch nicht mehr nerven. Doch ich verstehs net so richtig auch wenn der Code schon da ist.
Moderiert von Tino: Delphi-Tags hinzugefügt.
|
|
Turbi
Beiträge: 22
|
Verfasst: Mi 13.08.08 15:11
Titel: Gefunden!
Ok so habe jetzt doch alles selbst mal ausprobiert, und habe alles hinbekommen. Naja fast alles, er unterstreicht mir nämlich bei dem Befehl:
Delphi-Quelltext 1: 2:
| TPoint = record x,y: Integer; end; |
Das Wort: record, und er unterstreicht das ; nach end, wieso?
Moderiert von Tino: Delphi-Tags hinzugefügt.
|
|
Bergmann89
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Mi 13.08.08 15:25
So hab das Bsp.-Prog fertig...
@Hidden: sorry, weiß auch nich, was mich da geritten hat xD
@Turbi: erstma n kurzer tipp, wenn du Code in den beitrag schreiben willst ist oben unter "Bereiche" n Button "+" wennde da drauf klickst, dann schreibt er den ausgewählten Code auch als code ins Topic. So das Tino nich dauernt die Delpih-Tags rein machen muss^^
Und nun zum Prog. TPoint ist schon von Delphi vordeklariert, das brauchst du also nich extra machen! Der rest is im Bsp-Prog. alles gut beschrieben mit ausreichend Comments. Wenn's noch Fragen gibt, einfach posten..
MfG Bergmann.
Einloggen, um Attachments anzusehen!
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
Turbi
Beiträge: 22
|
Verfasst: Mi 13.08.08 15:31
Titel: Vielen Dank!
Vielen Dank Bergmann! Du bist echt super nett!
Endlich weiß ich wies geht!
Vielen vielen Dank!
Eine Frage nurnoch:
Wofür ist der Timer da?
|
|
Bergmann89
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Mi 13.08.08 15:37
Der Timer wird alle 100ms ausgeführt und bewegt die schlange. wenn du die schneller bewegen willst sinfach das Intervall kleiner machen und großer, wenns langsamer gehen soll. einfach ma n bisl rum probieren, so lernt man am besten ^^
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
Turbi
Beiträge: 22
|
Verfasst: Mi 13.08.08 15:58
Titel: Komisch
Komisch, ich habe gerade eine neue VLC Formularanwendung erstellt.
Danach habe ich dort den ganzen Code gelöscht.
Und dann habe ich den ganzen Code von deiner Unit1 Kopiert, und dort reinkopiert. Da ich noch andere Sachen usw. machen wollte.
Doch als ich es testen wollte, kahm dort zwar kein Fehler aber es war auf dem Fenster keine Schlange da, auch wenn ich eine Paintbox und einen Timer genaudie gleichen Sachen vom anderen Fenster ins neue Kopiere, wieso?
Übrigens:
Ich versuche es jetzt mal so hinzubekommen, das wenn die Schlange sich selbst berührt eine showmessage mit Game over oder soetwas kommt.
|
|
|