Seite 1 von 1

Pygame: Snake

Verfasst: Dienstag 20. Januar 2009, 16:14
von Xtern
Hallo! Ich bin neu in der Python-Gemeinde und würde gerne sozusagen als erste Übung einen Snake-Clone mit Pygame schreiben. Jedoch habe ich leider das Problem, dass ich keine Idee habe, wie ich die Schlange um die Ecke gebogen bekomme und den Schwanz hinterherziehe. Vielleicht kann mir einer von euch helfen.

MfG
Xtern

Re: Pygame: Snake

Verfasst: Dienstag 20. Januar 2009, 16:46
von numerix
Xtern hat geschrieben:Hallo! Ich bin neu in der Python-Gemeinde und würde gerne sozusagen als erste Übung einen Snake-Clone mit Pygame schreiben. Jedoch habe ich leider das Problem, dass ich keine Idee habe, wie ich die Schlange um die Ecke gebogen bekomme und den Schwanz hinterherziehe. Vielleicht kann mir einer von euch helfen.

MfG
Xtern
Möglicherweise ist das Problem ein ganz anderes, dass nämlich die Aufgabe, die du dir da vorgenommen hast, für den Anfang noch zu schwer ist.
Was hast du denn schon für Vorerfahrungen (mit anderen Programmiersprachen)?

Verfasst: Dienstag 20. Januar 2009, 16:51
von Xtern
Sonst programmier ich Java und PHP (Studium).

Verfasst: Dienstag 20. Januar 2009, 17:13
von str1442
Du brauchst eine geeignete Datenstruktur. So eine Schlange kann sich ja nur auf einem Feld der Größe x * y, wobei x und y natürliche Zahlen sind. Jedes Feld hat eine bestimmte Breite oder Länge, in die dann ein Bild für ein Ei oder einen Teil der Schlange eingesetzt wird. Sowas kannst du mit eigenen Objekten und None Werten, die als Zustände agieren, in einer Liste von Listen umsetzen:

Code: Alles auswählen

[[None, None, None, None, None],
[None, <Ei>, None, None, None],
[None, None, None, None, None],
[None, <Schlangeteil>, <Schlangenteil>, None, None],
[None, None, None, None, None]]
Als nächstes brauchst du also verschiedenen Objekte, die in so einem Feld existieren können, und ein Pygame Sprite repräsentieren (wobei du zuerst die ganze Logik ohne pygame entwickeln solltest, und dann der Logik Klasse ein Mixin mit einem pygame.sprite.Sprite zu erstellen). Dann brauchst du noch ein Objekt, das die Schlange repräsentiert und aus Schlangenteil Objekten besteht und diese so zu verwalten weiß, das eine Schlange sich eben so verhält, wie sie es soll.

Re: Pygame: Snake

Verfasst: Dienstag 20. Januar 2009, 21:51
von SyrischerRaubelefant
Xtern hat geschrieben:Hallo! Ich bin neu in der Python-Gemeinde und würde gerne sozusagen als erste Übung einen Snake-Clone mit Pygame schreiben. Jedoch habe ich leider das Problem, dass ich keine Idee habe, wie ich die Schlange um die Ecke gebogen bekomme und den Schwanz hinterherziehe. Vielleicht kann mir einer von euch helfen.

MfG
Xtern
Spontan würde ich es so machen:
sagen wir mal die gesamte schlange besteht aus kugeln. Dann würd ich die geordnet in einer liste speichern, wobei jeder Teil der schlange (also eine kugel) eine referenz auf ihm vorausgehende Kugel haben sollte. Somit bestimmt nur der vorderste Teil der Schlange (Kopf) die Richtung und alle anderen Kugeln setzen halt ihre aktuelle Position auf die "letzte" position der vorausgehenden Kugel setzen. Somit ziehen alle Teile der Schlange nach.

Verfasst: Dienstag 20. Januar 2009, 22:30
von BlackJack
Für so eine Datenstruktur böte sich `collections.deque` an.

Verfasst: Mittwoch 21. Januar 2009, 22:57
von Xtern
Hallo und vielen Dank!
Habe das ganze jetzt mit zwei Listen in 100 Zeilen gelöst.