Intellipaat Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in Data Science by (18.4k points)

I am new to python. I am trying to recreate the snakes and ladders game. I am not able to terminate the program if a player won. After the player has won (reached 100 or any board size), my program still asks another player to roll a dice and my game just continues.

Here is the Player class I created. You can find a win condition in Player.turn().

class Player:

    def __init__(self, name):

        self.name = str(name)

        self.position = int()

    def ask_to_roll(self):

        while True:

            command = str(input("Press enter to roll the dice.\n> "))

            if command == "":

                break

            else:

                print("Invalid")

                continue

    def roll_dice(self):

        print(f'{self.name} is rolling the dice...')

        time.sleep(delay)

        roll_result = random.randint(1, dice_faces)

        print(f"It's a {roll_result}!")

        time.sleep(delay)

        return roll_result

    def check_for_snakes_ladders(self):

        if self.position in snakes.keys():

            print(random.choice(snake_bite))

            time.sleep(delay)

            print(f'{self.name} fell from {self.position} to {snakes[self.position]}')

            time.sleep(delay)

            self.position = snakes[self.position]

        elif self.position in ladders.keys():

            print(random.choice(ladder_jump))

            time.sleep(delay)

            print(f'{self.name} climbed from {self.position} to {ladders[self.position]}')

            time.sleep(delay)

            self.position = ladders[self.position]

        else:

            pass

    def turn(self):

        print(f"\nIt's {self.name}'s turn")

        self.ask_to_roll()

        roll_result = self.roll_dice()

        new_position = self.position + roll_result

        if new_position > board_size:

            print(f"Oops you need to get {board_size - self.position}")

            pass

        elif new_position == board_size:

            print(f'{self.name} won')*

        elif new_position < board_size:

            print(f'{self.name} moved from {self.position} to {new_position}')

            time.sleep(delay)

            self.position = new_position

            self.check_for_snakes_ladders()

1 Answer

0 votes
by (36.8k points)

Use the below code: 

elif new_position == board_size:

    print(f'{self.name} won')

    sys.exit(0)

Remember to import sys at the top of the file

Do check out Data Science with Python course which helps you understand from scratch.

31k questions

32.8k answers

501 comments

693 users

Browse Categories

...