InteligentnySaper/main.py
2022-04-06 19:57:42 +02:00

79 lines
2.1 KiB
Python

#pygame - biblioteka do symulacji graficznych
import pygame
#system - klasy związane z pygame
#minesweeper - klasy związane z samym saperem
#ai - klasa wykonująca ruchy sapera
from classes import system, minesweeper, ai
#ustalenie wielkości pojedyńczych kawałków mapy, oraz wielkości mapy
TILE_SIZE = 64
TILES_X = int(12)
TILES_Y = int(10)
#wł/wył muzyki
MUSIC=True
#ustalenie FPS
FPS = 60
def main():
if MUSIC:
pygame.mixer.init()
pygame.mixer.Channel(0).play(pygame.mixer.Sound("assets/music.ogg"), -1)
#utworzenie okna do gry
window = system.Window(TILE_SIZE*TILES_X, TILE_SIZE*TILES_Y, "Intelligent Minesweeper", "icon.png")
#utworzenie ekranu pauzy
pause_menu = pygame.Surface((TILE_SIZE*TILES_X, TILE_SIZE*TILES_Y))
pause_menu.set_alpha(128)
pause_menu.fill((0,0,0))
#utworzenie objektu mapy, wygenerowanie jej i narysowanie na ekranie
map = minesweeper.Map(window, TILE_SIZE, TILES_X, TILES_Y)
map.generate()
map.draw_tiles()
#utworzenie sapera
saper = minesweeper.Minesweeper(0,0, TILE_SIZE)
#utworzenie objektu klasy AI
AI = ai.AI(window, map, saper)
#wykonanie funkcji ready() AI
AI.ready()
#główna pętla
game_loop = True
clock = pygame.time.Clock()
while game_loop:
#wdrożenie FPS, delta - czas od ostatniej klatki
delta = clock.tick(FPS)
#wykonanie funkcji update() AI
AI.updateFPS()
if saper.offset_x==0 and saper.offset_y==0:
AI.updateTile()
#narysowanie terenu i obiektów
map.draw_tiles()
map.draw_objects()
saper.draw(window.window, delta)
#pauza
if window.paused:
window.window.blit(pause_menu, (0,0))
#odświeżenie ekranu
pygame.display.update()
#sprawdzanie różnych interakcji użytkownika
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_loop = False
pygame.quit()
if __name__ == "__main__":
main()