forked from ftfarias/PySubsim
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgame.py
More file actions
112 lines (83 loc) · 2.94 KB
/
game.py
File metadata and controls
112 lines (83 loc) · 2.94 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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# -*- coding: utf-8 -*-
import logging
import time
import sub688
import sea
# import scenario
from game_couses_interface import GameCoursesInterface
# from submarine import sub
# import sea
logger = logging.getLogger("subsim")
logger.setLevel(logging.DEBUG)
# create debug file handler and set level to debug
handler = logging.FileHandler("sub.log", "w")
# handler.setLevel(logging.DEBUG)
formatter = logging.Formatter("%(asctime)s %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
class IntefaceMessage(object):
def __init__(self, message, time=5):
self.message = message
self.time = time
class Gameloop(object):
CHANGE_TIME_RATE = 'CHANGE_TIME_RATE'
def __init__(self):
self.messages = {}
self.time_rate = 1 # 1 time(s) faster
def setup(self):
self.player_sub = sub688.Submarine688()
self.interface = GameCoursesInterface(self.player_sub)
self.sea = sea.Sea()
# # player_sub = scenario.player_sub
# player_sub = sub.Submarine(sea)
# interface = GameCoursesInterface(sea, player_sub)
# scenario = scenario.Scenario()
# scenario.initialize()
# scenario.scenary_test_sonar()
# sea = scenario.sea
pass
def update(self, time_elapsed):
self.player_sub.turn(time_elapsed, self.messages)
self.sea.turn(time_elapsed, self.messages)
def render(self):
self.interface.render(self.messages)
def run(self):
self.setup()
stop = False
last_time_ref = time.process_time()
while (not stop):
try:
current_time_ref = time.process_time()
diff_time_ref = current_time_ref - last_time_ref
last_time_ref = current_time_ref
time_elapsed = diff_time_ref * self.time_rate / 3600 # time_elapsed in hours
self.messages['time_rate'] = self.time_rate
# self.getInputs()
self.interface.read_keyboard(self.messages)
# self.player
self.update(time_elapsed)
self.render()
if self.CHANGE_TIME_RATE in self.messages:
self.time_rate = self.messages[self.CHANGE_TIME_RATE]
del self.messages[self.CHANGE_TIME_RATE]
except Exception as e:
self.interface.finalize()
print(e)
logger.exception(e)
if __name__ == "__main__":
gameloop = Gameloop()
gameloop.run()
# def init_colors(s):
# curses.start_color()
# curses.use_default_colors()
# cpt = 0
# for i in range(-1, 8):
# for y in range(-1, 8):
# curses.init_pair(cpt, y, i)
# # display the just-initialized color onscreen
# s.addstr(str(cpt), curses.color_pair(cpt))
# s.addstr(' ')
# s.refresh()
# cpt += 1
# if __name__ == '__main__':
# main()