36 lines
1.5 KiB
Python
36 lines
1.5 KiB
Python
import pygame
|
|
import random
|
|
from field import Field
|
|
|
|
from constants import ROWS, COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, GRID_CELL_HEIGHT, BORDER_WIDTH, BORDER_RADIUS
|
|
|
|
|
|
class Grid:
|
|
def __init__(self, textures):
|
|
self.textures = textures
|
|
self.grid = []
|
|
for row in range(ROWS):
|
|
self.grid.append([])
|
|
for _ in range(COLUMNS):
|
|
texture_path, converted_texture = self.get_random_texture()
|
|
field = Field(texture_path, converted_texture)
|
|
self.grid[row].append(field)
|
|
|
|
def get_random_texture(self):
|
|
texture_index = random.randint(0, len(self.textures) - 1)
|
|
return self.textures[texture_index]
|
|
|
|
def draw(self, screen):
|
|
bg_width = (GRID_CELL_PADDING + GRID_CELL_WIDTH) * COLUMNS + BORDER_WIDTH
|
|
bg_height = (GRID_CELL_PADDING + GRID_CELL_HEIGHT) * ROWS + BORDER_WIDTH
|
|
pygame.draw.rect(screen, (255, 255, 255), pygame.Rect(5, 5, bg_width, bg_height), 0, BORDER_RADIUS)
|
|
|
|
for row in range(ROWS):
|
|
for column in range(COLUMNS):
|
|
box_rect = [(GRID_CELL_PADDING + GRID_CELL_WIDTH) * column + GRID_CELL_PADDING + 7,
|
|
(GRID_CELL_PADDING + GRID_CELL_HEIGHT) * row + GRID_CELL_PADDING + 7,
|
|
GRID_CELL_WIDTH,
|
|
GRID_CELL_HEIGHT]
|
|
image = self.grid[row][column].converted_texture
|
|
screen.blit(pygame.transform.scale(image, (GRID_CELL_WIDTH, GRID_CELL_HEIGHT)), box_rect)
|