Compare commits

...

3 Commits

3 changed files with 35 additions and 9 deletions

View File

@ -166,6 +166,7 @@ class ColumbusEnv(gym.Env):
def reset(self):
pygame.init()
self._seed(self.env_seed)
self._rendered = False
self.inp = (0.5, 0.5)
self.keypress_timeout = 0
@ -178,7 +179,6 @@ class ColumbusEnv(gym.Env):
self.agent = entities.Agent(self)
self.setup()
self.entities.append(self.agent) # add it last, will be drawn on top
self._seed(self.env_seed)
self.observable._entities = None
return self.observable.get_observation()
@ -206,6 +206,8 @@ class ColumbusEnv(gym.Env):
self.keypress_timeout = int(self.fps/2)
if keys[pygame.K_m]:
self.draw_entities = not self.draw_entities
elif keys[pygame.K_r]:
self.reset()
else:
self.keypress_timeout = 0
else:
@ -361,7 +363,7 @@ class ColumbusJustState(ColumbusEnv):
class ColumbusStateWithBarriers(ColumbusEnv):
def __init__(self, observable=observables.StateObservable(coordsAgent=True, speedAgent=False, coordsRelativeToAgent=False, coordsRewards=True, rewardsWhitelist=None, coordsEnemys=True, enemysWhitelist=None, enemysNoBarriers=True, rewardsTimeouts=False, include_rand=True), fps=30, env_seed=3.1):
def __init__(self, observable=observables.StateObservable(coordsAgent=True, speedAgent=False, coordsRelativeToAgent=False, coordsRewards=True, rewardsWhitelist=None, coordsEnemys=True, enemysWhitelist=None, enemysNoBarriers=True, rewardsTimeouts=False, include_rand=True), fps=30, env_seed=3.141):
super(ColumbusStateWithBarriers, self).__init__(
observable=observable, fps=fps, env_seed=env_seed)
self.aux_reward_max = 0.01
@ -373,9 +375,9 @@ class ColumbusStateWithBarriers(ColumbusEnv):
enemy = entities.CircleBarrier(self)
enemy.radius = self.random()*25+75
self.entities.append(enemy)
for i in range(3):
for i in range(1):
enemy = entities.FlyingChaser(self)
enemy.chase_acc = self.random()*0.4+0.3 # *0.6+0.5
enemy.chase_acc = 0.55 # *0.6+0.5
self.entities.append(enemy)
for i in range(1):
reward = entities.TeleportingReward(self)

View File

@ -1,5 +1,5 @@
from time import sleep, time
from env import *
import env
import numpy as np
import pygame
@ -7,13 +7,37 @@ from observables import Observable, CnnObservable
def main():
#env = ColumbusTest3_1(fps=30)
env = ColumbusStateWithBarriers(fps=30)
Env = chooseEnv()
env = Env(fps=30)
env.start_pos = [0.6, 0.3]
playEnv(env)
env.close()
def getAvaibleEnvs():
# kinda hacky... idk
strs = dir(env)
for s in strs:
if s.startswith('Columbus') and s != 'ColumbusEnv':
yield getattr(env, s)
def chooseEnv():
envs = list(getAvaibleEnvs())
for i, Env in enumerate(envs):
print('['+str(i)+'] '+Env.__name__)
while True:
inp = input('[#> ')
try:
i = int(inp)
except:
print('[!] You have to enter the number...')
if i < 0 or i >= len(envs):
print(
'[!] That is a number, but not one that makes sense in this context...')
return envs[i]
def playEnv(env):
env.reset()
done = False

View File

@ -58,10 +58,10 @@ class CnnObservable(Observable):
snap = self.env.surface.subsurface(rect)
self.snap = pygame.Surface((self.in_width, self.in_height))
if self.env.void_barrier:
col = (223, 0, 0)
col = (255, 0, 0)
else:
col = (50, 50, 50)
pygame.draw.rect(self.snap, (50, 50, 50),
pygame.draw.rect(self.snap, col,
pygame.Rect(0, 0, self.in_width, self.in_height))
self.snap.blit(snap, (cx - x, cy - y))
self.obs = self.scaler(