Untitled
unknown
python
2 years ago
3.3 kB
16
Indexable
import pygame
import random
# Initialize Pygame
pygame.init()
# Set the screen dimensions
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
# Define colors
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
# Define player colors
PLAYER_COLORS = [GREEN, RED, BLUE]
# Set the title of the window
pygame.display.set_caption("Snake and Ladder")
# Load sound effects
pygame.mixer.init()
dice_sound = pygame.mixer.Sound("dice_roll.wav")
# Font for displaying text
font = pygame.font.SysFont(None, 36)
# Function to draw text on the screen
def draw_text(text, color, x, y):
text_surface = font.render(text, True, color)
screen.blit(text_surface, (x, y))
# Function to roll the dice
def roll_dice():
dice_sound.play()
return random.randint(1, 6)
# Function to draw the board
def draw_board():
screen.fill(WHITE)
# Draw the board grid
for i in range(10):
pygame.draw.line(screen, BLACK, (50, 50 + i * 50), (750, 50 + i * 50), 2)
pygame.draw.line(screen, BLACK, (50 + i * 70, 50), (50 + i * 70, 550), 2)
# Draw snakes and ladders
for start, end in snakes.items():
pygame.draw.line(screen, RED, get_position(start), get_position(end), 5)
for start, end in ladders.items():
pygame.draw.line(screen, GREEN, get_position(start), get_position(end), 5)
# Function to get the screen coordinates of a board position
def get_position(position):
row = 9 - (position - 1) // 10
col = (position - 1) % 10
return 50 + col * 70, 50 + row * 50
# Function to move player
def move_player(player):
dice_roll = roll_dice()
player_positions[player] += dice_roll
if player_positions[player] in snakes:
player_positions[player] = snakes[player_positions[player]]
elif player_positions[player] in ladders:
player_positions[player] = ladders[player_positions[player]]
if player_positions[player] >= 100:
return True
return False
# Function to draw players
def draw_players():
for i, player in enumerate(player_positions):
pygame.draw.circle(screen, PLAYER_COLORS[i], get_position(player_positions[player]), 20)
# Function to display game over screen
def game_over(winner):
screen.fill(WHITE)
draw_text(f"{winner} wins!", BLACK, SCREEN_WIDTH // 2 - 100, SCREEN_HEIGHT // 2 - 50)
pygame.display.update()
pygame.time.delay(3000)
# Set up the screen
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
# Define snakes and ladders
snakes = {16: 6, 47: 26, 49: 11, 56: 53, 62: 19, 64: 60, 87: 24, 93: 73, 95: 75, 98: 78}
ladders = {1: 38, 4: 14, 9: 31, 21: 42, 28: 84, 36: 44, 51: 67, 71: 91, 80: 100}
# Initialize player positions
player_positions = {f"Player {i+1}": 1 for i in range(3)}
# Main game loop
running = True
winner = None
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill(WHITE)
draw_board()
draw_players()
for player in player_positions:
if move_player(player):
winner = player
running = False
break
if winner:
game_over(winner)
break
pygame.display.flip()
pygame.time.delay(500)
pygame.quit()Editor is loading...
Leave a Comment