I'm writing a sum up game where two players will take turns picking a random number in the range (1,9), no repeated number allowed. If the first player picks [7, 2, 3, 5], he will win because 7+3+5 = 15
So my question is why doesn't the program stop when first_player has a sum of inputs that == 15 Below is the readme file
My main code
class AddThreeGame:
"""Represents a sum up game for two players, each player can pick 3 distinct numbers from 1 to 9"""
def __init__(self):
"""Creates a sum up game object with private"""
self._first_list = []
self._second_list = []
self._first_player = 0
self._second_player = 0
self._input_number = []
self._current_state = "UNFINISHED"
def get_current_state(self):
"""Returns current state"""
return self._current_state
def make_move(self, player, number):
"""Returns player's move"""
if number in self._input_number:
return False
if number < 1 or number > 9:
return False
if player == "first":
self._input_number.append(number)
self._first_list.append(number)
for i in range(0, len(self._first_list)-2):
for j in range(i+1, len(self._first_list)-1):
for k in range(j+1, len(self._first_list)):
if self._first_list[i] + self._first_list[j] + self._first_list[k] == 15:
self._current_state = "FIRST_WON"
elif player == "second":
self._input_number.append(number)
self._second_list.append(number)
for i in range(0, len(self._second_list)-2):
for j in range(i+1, len(self._second_list)-1):
for k in range(j+1, len(self._second_list)):
if self._second_list[i] + self._second_list[j] + self._second_list[k] == 15:
self._current_state = "SECOND_WON"
if self._first_player == 15 and self._second_player == 15:
self._current_state = "DRAW"
if len(self._input_number) == 9:
self._current_state = "DRAW"
return True
My testing code
game = AddThreeGame()
while True:
input_num = int(input("First player please enter a number from 1 to 9: "))
while True:
if game.make_move("first", input_num):
break
else:
input_num = int(input("Wrong input, please try a different number: "))
input_num = int(input("Second player please enter a number from 1 to 9:"))
while True:
if game.make_move("second", input_num):
break
else:
input_num = int(input("Wrong input, please try a different number:: "))
# live game status
live_game = game.get_current_state()
if live_game == "UNFINISHED":
print("We have unfinished business, come back for more\n")
elif live_game == "FIRST_WON":
print("First player won this game!!!\n")
break
elif live_game == "SECOND_WON":
print("Second player won this game!!!\n")
break
elif live_game == "DRAW":
print("Draw game\n")
break

Aucun commentaire:
Enregistrer un commentaire