Pygame: Snake

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Xtern
User
Beiträge: 3
Registriert: Dienstag 20. Januar 2009, 16:11

Pygame: Snake

Beitragvon Xtern » Dienstag 20. Januar 2009, 16:14

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
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Re: Pygame: Snake

Beitragvon numerix » Dienstag 20. Januar 2009, 16:46

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)?
Xtern
User
Beiträge: 3
Registriert: Dienstag 20. Januar 2009, 16:11

Beitragvon Xtern » Dienstag 20. Januar 2009, 16:51

Sonst programmier ich Java und PHP (Studium).
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Beitragvon str1442 » Dienstag 20. Januar 2009, 17:13

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.
SyrischerRaubelefant
User
Beiträge: 14
Registriert: Sonntag 7. Januar 2007, 20:59

Re: Pygame: Snake

Beitragvon SyrischerRaubelefant » Dienstag 20. Januar 2009, 21:51

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.
Besuch uns im euIRC:
server: irc.euirc.net
channel: #alle_in_den_chat
BlackJack

Beitragvon BlackJack » Dienstag 20. Januar 2009, 22:30

Für so eine Datenstruktur böte sich `collections.deque` an.
Xtern
User
Beiträge: 3
Registriert: Dienstag 20. Januar 2009, 16:11

Beitragvon Xtern » Mittwoch 21. Januar 2009, 22:57

Hallo und vielen Dank!
Habe das ganze jetzt mit zwei Listen in 100 Zeilen gelöst.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder