2011-06-30 4 views
0

Je commence juste Python et écrit un simple jeu de ciseaux de papier de roche. Here's ce que j'ai jusqu'ici. Je peux parfaitement jouer à un jeu avec un autre joueur. Ce que je veux savoir est comment garder score des victoires, donc si le joueur 1 gagne le premier jeu, il dirait:Comment puis-je garder un score dans un jeu de ciseaux de papier de roche?

Joueur 1 = 1 Joueur 2 = 0

Et ainsi de suite. Aussi, s'il y a des astuces pour rendre mon code plus efficace (avec une bonne explication), ce serait bien.

Merci!

+1

"Plus d'objets". :) Considérez que chaque joueur est un objet, avec un nom et un score. "Plus de fonctions". Considérez qu'il y a une fonction qui, une fois donnée l'entrée, montrera qui gagne et met à jour le score de joueur approprié. –

Répondre

0

Eh bien il y a plusieurs façons de le rendre plus efficace, mais je dois vous demander comment vous allez jouer Rock Paper Scissors si vous devez les saisir un à un :-P

La notation pourrait être résumaient à ceci:

if choice1 == choice2 : 
    print "Its's a tie." 
elif choice1 - choice2 == 1 or choice2 - choice1 == 2 : 
    print "%s wins." % player1 
else: 
    print "%s wins." % player2 

Si vous voulez faire des jeux multiples, vient de mettre le tout dans une boucle while(1):, et ajouter une variable pour chaque partition. Ensuite, il deviendrait:

score1 = 0 
score2 = 0 
while(1): 
    <lines 6-18> 

    if choice1 == choice2 : 
     print "Its's a tie." 
    elif choice1 - choice2 == 1 or choice2 - choice1 == 2 : 
     print "%s wins." % player1 
     score1 = score1 + 1 
    else: 
     print "%s wins." % player2 
     score2 = score2 + 1 

    print "%s: %d points. %s: %d points." % (player1, score1, player2, score2) 
+1

J'ai oublié de les taper une par une (je suppose que le joueur 2 a un avantage injuste!), Mais je voulais juste m'entraîner. Merci! –

0

Essayez ceci:

player1 = raw_input("Player 1 name: ") 
player2 = raw_input("Player 2 name: ") 
while(1) 
    player1score = 0 
    player2score = 0 

    print "%s, what do you choose?" % player1 
    print "1. Rock" 
    print "2. Paper" 
    print "3. Scissors" 

    choice1 = raw_input("> ") 

    print "%s, what do you choose?" % player2 
    print "1. Rock" 
    print "2. Paper" 
    print "3. Scissors" 

    choice2 = raw_input("> ") 

    if choice1 == "1" and choice2 == "1": 
     print "Its's a tie." 

    if choice1 == "1" and choice2 == "2": 
     print "%s wins." % player2 
     player2score=player2score+1 

    if choice1 == "2" and choice2 == "1": 
     print "Player 1 wins." % player1 
     player1score=player1score+1 

    if choice1 == "1" and choice2 == "3": 
     print "Player 1 wins." % player1 
     player1score=player1score+1 

    if choice1 == "3" and choice2 == "1": 
     print "%s2 wins." % player2 
     player2score=player2score+1 

    if choice1 == "2" and choice2 == "3": 
     print "%s wins." % player2 
     player2score=player2score+1 

    if choice1 == "3" and choice2 == "2": 
     print "Player 1 wins." % player1 
     player1score=player1score+1 

    print "Player1: %s" % player1score 
    print "Player2: %s" % player2score 
+1

utilise les Objets, Luke ... –

3

Tenir compte de cette pseudo-code pour des suggestions (certaines parties doivent être mises en œuvre):

# a Player class. it should have a Name and a Score 
class Player(): 
    def __init__(name): 
     self.name = name 
     self.score = 0 

# displays a prompt and reads in the players name returning a string 
def getPlayerName(): 
    # needs code here, see next function for idea of what 
    pass 

# ask the player to make a choice, takes a Player object 
# and returns a string 
def getPlayerAttack(player): 
    print "%s, what do you choose?" % player.name 
    return raw_input("> ") 

# determines who wins and updates score accordingly 
# takes in the player objects and their attack choices 
def attack(player1, choice1, player2, choice2): 
    if choice1 == choice2: 
     print "Its's a tie." 
    elif choice1 == "1" and choice2 == "2": 
     print "%s wins." % player2 
     player2.score = player2.score + 1 
    elif ... # other attacks 

# display the scores of the two players 
def displayScores(player1, player2): 
    print "%s vs %s" % (player1.score, player2.score) 

player1 = Player(getPlayerName()) 
player2 = Player(getPlayerName()) 
while true: 
    choice1 = getPlayerAttack(player1) 
    choice2 = getPlayerAttack(player2) 
    attack(player1, choice1, player2, choice2) 
    displayScores(player1, player2) 

Cela nécessitera un travail , et c'est pas super-optimal, mais il devrait être un début et devrait montrer quelques autres concepts. Utilisez Ctrl-C pour arrêter ou ajouter une condition d'arrêt (par exemple, chaque joueur entre "0") - bugs inclus gratuitement. :)

Bonne codification.

Questions connexes