[Tutor] more rps
Christopher Spears
cspears2002 at yahoo.com
Tue Aug 15 08:42:37 CEST 2006
Here is the latest version of my Rock, Paper, Scissors
game:
#!/usr/bin/python
import random
random.seed()
class Human:
def __init__(self):
self.points = 0
self.choice = " "
def plays(self):
fromUser = raw_input("Pick (R)ock, (P)aper, or
(S)cissors! ")
translate = {'r':'rock', 's':'scissors',
'p':'paper'}
try:
self.choice = translate[fromUser.lower()]
except KeyError:
print 'Invalid Response'
class Computer:
def __init__(self):
self.points = 0
self.choice = " "
def plays(self):
comp_choice = random.randint(0,2)
if comp_choice == 0:
self.choice = 'rock'
elif comp_choice == 1:
self.choice = 'paper'
else:
self.choice = 'scissors'
def compare_objects(human, computer):
print "Human picked ", human.choice
print "Computer picked", computer.choice
results = { 'rock' : {'rock' : 'draw', 'paper': 0,
'scissors': 1},
'paper' : {'rock' : 1, 'paper': 'draw', 'scissors':
0},
'scissors' : {'rock' : 0, 'paper' : 1, 'scissors' :
'draw'}
}
outcome = results[human.choice][computer.choice]
if outcome == 0:
print "Computer Wins!"
computer.points = computer.points + 1
elif outcome == 1:
print "Human Wins!"
human.points = human.points + 1
else:
print "Draw!"
if __name__ == "__main__":
print "Welcome to Rock, Paper, Scissors!"
final_points = raw_input("Play to how many points? ")
human = Human()
computer = Computer()
while (human.points < final_points or computer.points
< final_points):
human.plays()
computer.plays()
compare_objects(human, computer)
print "Score:\tHuman: ",human.points,"\tComputer:
",computer.points
print "Game Over!"
I actually figured out how to build the 2x2 matrix.
I'm quite proud of this. Like all of my good ideas,
the answer came to me in the shower. :-)
Unfortunately, my while loop doesn't seem to be
working. I've played around with it with no success.
Hints, anyone?
More information about the Tutor
mailing list