Projekt_Sztuczna_Inteligencja/main.py

70 lines
1.7 KiB
Python

# libraries
import pygame
import time
from pyglet.gl import * # for blocky textures
# other files of this project
import project_constants as const
import minefield as mf
import searching_algorithms.a_star as a_star
from display_assets import blit_graphics
def main():
pygame.init()
pygame.display.set_caption(const.V_NAME_OF_WINDOW)
# for blocky textures
glEnable(GL_TEXTURE_2D)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
# FPS clock
clock = pygame.time.Clock()
# create an instance of Minefield, pass necessary data
minefield = mf.Minefield(const.MAP_RANDOM_10x10)
# get sequence of actions found by BFS algorithm
action_sequence = a_star.graphsearch(
initial_state=a_star.State(
row=minefield.agent.position[0],
column=minefield.agent.position[1],
direction=const.Direction.UP),
minefield=minefield)
running = True
while running:
# FPS control
clock.tick(const.V_FPS)
# graphics (from display_assets)
blit_graphics(minefield)
# make the next move from sequence of actions
if any(action_sequence):
action = action_sequence.pop(0)
if action == const.Action.ROTATE_LEFT:
minefield.agent.rotate_left()
elif action == const.Action.ROTATE_RIGHT:
minefield.agent.rotate_right()
elif action == const.Action.GO:
minefield.agent.go()
time.sleep(const.ACTION_INTERVAL)
else:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if __name__ == "__main__":
main()