Seite 1 von 1

[Pygame] Spiel "Tunnel" -> Draw.Lines als Sprite darstellen

Verfasst: Mittwoch 27. April 2011, 14:00
von Dennis1906
Hey Leute,

Wir haben in unserem Schulprjekt das Ziel das Spiel "Tunnel" welches es auch auf dem iphone gibt mit python nachzuprogrammieren ...
die spielfigur die mit den Pfeiltasten gelenkt wird haben wir als Sprite dargestellt.

Das Problem aktuell besteht darin, dass wir zwar den Tunnel mithilfe vom befehl draw.lines(...) darstellen können, es woird ja eine koordinatenliste als Eingabe gemacht.

Da wir jedoch am Ende mit "pygame.sprite.spritecollide (als EIngabe sidn hier nur sprites möglich, also das Sprite "Player" und das Sprite "Tunnel") feststellen müssen, ob der Spieler die Tunnelwand berührt, muss die Tunnelwand also draw.lines() ebenfalls ein sprite sein.

Hier besteht auch unser Problem, denn bis jetzt haben wir weder eine Lösung gefunden, die Linien in ein Sprite zu konvertieren, noch eine Lösung gefunden mithifle von pygame.Surface eine Zackenlinie darzustellen.

Vielen Dank für Eure Hilfe :-)

Re: [Pygame] Spiel "Tunnel" -> Draw.Lines als Sprite darstel

Verfasst: Mittwoch 27. April 2011, 14:24
von Xynon1
Man könnte den Tunnel aus einzelnen Linien zusammensetzen und dann einfach die Rechtecke auf Kollision prüfen, denn eine Linie ist nichts weiter als ein pygame.Rect und ein Sprite muss auch immer ein Rechteck als Attribute besitzen. "Rect.collidelist" wäre dann interessant.

Re: [Pygame] Spiel "Tunnel" -> Draw.Lines als Sprite darstel

Verfasst: Mittwoch 27. April 2011, 19:50
von deets
Ich kenne das Spiel "Tunnel" nicht, aber in Spielen ist es eine durchaus gaengige Technik, Grafik und Spiellogik nicht 1:1 zu koppeln, sondern parallele Strukturen vorzuhalten.

Dir ist bestimmt schon in Spielen aufgefallen, dass der Held an unsichtbare Grenzen stoesst. Auch wenn die Grafik dahinter natuerlich weitergeht. Das ist genau so ein Fall.

Das heisst, dass du ein Tunnel-Objekt hast, dass sich zwar mittels diverser Linien oder sonstigem malt. Aber gleichzeitig auch noch die von Xynon1 bereits erwaehnten Rechtecke oder andere Kollisions-Objekte beinhaltet. Und *die* werden dann fuer eine Kollisionsabfrage benutzt.

Re: [Pygame] Spiel "Tunnel" -> Draw.Lines als Sprite darstel

Verfasst: Freitag 29. April 2011, 22:25
von Dennis1906
Okay, Danke für den Tipp :)

Haben das jetzt so wie Xynon1 gesagt hat gemacht, die Idee kam uns auch gerade mit dem einstellen des Posts :)

Ist zwar so n Haufen Arbeit, da jede einzelne Linie ja einzelne Koordinaten braucht ...
Haben es jetzt so, dass die Koordinaten per .txt eingelesen werden, diese txt. ist jetzt mal Handgeschrieben (einfach immer angegeben wie lange die Zeile sein soll ...) aber mit nem kleinen Extraprogramm lässt die sich ja auch schnell automatisch machen ;-)

Vielen Dank :)

Wir halten euch aufm Laufenden ... wenns Projekt fertig ist werd ichs mal hochladen ;-)

Re: [Pygame] Spiel "Tunnel" -> Draw.Lines als Sprite darstel

Verfasst: Samstag 30. April 2011, 00:08
von Xynon1
Es wäre noch nett zu konkretisieren welches Spiel ihr nun meint, wie deets kenne ich das Spiel auch nicht. Aber nach der Beschreibung sollte der Umbau nicht allzu schwer gewesen sein, eigentlich müsste man nur eine Schleife umschreiben und die Daten in einer Liste hinterlegen. Woher die Daten für das Level kommen ist natürlich egal und eine Leveldatei wäre ja nicht so fremdartig. Allerdings nehme ich an das es doch eher ein kleines Spiel ist, ist es dort wirklich Vorteilhaft Levels anzulegen oder könnte man die auch eventuell generieren(wenn möglich). Sonst wird das Spiel schnell eintönig. Das Ergebnis würde ich natürlich gerne sehen :mrgreen:

Re: [Pygame] Spiel "Tunnel" -> Draw.Lines als Sprite darstel

Verfasst: Samstag 30. April 2011, 00:35
von BlackJack
Wenn ich mal raten müsste ist das hier gemeint: http://uri.cat/iphone/tunnel/

Re: [Pygame] Spiel "Tunnel" -> Draw.Lines als Sprite darstel

Verfasst: Samstag 30. April 2011, 02:36
von Xynon1
Ah ok, sowas in der Art hatte ich erwartet(erinnert stark an den Skiläufer als ASCII-Text grafik), hier sollte man wirklich besser die Level generieren lassen.