mardi 4 août 2020

Program will not stop when the conditions are passed

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

enter image description here

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