Ponowne naprawienie spawnowania zwierząt na płocie
This commit is contained in:
parent
75e597b3c6
commit
abb75def38
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
*.pyc
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
25
agent.py
25
agent.py
@ -27,19 +27,15 @@ class Agent:
|
|||||||
def handle_event(self, event, max_x, max_y, animals, obstacles):
|
def handle_event(self, event, max_x, max_y, animals, obstacles):
|
||||||
if event.type == pygame.KEYDOWN:
|
if event.type == pygame.KEYDOWN:
|
||||||
if event.key == pygame.K_UP:
|
if event.key == pygame.K_UP:
|
||||||
self.move('Go Forward', max_x, max_y, obstacles)
|
self.move('Go Forward', max_x, max_y, obstacles, animals)
|
||||||
elif event.key == pygame.K_LEFT:
|
elif event.key == pygame.K_LEFT:
|
||||||
self.move('Turn Left', max_x, max_y, obstacles)
|
self.move('Turn Left', max_x, max_y, obstacles, animals)
|
||||||
elif event.key == pygame.K_RIGHT:
|
elif event.key == pygame.K_RIGHT:
|
||||||
self.move('Turn Right', max_x, max_y, obstacles)
|
self.move('Turn Right', max_x, max_y, obstacles, animals)
|
||||||
|
|
||||||
for animal in animals:
|
feed_animal(self, animals)
|
||||||
if self.x == animal.x and self.y == animal.y:
|
|
||||||
if animal.feed() == 'True':
|
|
||||||
animal._feed = 0
|
|
||||||
print(animal.name, "fed with", animal.food)
|
|
||||||
|
|
||||||
def move(self, action, max_x, max_y, obstacles):
|
def move(self, action, max_x, max_y, obstacles, animals):
|
||||||
if action == 'Go Forward':
|
if action == 'Go Forward':
|
||||||
new_x, new_y = self.x, self.y
|
new_x, new_y = self.x, self.y
|
||||||
if self.direction == 'N':
|
if self.direction == 'N':
|
||||||
@ -59,4 +55,13 @@ class Agent:
|
|||||||
self.direction = {'N': 'W', 'W': 'S', 'S': 'E', 'E': 'N'}[self.direction]
|
self.direction = {'N': 'W', 'W': 'S', 'S': 'E', 'E': 'N'}[self.direction]
|
||||||
|
|
||||||
elif action == 'Turn Right':
|
elif action == 'Turn Right':
|
||||||
self.direction = {'N': 'E', 'E': 'S', 'S': 'W', 'W': 'N'}[self.direction]
|
self.direction = {'N': 'E', 'E': 'S', 'S': 'W', 'W': 'N'}[self.direction]
|
||||||
|
|
||||||
|
feed_animal(self, animals)
|
||||||
|
|
||||||
|
def feed_animal(self, animals):
|
||||||
|
for animal in animals:
|
||||||
|
if self.x == animal.x and self.y == animal.y:
|
||||||
|
if animal.feed() == 'True':
|
||||||
|
animal._feed = 0
|
||||||
|
print(animal.name, "fed with", animal.food)
|
23
main.py
23
main.py
@ -1,3 +1,4 @@
|
|||||||
|
import random
|
||||||
import pygame
|
import pygame
|
||||||
import sys
|
import sys
|
||||||
from elephant import Elephant
|
from elephant import Elephant
|
||||||
@ -8,7 +9,6 @@ from bear import Bear
|
|||||||
from agent import Agent
|
from agent import Agent
|
||||||
from enclosure import Enclosure
|
from enclosure import Enclosure
|
||||||
from spawner import Spawner
|
from spawner import Spawner
|
||||||
from state_space_search import succ
|
|
||||||
from state_space_search import graphsearch
|
from state_space_search import graphsearch
|
||||||
|
|
||||||
BLACK = (0, 0, 0)
|
BLACK = (0, 0, 0)
|
||||||
@ -159,12 +159,9 @@ def main():
|
|||||||
obstacles = generate_obstacles()
|
obstacles = generate_obstacles()
|
||||||
|
|
||||||
actions = []
|
actions = []
|
||||||
spawn_all_animals()
|
|
||||||
actions = graphsearch(agent.istate, (an1.x, an1.y), GRID_WIDTH, GRID_HEIGHT, obstacles)
|
|
||||||
# actions = graphsearch(agent.istate, (25,1), GRID_WIDTH, GRID_HEIGHT, obstacles)
|
|
||||||
|
|
||||||
clock = pygame.time.Clock()
|
clock = pygame.time.Clock()
|
||||||
|
|
||||||
|
spawned = False
|
||||||
while True:
|
while True:
|
||||||
for event in pygame.event.get():
|
for event in pygame.event.get():
|
||||||
if event.type == pygame.QUIT:
|
if event.type == pygame.QUIT:
|
||||||
@ -172,12 +169,20 @@ def main():
|
|||||||
sys.exit()
|
sys.exit()
|
||||||
agent.handle_event(event, GRID_WIDTH, GRID_HEIGHT, Animals, obstacles)
|
agent.handle_event(event, GRID_WIDTH, GRID_HEIGHT, Animals, obstacles)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
screen.blit(background_image,(0,0))
|
screen.blit(background_image,(0,0))
|
||||||
draw_grid()
|
draw_grid()
|
||||||
draw_enclosures()
|
draw_enclosures()
|
||||||
draw_gates()
|
draw_gates()
|
||||||
|
if not spawned:
|
||||||
|
spawn_all_animals()
|
||||||
|
|
||||||
|
# region Test szukania ścieżki
|
||||||
|
animal = random.choice(Animals)
|
||||||
|
actions = graphsearch(agent.istate, (animal.x, animal.y), GRID_WIDTH, GRID_HEIGHT, obstacles)
|
||||||
|
animal._feed = 2 # Ustawienie aby zwierzę było głodne
|
||||||
|
# endregion
|
||||||
|
|
||||||
|
spawned = True
|
||||||
draw_Animals()
|
draw_Animals()
|
||||||
opengates()
|
opengates()
|
||||||
agent.draw(screen)
|
agent.draw(screen)
|
||||||
@ -186,7 +191,7 @@ def main():
|
|||||||
|
|
||||||
if actions:
|
if actions:
|
||||||
action = actions.pop(0)
|
action = actions.pop(0)
|
||||||
agent.move(action, GRID_WIDTH, GRID_HEIGHT, obstacles)
|
agent.move(action, GRID_WIDTH, GRID_HEIGHT, obstacles, Animals)
|
||||||
pygame.time.wait(200)
|
pygame.time.wait(200)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
Loading…
Reference in New Issue
Block a user