Spaces:
Sleeping
Sleeping
Update game.py
Browse files
game.py
CHANGED
@@ -28,7 +28,7 @@ class Game:
|
|
28 |
if (0 <= nx < self.map_size and 0 <= ny < self.map_size and
|
29 |
terrain[ny][nx] == 'w'):
|
30 |
mid_x, mid_y = x + dx // 2, y + dy // 2
|
31 |
-
terrain[mid_y][
|
32 |
carve(nx, ny)
|
33 |
|
34 |
# Start carving from (1,1) to avoid edges
|
@@ -64,7 +64,7 @@ class Game:
|
|
64 |
return items
|
65 |
|
66 |
def get_visible_area(self):
|
67 |
-
|
68 |
px, py = self.player_pos
|
69 |
half_size = self.visible_size // 2
|
70 |
start_x = max(0, px - half_size)
|
@@ -72,7 +72,6 @@ class Game:
|
|
72 |
end_x = min(self.map_size, px + half_size + 1)
|
73 |
end_y = min(self.map_size, py + half_size + 1)
|
74 |
|
75 |
-
# Pad with empty space if near edges
|
76 |
visible_terrain = [['' for _ in range(self.visible_size)] for _ in range(self.visible_size)]
|
77 |
visible_entities = [['' for _ in range(self.visible_size)] for _ in range(self.visible_size)]
|
78 |
|
@@ -81,7 +80,7 @@ class Game:
|
|
81 |
grid_y = y - (py - half_size)
|
82 |
grid_x = x - (px - half_size)
|
83 |
if 0 <= grid_y < self.visible_size and 0 <= grid_x < self.visible_size:
|
84 |
-
visible_terrain[grid_y][grid_x] = self.terrain[y][x]
|
85 |
if (x, y) == tuple(self.player_pos):
|
86 |
visible_entities[grid_y][grid_x] = 'player'
|
87 |
elif (x, y) in self.monsters:
|
@@ -91,11 +90,13 @@ class Game:
|
|
91 |
elif (x, y) == tuple(self.door_pos):
|
92 |
visible_entities[grid_y][grid_x] = 'door'
|
93 |
|
|
|
|
|
94 |
return {'terrain': visible_terrain, 'entities': visible_entities}
|
95 |
|
96 |
def get_game_state(self):
|
97 |
visible = self.get_visible_area()
|
98 |
-
|
99 |
'terrain': visible['terrain'],
|
100 |
'entities': visible['entities'],
|
101 |
'health': self.player_health,
|
@@ -103,6 +104,8 @@ class Game:
|
|
103 |
'attack': self.player_attack,
|
104 |
'level': self.level
|
105 |
}
|
|
|
|
|
106 |
|
107 |
def is_valid_position(self, x, y):
|
108 |
return (0 <= x < self.map_size and 0 <= y < self.map_size and
|
|
|
28 |
if (0 <= nx < self.map_size and 0 <= ny < self.map_size and
|
29 |
terrain[ny][nx] == 'w'):
|
30 |
mid_x, mid_y = x + dx // 2, y + dy // 2
|
31 |
+
terrain[mid_y][mid_x] = 'f' # Carve path
|
32 |
carve(nx, ny)
|
33 |
|
34 |
# Start carving from (1,1) to avoid edges
|
|
|
64 |
return items
|
65 |
|
66 |
def get_visible_area(self):
|
67 |
+
print("Generating visible area for player at:", self.player_pos) # Debug log
|
68 |
px, py = self.player_pos
|
69 |
half_size = self.visible_size // 2
|
70 |
start_x = max(0, px - half_size)
|
|
|
72 |
end_x = min(self.map_size, px + half_size + 1)
|
73 |
end_y = min(self.map_size, py + half_size + 1)
|
74 |
|
|
|
75 |
visible_terrain = [['' for _ in range(self.visible_size)] for _ in range(self.visible_size)]
|
76 |
visible_entities = [['' for _ in range(self.visible_size)] for _ in range(self.visible_size)]
|
77 |
|
|
|
80 |
grid_y = y - (py - half_size)
|
81 |
grid_x = x - (px - half_size)
|
82 |
if 0 <= grid_y < self.visible_size and 0 <= grid_x < self.visible_size:
|
83 |
+
visible_terrain[grid_y][grid_x] = self.terrain[y][x] if self.terrain[y][x] else 'f' # Default to 'f'
|
84 |
if (x, y) == tuple(self.player_pos):
|
85 |
visible_entities[grid_y][grid_x] = 'player'
|
86 |
elif (x, y) in self.monsters:
|
|
|
90 |
elif (x, y) == tuple(self.door_pos):
|
91 |
visible_entities[grid_y][grid_x] = 'door'
|
92 |
|
93 |
+
print("Visible terrain:", visible_terrain) # Debug log
|
94 |
+
print("Visible entities:", visible_entities) # Debug log
|
95 |
return {'terrain': visible_terrain, 'entities': visible_entities}
|
96 |
|
97 |
def get_game_state(self):
|
98 |
visible = self.get_visible_area()
|
99 |
+
state = {
|
100 |
'terrain': visible['terrain'],
|
101 |
'entities': visible['entities'],
|
102 |
'health': self.player_health,
|
|
|
104 |
'attack': self.player_attack,
|
105 |
'level': self.level
|
106 |
}
|
107 |
+
print("Game state:", state) # Debug log
|
108 |
+
return state
|
109 |
|
110 |
def is_valid_position(self, x, y):
|
111 |
return (0 <= x < self.map_size and 0 <= y < self.map_size and
|