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

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Dennis1906
User
Beiträge: 2
Registriert: Mittwoch 27. April 2011, 13:53

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 :-)
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

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.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
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.
Dennis1906
User
Beiträge: 2
Registriert: Mittwoch 27. April 2011, 13:53

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 ;-)
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

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:
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
BlackJack

Wenn ich mal raten müsste ist das hier gemeint: http://uri.cat/iphone/tunnel/
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

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.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Antworten