WMICraft/common/helpers.py
korzepadawid 33577c1824 hotfix
2022-05-09 18:22:01 +02:00

77 lines
2.6 KiB
Python

from typing import Tuple, List
import pygame
from common.constants import GRID_CELL_PADDING, GRID_CELL_SIZE
from common.constants import ROWS, COLUMNS, LEFT, RIGHT, UP, DOWN
directions = {
LEFT: (0, -1),
RIGHT: (0, 1),
UP: (-1, 0),
DOWN: (1, 0)
}
def draw_text(text, color, surface, x, y, text_size=30, is_bold=False):
if is_bold:
font = pygame.font.Font('resources/fonts/Poppins-SemiBold.ttf', text_size)
else:
font = pygame.font.Font('resources/fonts/Poppins-Regular.ttf', text_size)
textobj = font.render(text, 1, color)
textrect = textobj.get_rect()
textrect.topleft = (x, y)
surface.blit(textobj, textrect)
def print_numbers():
display_surface = pygame.display.get_surface()
font = pygame.font.SysFont('Arial', 16)
for row_index in range(ROWS):
for col_index in range(COLUMNS):
x = (GRID_CELL_PADDING + GRID_CELL_SIZE) * col_index + GRID_CELL_PADDING + 7
y = (GRID_CELL_PADDING + GRID_CELL_SIZE) * row_index + GRID_CELL_PADDING + 16
display_surface.blit(font.render(f'[{col_index}, {row_index}]', True, (255, 0, 0)), (x, y))
pygame.display.update()
# parse array index to screen x or y coordinate
def parse_cord(cord):
return (GRID_CELL_PADDING + GRID_CELL_SIZE) * cord + GRID_CELL_PADDING + 7
def castle_neighbors(map, castle_bottom_right_row, castle_bottom_right_col):
neighbors = []
for row_add in range(-2, 2):
new_row = castle_bottom_right_row + row_add
if 0 <= new_row <= len(map) - 1:
for col_add in range(-2, 2):
new_col = castle_bottom_right_col + col_add
if 0 <= new_col <= len(map) - 1:
if (new_col == castle_bottom_right_col - 1 and new_row == castle_bottom_right_row - 1) \
or (new_col == castle_bottom_right_col and new_row == castle_bottom_right_row - 1) \
or (new_col == castle_bottom_right_col - 1 and new_row == castle_bottom_right_row) \
or (new_col == castle_bottom_right_col and new_row == castle_bottom_right_row):
continue
neighbors.append((new_col, new_row))
return neighbors
def find_neighbours(grid: List[List[str]], col: int, row: int) -> List[Tuple[int, int]]:
dr = [-1, 1, 0, 0]
dc = [0, 0, -1, 1]
neighbours = []
for i in range(4):
rr = row + dr[i]
cc = col + dc[i]
if rr < 0 or cc < 0: continue
if rr >= ROWS or cc >= COLUMNS: continue
if grid[rr][cc] not in ['g', 's', '.']: continue
neighbours.append((rr, cc))
return neighbours