from github
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
from DrawType import DrawType
|
||||
from Point import Point
|
||||
from Vec import Vec
|
||||
|
||||
|
||||
class PointGrid:
|
||||
|
||||
def __init__(self, grid_cell_size, cell_count, maze, radius=8):
|
||||
self.grid_cell_size = grid_cell_size
|
||||
self.points = []
|
||||
self.big_points_positions = [
|
||||
(2, 1),
|
||||
(27, 1),
|
||||
(2, 27),
|
||||
(27, 27)
|
||||
] # Idle-Punkte bekommen feste Position
|
||||
|
||||
# Fill the points list based on size of one cell, screen height and width
|
||||
for x in range(0, int(cell_count)):
|
||||
self.points.append([])
|
||||
for y in range(0, int(cell_count)):
|
||||
point = Point(Vec(x * grid_cell_size + grid_cell_size / 2, y * grid_cell_size + grid_cell_size / 2),
|
||||
Vec(radius + (5 if (x, y) in self.big_points_positions else 0),
|
||||
radius + (5 if (x, y) in self.big_points_positions else 0)),
|
||||
(x, y) in self.big_points_positions)
|
||||
self.points[x].append(point)
|
||||
if maze.maze[x][y] > 0:
|
||||
point.eat()
|
||||
|
||||
def draw(self, screen, color, draw_type: DrawType = DrawType.circle):
|
||||
|
||||
# Loop through the points list
|
||||
for xList in self.points:
|
||||
for point in xList:
|
||||
# Check if point is eaten
|
||||
if not point.eaten:
|
||||
point.draw(screen, color, draw_type)
|
||||
|
||||
def get_surrounding_points(self, player_position):
|
||||
x = int(player_position.x / self.grid_cell_size)
|
||||
y = int(player_position.y / self.grid_cell_size)
|
||||
|
||||
result = []
|
||||
|
||||
for ix in range(x - 1, x + 2):
|
||||
for iy in range(y - 1, y + 2):
|
||||
if 0 <= ix < len(self.points):
|
||||
if 0 <= iy < len(self.points[ix]):
|
||||
result.append(self.points[ix][iy])
|
||||
|
||||
return result
|
||||
Reference in New Issue
Block a user