-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
executable file
·106 lines (80 loc) · 2.48 KB
/
main.py
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
import pygame
#import reloader.reloader as reloader
#reloader.enable(ignore_existing_dependencies=True)
import sys, getopt, constants
from game import Game
FRAME_MS = 11
class Main(object):
def set_caption(self, caption):
pygame.display.set_caption(caption)
def main(self, argv):
try:
self.handle_args(argv)
except:
return 2
pygame.mixer.pre_init(frequency=22050, size=-16, channels=16, buffer=512)
pygame.init()
screen = pygame.display.set_mode(self.get_resolution())
self.set_caption(self.get_caption())
game = self.get_game()
clock = pygame.time.Clock()
start_time = pygame.time.get_ticks()
frames = 0
bad_frames = 0
exit_program = False
while True:
clock.tick(91)
frame_start_time = pygame.time.get_ticks()
delta = FRAME_MS
# event handling
events = pygame.event.get()
for event in events:
if event.type == pygame.QUIT:
exit_program = True
if exit_program:
break
pressed = pygame.key.get_pressed()
mouse = pygame.mouse.get_pos()
if game.update(delta, events, pressed, mouse):
break
# draw
screen.fill((0, 0, 0))
game.draw(screen)
pygame.display.flip()
frame_end_time = pygame.time.get_ticks()
frame_time = (frame_end_time - frame_start_time)
if frame_time > FRAME_MS:
if game.settings['debug']:
bad_frames += 1
print("Last frame took %d" % (frame_time))
frames += 1
total_time = (pygame.time.get_ticks() - start_time)
#print "time per frame: %d" % (total_time / frames)
#print "percent bad frames: %f%%" % (100 * float(bad_frames) / frames)
pygame.quit()
return 0
class GameMain(Main):
def __init__(self):
Main.__init__(self)
self.starting_level = None
def get_resolution(self):
return [constants.RESOLUTION_X, constants.RESOLUTION_Y]
def get_caption(self):
return "Tanks!"
def get_game(self):
return Game(self.starting_level)
def usage(self):
print('''-l for starting level (for debug purposes)''')
def handle_args(self, argv):
try:
opts, args = getopt.getopt(argv[1:], "l:", ["level="])
except getopt.GetoptError:
usage()
raise Exception("Failed to parse arguments")
for opt, arg in opts:
if opt in ("-l", "--level"):
self.starting_level = int(arg)
def main(argv):
return GameMain().main(argv)
if __name__ == "__main__":
sys.exit(main(sys.argv))