![]() |
Re: Snake (das Spiel)
Mir ging es eigentlich um den Record sondern, die Art und weise wie ich die Schlange im Speicher halte.
Bei die ist Spielfeld und Schlange eins. Bei mir ist dies klar getrennt. Übrigens das weiterrücken der Schlange ist bei mir einfach zu lösen.
Delphi-Quellcode:
Achtung: Die Schlange sollte nie länger werden als ciMaxBuffer.
with Snake do
begin Inc(iHead); if iHead > ciMaxBuffer then iHead := 0; aBody[iHead] := Point(); end; |
Re: Snake (das Spiel)
Wie würdest du bei deinem Code das Entfernen des letzten Stücks der Schlange realisieren? Alle Elemente des Arrays eins nach vorne verschieben?
Wofür ist die Variable "iGrow" gedacht? |
Re: Snake (das Spiel)
Das interessante bei der Sache ist das die Schlange im Speicher nicht verschoben wird, sondern ich setze den Anfang nur neu.
Bsp.: Speicher:
Code:
Nach der Bewegung:
iHead = 2
iLen = 3 ((1, 2), (1, 3), (2, 3), (?, ?), (?, ?), ...)
Code:
Noch eine:
iHead = 3
iLen = 3 ((1, 2), (1, 3), (2, 3), (3, 3), (?, ?), ...)
Code:
(Index bei 0 beginnend)
iHead = 4
iLen = 3 ((1, 2), (1, 3), (2, 3), (3, 3), (4, 3), (?, ?), ...) Das Grow (Wachstum) kümmert sich um das längerwerden der Schlange. Ungefähr so:
Delphi-Quellcode:
Bsp:
if iGrow > 0 then
begin Inc(iLen); Dec(iGrow); end;
Code:
Bewegung:
iGrow = 2
iHead = 2 iLen = 3 ((1, 2), (1, 3), (2, 3), (?, ?), (?, ?), ...)
Code:
Noch eine:
iGrow = 1
iHead = 3 iLen = 4 ((1, 2), (1, 3), (2, 3), (3, 3), (?, ?), ...)
Code:
Eine ohne Wachstum da iGrow = 0
iGrow = 0
iHead = 4 iLen = 5 ((1, 2), (1, 3), (2, 3), (3, 3), (4, 3), (?, ?), ...)
Code:
Wie man sieht kommt man bei meinen Algo ohne irgentwelche aufwendigen Schleifen aus. Was bei Handy, GTR oder alten Rechnern wichtig ist. Da die ja nicht so Schnell sind.
iGrow = 0
iHead = 5 iLen = 5 ((1, 2), (1, 3), (2, 3), (3, 3), (4, 3), (5, 3), (?, ?), ...) |
Re: Snake (das Spiel)
Zitat:
[Edit]Schon gut, habe die Zeile if iHead > ciMaxBuffer then iHead := 0; in deinem Code übersehen :wink:[/edit] |
Re: Snake (das Spiel)
Ist diese Erkenntnis eine neues Tutorial Wert? :)
Snake für Fortgeschrittene! :mrgreen: Hinweis: Bei einem einfachen Snake würde ich nur das erste Element zeichnen und das letzte überzeichnen mit dem Levelfeld. |
Re: Snake (das Spiel)
Zitat:
Zitat:
Vielleicht mache ich irgendwann mal eine Neuauflage oder Ergänzung zu diesem Turorials :-D |
Re: Snake (das Spiel)
Zitat:
1. Ich bin schlecht im Erklären, 2. Die liebe Reschschrebung, 3. Denke ich das ich dazu schon viel zuviel weis (das soll kein Eigenlob sein). -> max. ein Tutorial für fortgeschrittene Sachen. |
Re: Snake (das Spiel)
Zitat:
Wenn ich mich im Ton vergriffen habe bitte um Entschuldigung. P.S. Die größten Kritiker der Elche waren früher selber welche. :mrgreen: |
Re: Snake (das Spiel)
Hi, echt geiles Tutorial! :thumb:
Leider geht der Downloadlink vom Beispiel nicht mehr. Kannst du das bitte nochmal hochladen? MFG Chris. |
Re: Snake (das Spiel)
jo bitte wwäre nett ;)
gutes TUT! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz