mirror of
https://github.com/OpenBMB/ChatDev.git
synced 2024-09-18 21:57:07 +03:00
55 lines
2.2 KiB
Python
55 lines
2.2 KiB
Python
'''
|
|
Level class for managing the game level.
|
|
'''
|
|
import pygame
|
|
import random
|
|
class Level:
|
|
def __init__(self):
|
|
self.width = 80
|
|
self.height = 80
|
|
self.floor_color = (255, 255, 255)
|
|
self.wall_color = (0, 0, 0)
|
|
self.door_color = (0, 255, 0)
|
|
self.treasure_color = (255, 255, 0)
|
|
self.level_data = [[0 for _ in range(self.width)] for _ in range(self.height)]
|
|
self.generate_level()
|
|
def generate_level(self):
|
|
for y in range(self.height):
|
|
for x in range(self.width):
|
|
if random.random() < 0.3:
|
|
self.level_data[y][x] = 1
|
|
elif random.random() < 0.05:
|
|
self.level_data[y][x] = 2
|
|
elif random.random() < 0.05:
|
|
self.level_data[y][x] = 3
|
|
else:
|
|
self.level_data[y][x] = 0
|
|
def is_wall(self, x, y):
|
|
if x < 0 or x >= self.width or y < 0 or y >= self.height:
|
|
return True
|
|
return self.level_data[y][x] == 1
|
|
def is_door(self, x, y):
|
|
if x < 0 or x >= self.width or y < 0 or y >= self.height:
|
|
return False
|
|
return self.level_data[y][x] == 2
|
|
def is_treasure(self, x, y):
|
|
if x < 0 or x >= self.width or y < 0 or y >= self.height:
|
|
return False
|
|
return self.level_data[y][x] == 3
|
|
def next_level(self, player):
|
|
player.x = 40 # Reset the player's position
|
|
player.y = 40
|
|
player.rect.x = player.x
|
|
player.rect.y = player.y
|
|
self.generate_level()
|
|
def draw(self, screen):
|
|
for y in range(self.height):
|
|
for x in range(self.width):
|
|
if self.level_data[y][x] == 0:
|
|
pygame.draw.rect(screen, self.floor_color, (x * 10, y * 10, 10, 10))
|
|
elif self.level_data[y][x] == 1:
|
|
pygame.draw.rect(screen, self.wall_color, (x * 10, y * 10, 10, 10))
|
|
elif self.level_data[y][x] == 2:
|
|
pygame.draw.rect(screen, self.door_color, (x * 10, y * 10, 10, 10))
|
|
elif self.level_data[y][x] == 3:
|
|
pygame.draw.rect(screen, self.treasure_color, (x * 10, y * 10, 10, 10)) |