-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathView.py
More file actions
94 lines (77 loc) · 3.54 KB
/
View.py
File metadata and controls
94 lines (77 loc) · 3.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import Environment
import Predator
import Prey
import pygame
import math
import time
class View:
def __init__(self, width, height, num_predator, num_prey):
# initialize the pygame view
pygame.init()
print "pygame init worked \n"
# initialize surface size
self.surface = pygame.display.set_mode((width,height))
# load pictures for predator and Prey
self.predator = pygame.image.load("predator_direction.png")
self.prey = pygame.image.load("prey_direction.png")
self.background = pygame.image.load("background.jpg")
# JUST FOR FUN
# self.predator = pygame.image.load("x_wing.gif")
# self.prey = pygame.image.load("t_fighter.png")
# self.background = pygame.image.load("black_background.jpg")
# transform the image sizes to fit
self.predator_image = pygame.transform.scale(self.predator, (Predator.Predator.radius, Predator.Predator.radius))
self.prey_image = pygame.transform.scale(self.prey, (Prey.Prey.init_radius, Prey.Prey.init_radius))
self.background = pygame.transform.scale(self.background, (width,height))
# initialize the Environment
self.environment = Environment.Environment(width, height, num_predator, num_prey)
print "environment initialized \n"
def update(self, iterations):
# print "still in second main loop" this works fine too
# update the environment as many times as specified
for x in range(iterations):
self.environment.update_environment()
# repaint the surface
view.surface.blit(view.background, (0,0))
# repaint the animats
for predator in view.environment.predators:
view.surface.blit( pygame.transform.rotate(view.predator_image, 360 - predator.direction) , (predator.x - predator.radius, predator.y - predator.radius))
for prey in view.environment.preys:
view.surface.blit( pygame.transform.rotate(view.prey_image, 360 - prey.direction), (prey.x - prey.radius, prey.y - prey.radius))
# main function
if __name__ == "__main__":
view = View(800, 800, 30, 60)
for predator in view.environment.predators:
view.surface.blit(view.predator_image, (predator.x - predator.radius, predator.y - predator.radius))
for prey in view.environment.preys:
view.surface.blit(view.prey_image, (prey.x - prey.radius, prey.y - prey.radius))
pygame.display.flip()
# time.sleep(2)
for i in range(700):
view.update(1)
pygame.display.flip()
time.sleep(5)
results = open('results', 'w')
results.write("Iterations : %d \n" % view.environment.iterations_pred)
print "Iterations : %d" % view.environment.iterations_pred
results.write("Max gen pred : %d \n" % view.environment.max_gen_pred)
print "Max gen pred : %d" % view.environment.max_gen_pred
results.write("Predators left : %d \n" % view.environment.num_predator)
print "Predators left : %d" % view.environment.num_predator
results.write("Preys left : %d \n" % view.environment.num_prey)
print "Preys left : %d" % view.environment.num_prey
results.write("Number of non-coop attacks : \n")
for x in range(len(view.environment.non_coop_atk)):
results.write(str(view.environment.non_coop_atk[x]))
results.write("\n")
results.write("Number of coop attacks : \n")
for x in range(len(view.environment.coop_atk)):
results.write(str(view.environment.coop_atk[x]))
results.write("\n")
# write the surviving predator neural nets
results.write("Predator Neural Nets : \n")
for x in range(len(view.environment.pred_neural_nets)):
results.write(str(view.environment.pred_neural_nets[x]))
results.write("\n")
results.close()
pygame.quit()