Untitled

 avatar
unknown
plain_text
3 months ago
2.4 kB
4
Indexable
import random

class Player:
    def __init__(self, name):
        self.name = name
        self.position = 0  # Position on the board (0 means not started)
        self.finished = False

class LudoGame:
    WINNING_POSITION = 25  # Simple board with 25 positions

    def __init__(self, players):
        self.players = [Player(name) for name in players]
        self.current_player_index = 0

    def roll_dice(self):
        return random.randint(1, 6)

    def move_player(self, player):
        if player.finished:
            print(f"{player.name} has already finished!")
            return
        
        dice_value = self.roll_dice()
        print(f"{player.name} rolled a {dice_value}")

        # Start moving only if player is out of the starting position
        if player.position == 0 and dice_value != 6:
            print(f"{player.name} needs a 6 to start. Stay at the start.")
            return

        if player.position == 0 and dice_value == 6:
            player.position = 1
            print(f"{player.name} starts moving!")
            return

        # Move player and check for the win condition
        new_position = player.position + dice_value

        if new_position > LudoGame.WINNING_POSITION:
            print(f"{player.name} rolled too high and stays at {player.position}.")
        else:
            player.position = new_position
            print(f"{player.name} moves to {player.position}.")

        # Check for win
        if player.position == LudoGame.WINNING_POSITION:
            player.finished = True
            print(f"Congratulations! {player.name} has won the game!")

    def play_turn(self):
        player = self.players[self.current_player_index]
        print(f"\n{player.name}'s turn!")
        self.move_player(player)
        
        # Advance to the next player
        self.current_player_index = (self.current_player_index + 1) % len(self.players)

    def is_game_over(self):
        # Game ends when at least one player wins
        return any(player.finished for player in self.players)

    def start_game(self):
        print("Starting Ludo Game!")
        while not self.is_game_over():
            self.play_turn()
        print("Game Over!")

if __name__ == "__main__":
    player_names = input("Enter player names separated by commas: ").split(',')
    game = LudoGame(player_names)
    game.start_game()
Editor is loading...
Leave a Comment