-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
67 lines (53 loc) · 1.79 KB
/
Copy pathmain.py
File metadata and controls
67 lines (53 loc) · 1.79 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
import pyglet
from pyglet.window import key
from game import Game
from globals_ import display_width, display_height
from qlearning import QLearning
frame_rate = 30.
class MyWindow(pyglet.window.Window):
def __init__(self, train, load_after_n_updates, *args, **kwargs):
super().__init__(*args, **kwargs)
self.set_minimum_size(400, 300)
background_color = [0, 0, 0, 255]
background_color = [i/255 for i in background_color]
pyglet.gl.glClearColor(*background_color)
self.game = Game(track_idx=1)
self.car = self.game.car
self.qlearning = QLearning(self.game, load_after_n_updates=load_after_n_updates)
self.train = train
def on_key_press(self, symbol, modifiers):
pass
# if symbol == key.UP:
# self.car.is_accelerating = True
# if symbol == key.DOWN:
# self.car.is_reversing = True
# if symbol == key.RIGHT:
# self.car.is_turning_right = True
# if symbol == key.LEFT:
# self.car.is_turning_left = True
def on_key_release(self, symbol, modifiers):
pass
# if symbol == key.UP:
# self.car.is_accelerating = False
# if symbol == key.DOWN:
# self.car.is_reversing = False
# if symbol == key.RIGHT:
# self.car.is_turning_right = False
# if symbol == key.LEFT:
# self.car.is_turning_left = False
def on_draw(self):
self.game.render()
def update(self, dt):
if self.train:
self.qlearning.train()
else:
self.qlearning.test()
# self.game.update()
if self.game.is_episode_finished():
self.game.reset()
if __name__ == "__main__":
window = MyWindow(
train=False, load_after_n_updates=45000,
width=display_width, height=display_height, caption="RL Driving", resizable=False)
pyglet.clock.schedule_interval(window.update, 1/frame_rate)
pyglet.app.run()