InteligentnySaper/classes/minesweeper.py

114 lines
3.4 KiB
Python
Raw Normal View History

2022-03-09 01:36:46 +01:00
import pygame
from classes import system
class Minesweeper:
size:int
position_x:int
position_y:int
image:pygame.surface.Surface
rotated_image:pygame.surface.Surface
offset_x:int=0
offset_y:int=0
speed=1
2022-03-09 01:36:46 +01:00
def __init__(self, position_x=0, position_y=0, size=64):
self.position_x=position_x
self.position_y=position_y
self.size = size
self.image = pygame.image.load("assets/sprites/saper.png")
self.image = pygame.transform.scale(self.image, (self.size, self.size))
self.rotated_image = self.image
def update_offset(self, delta:float):
dist=round(self.speed*delta/8)
2022-03-09 01:36:46 +01:00
if self.offset_x>0:
self.offset_x-=dist
if self.offset_x<0:
self.offset_x=0
2022-03-09 01:36:46 +01:00
elif self.offset_x<0:
self.offset_x+=dist
if self.offset_x>0:
self.offset_x=0
2022-03-09 01:36:46 +01:00
if self.offset_y>0:
self.offset_y-=dist
if self.offset_y<0:
self.offset_y=0
2022-03-09 01:36:46 +01:00
elif self.offset_y<0:
self.offset_y+=dist
if self.offset_y>0:
self.offset_y=0
2022-03-09 01:36:46 +01:00
def draw(self, window, delta:float):
2022-03-09 01:36:46 +01:00
position_on_screen = (self.size*self.position_x + self.offset_x, self.size*self.position_y + self.offset_y)
window.blit(self.rotated_image, position_on_screen)
self.update_offset(delta)
2022-03-09 01:36:46 +01:00
def move(self, dir:int):
2022-03-09 11:33:57 +01:00
#południe - 0
#wschód - 90
#północ - 180
#zachód - 270
self.rotated_image = pygame.transform.rotate(self.image, dir)
2022-03-09 01:36:46 +01:00
if dir==0:
self.position_y+=1
self.offset_y=-self.size
2022-03-09 11:33:57 +01:00
elif dir==180:
2022-03-09 01:36:46 +01:00
self.position_y-=1
self.offset_y=self.size
2022-03-09 11:33:57 +01:00
elif dir==270:
2022-03-09 01:36:46 +01:00
self.position_x-=1
self.offset_x=self.size
2022-03-09 11:33:57 +01:00
elif dir==90:
2022-03-09 01:36:46 +01:00
self.position_x+=1
self.offset_x=-self.size
class Map:
window:system.Window
tile_size:int
tiles_x:int
tiles_y:int
terrain_matrix:list
tile_palette:list
minesweeper:Minesweeper
def __init__(self, window:system.Window, tile_size:int=64, tiles_x:int=8, tiles_y:int=8):
self.window = window
self.tile_size = tile_size
self.tiles_x = tiles_x
self.tiles_y = tiles_y
#dodanie grafik wszystkich typów terenu do jednej listy
self.tile_palette=[]
image = pygame.image.load("assets/sprites/sand.png")
image = pygame.transform.scale(image, (tile_size,tile_size))
self.tile_palette.append(image)
def generate(self):
#generowanie terenu
matrix = []
for i in range(self.tiles_y):
matrix.append([])
for j in range(self.tiles_x):
#od liczby zależy jaki teren, np. 0 - piasek
matrix[i].append(0)
self.terrain_matrix = matrix
#generowanie objektów
self.minesweeper = Minesweeper(0,0, self.tile_size)
def draw_tiles(self):
#narysowanie na ekranie terenu
for i in range(len(self.terrain_matrix)):
for j in range(len(self.terrain_matrix[i])):
self.window.window.blit(self.tile_palette[self.terrain_matrix[i][j]], (self.tile_size*j, self.tile_size*i))
def draw_objects(self, delta:float):
self.minesweeper.draw(self.window.window, delta)
2022-03-09 01:36:46 +01:00