InteligentnySaper/main.py

77 lines
1.9 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 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)
# pierwszy render
map.draw_tiles()
map.draw_objects()
saper.draw(window.window, 0.1)
pygame.display.update()
# 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)
# 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()