2016-10-07 3 views
0

Ich mache mein eigenes Spiel mit Python2.7 durch die pygame libraby. Es ist ein 1v1-Kampfspiel, bei dem die Spieler die gleiche Tastatur benutzen.Python2.7 Wie verwende ich mehrere Variablen in einer Schleife?

Das Spiel funktioniert in einer Hauptschleife, die 60 Mal pro Sekunde wiederholt wird, jedes Mal wenn die Schleife ausgeführt wird, berechnet es viele Dinge zB die Position, Problem ist, dass ich 2 Spieler habe, also muss ich die Zeilen zwei schreiben mal.

Beispiel hier:

wenn p1direction == 'rechts' und p1XS < p1Attributes [1]: p1XS + = p1Attributes [0]

und:

wenn p2direction == 'rechts' und p2XS < p2Attributes [1]: p2XS + = p2Attributes [0]

Die Unterschiede p1 und p2 sind Variablen, die zu Player 1 bzw. Player 2 gehören.

Ich möchte nur eine Lösung finden, um nicht jedes Mal die gleichen Zeilen nur für p2 zu schreiben. Ich habe über die Funktion nachgedacht, damit ich sogar Spieler hinzufügen kann, aber ich weiß nicht, wie ich es in diesem Fall machen soll ...

Kann mir jemand helfen? :) Bitte

Antwort

2

Erstellen Sie einen Klassenspieler. Fügen Sie dann die Attribute jedes Spielers zur Klasse hinzu. Instantiate Ihre Klasse mit Spieler 1 und 2.

class Player(): 
    direction = "right" 
    etc. 
    def shoot(self): 
     if self.direction == "right" 
      shoot_right() 

playerOne = Player() 
playerTwo = Player() 

direction = playerOne.direction 

Wenn Sie Klassen noch nicht verwendet haben, würde ich nicht empfehlen sie jedoch verwenden. Vererbung kann ziemlich unangenehm werden ...

Hoffnung, die dazu beigetragen, Narusan

EDIT: Wenn Sie keine Klassen in Python noch verwendet haben, empfehle ich aufholen dort zuerst und dann die Entwicklung von Spielen fort. Ich habe auch einige Spiele in Pygame programmiert, und die Klassen kommen sehr gut. Tatsächlich ist es fast unmöglich, Pygame-Spiele zu erstellen, ohne geeignete Klassen zu verwenden (oder endlose if-Klauseln und For-Schleifen, die alles sehr langsam machen).

Ich wünsche Ihnen allen viel Glück

+0

Danke :)! Nein, leider habe ich nicht angefangen, Unterricht zu nehmen, aber ich muss sie trotzdem lernen ... Kennst du keine anderen Tricks, die ich benutzen kann? – GriffinBabe

+0

Anstelle einer Klasse würde ein Wörterbuch ausreichen. –

+0

gut, um pygame zu verwenden, (wie ich in meinem Edit sagte) brauchen Sie im Grunde Klassen. VIEL. Wenn Sie nichts davon erfahren haben, wird Ihr Code bald sehr groß. Sie könnten auch eine Liste verwenden (vielleicht ist das was juanma.arrivillaga bedeutet) und damit arbeiten. Wenn Sie immer noch interessiert sind, kann ich eine andere Antwort schreiben, die Ihnen zeigt, wie es geht. – Narusan

0

Wie wäre Ihre Variablen (zB p1direction und p2direction) in einem Vektor (player_directions) indiziert durch den Spieler Nummer und mit einer Schleife Zugriff es zum Beispiel die Speicherung:

number_of_players = 2 
playersXS = function_that_fills_playersXS() # return a vector containing your p1XS and p2XS variables in a vector 

for player_number in xrange(number_of_players): 
    if player_directions[player_number]=='right' and playersXS[player_number]< Attributes[player_number][1]: 
     playersXS[player_number]+=Attributes[player_number][0] 
+0

Vektor ist nicht der Standardname einer Python-Datenstruktur. Meinst du "Liste"? –

+0

Versuchen Sie auch, den Standard-Python-Codierungsstil in Ihren Antworten zu verwenden - z.Verwenden Sie keine überflüssigen Semikolons, If-Blöcke usw. –

Verwandte Themen