Skip to content

Commit 8e43862

Browse files
committed
Rock paper scissors game
1 parent 0656327 commit 8e43862

File tree

2 files changed

+119
-0
lines changed

2 files changed

+119
-0
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
import random
2+
from player_rolls import Roll, Player
3+
4+
def print_header():
5+
print('---------------------------------')
6+
print(' Rock -- Paper -- Scissors')
7+
print('---------------------------------')
8+
print()
9+
10+
11+
def build_the_three_rolls():
12+
return ["Rock","Paper", "Scissors"]
13+
14+
def get_player_name():
15+
name = input("Please enter your name :")
16+
return name
17+
18+
def game_loop(p1,p2,rolls):
19+
count = 0
20+
p1_count = 0
21+
p2_count = 0
22+
while count < 3:
23+
computer_roll = random.choice(rolls)
24+
# print(computer_roll)
25+
p2_roll = p2.player_roll(computer_roll)
26+
roll = input('What do you want to roll ? : ')
27+
while True:
28+
if roll in rolls:
29+
p1_roll = p1.player_roll(roll)
30+
break
31+
else:
32+
print("Wrong roll")
33+
roll = input('Please Roll again ? : ')
34+
35+
36+
print("{} rolled {}".format(p1.name, p1_roll.roll_name))
37+
print("{} rolled {}".format(p2.name, p2_roll.roll_name))
38+
39+
outcome = p1_roll.can_defeat(p2_roll)
40+
if outcome is not None:
41+
if outcome:
42+
print("{} won this round".format(p1.name))
43+
p1_count += 1
44+
else:
45+
print("{} won this round".format(p2.name))
46+
p2_count += 1
47+
else:
48+
p1_count += 1
49+
p2_count += 1
50+
print("The round is draw")
51+
count += 1
52+
if p1_count < p2_count:
53+
print("{} won the game".format(p2.name))
54+
elif p1_count == p2_count:
55+
print("The game is draw")
56+
else:
57+
print("{} won the game".format(p1.name))
58+
59+
60+
def main():
61+
print_header()
62+
name = get_player_name()
63+
64+
p1 = Player(name)
65+
p2 = Player("Computer")
66+
rolls = build_the_three_rolls()
67+
68+
game_loop(p1,p2,rolls)
69+
70+
71+
72+
73+
74+
75+
if __name__ == '__main__':
76+
main()
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
class Roll:
2+
3+
def __init__(self, roll_name):
4+
self.roll_name = roll_name
5+
6+
7+
def can_defeat(self, opponent_roll):
8+
self.opponent = opponent_roll.roll_name
9+
if self.roll_name == "Rock" and self.opponent == "Paper":
10+
print("{} will be defeated by {}".format(self.roll_name, self.opponent))
11+
return False
12+
if self.roll_name == "Rock" and self.opponent == "Scissors":
13+
print("{} will defeat the {}".format(self.roll_name, self.opponent))
14+
return True
15+
if self.roll_name == "Paper" and self.opponent == "Scissors":
16+
print("{} will be defeated by {}".format(self.roll_name, self.opponent))
17+
return False
18+
if self.roll_name == "Paper" and self.opponent == "Rock":
19+
print("{} will defeat the {}".format(self.roll_name, self.opponent))
20+
return True
21+
if self.roll_name == "Paper" and self.opponent == "Rock":
22+
print("{} will defeat the {}".format(self.roll_name, self.opponent))
23+
return True
24+
if self.roll_name == "Scissors" and self.opponent == "Rock":
25+
print("{} will be defeated by {}".format(self.roll_name, self.opponent))
26+
return False
27+
if self.roll_name == "Scissors" and self.opponent == "Paper":
28+
print("{} will defeat the {}".format(self.roll_name, self.opponent))
29+
return True
30+
if self.roll_name == self.opponent:
31+
return None
32+
33+
class Player:
34+
35+
def __init__(self, name):
36+
self.name = name
37+
38+
def player_roll(self, roll_name):
39+
self.roll = Roll(roll_name)
40+
return self.roll
41+
42+
43+

0 commit comments

Comments
 (0)