-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgame.py
104 lines (85 loc) · 3.58 KB
/
game.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
#! /usr/bin/env python2.7-32
#encoding: utf-8
import pygame
from locals import *
from collision import CollisionObject
from sprites import SpriteBasic, AnimatedSprite
from level import Level
class Game (object):
'''
Classe principal responsavel em inicializar as variaveis do pygame
Cria a screen e controlar o loop game
'''
def __init__ (self, size, display_name):
pygame.init()
self.clock = pygame.time.Clock ()
self.done = False
self.FPS = 60
self.clock = pygame.time.Clock ()
self.playtime = 0
self.screenrect = None
self.allgroup = pygame.sprite.LayeredUpdates ()
self.blockgroup = pygame.sprite.LayeredUpdates ()
self.initialization (size, display_name)
def render_string(self, msg="pygame is cool"):
font = pygame.font.Font (None, 18)
text = font.render (msg,True, RED)
self.screen.blit (text, [0,1])
return text
def initialization (self, size, display_name):
self.size = size
self.display_name = display_name
self.screen_create (size, display_name)
self.background = pygame.Surface((self.screen.get_width(), self.screen.get_height()))
self.background = pygame.Surface((self.screen.get_width(), self.screen.get_height()))
self.background.fill(DEFAULT_SCREEN_COLOR) # fill white
self.background = self.background.convert() # jpg can not have transparency
self.screen.blit(self.background, (0,0)) # blit background on screen (overwriting all)
def screen_create (self, size=None, display_name=None):
pygame.display.set_caption (display_name or self.display_name)
self.screen = pygame.display.set_mode (size or self.size)
self.screenrect = self.screen.get_rect ()
return self.screen
def events (self):
for event in pygame.event.get(): # User did something
if event.type == pygame.QUIT:
self.done = True
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
self.done = True
def main (self, level):
self.level = level
while self.done == False:
self.events ()
#Games Variables
milliseconds = self.clock.tick(self.FPS) # milliseconds passed since last frame
seconds = milliseconds / 1000.0 # seconds passed since last frame (float)
self.playtime += seconds
#control update and Draw
level.update (self.playtime)
self.update (self.playtime)
self.draw ()
pygame.display.flip ()
pygame.quit ()
def get_sprite_in (self, movement, layer=None):
for sprite in self.blockgroup:
if sprite.rect.center == movement:
return sprite
def update (self, playtime):
# Clear the screen and set the screen background
self.screen.fill (DEFAULT_SCREEN_COLOR)
self.allgroup.update (self.playtime)
self.blockgroup.update (self.playtime)
def draw (self):
self.blockgroup.clear (self.screen, self.background)
self.blockgroup.draw (self.screen)
self.allgroup.clear (self.screen, self.background)
self.allgroup.draw (self.screen)
self.render_string ("Tempo de Jogo: %s" % self.playtime)
if __name__ == '__main__':
size = (800, 600)
game = Game (size, "Hanter Monters")
level = Level ("level0.text", size, game)
sp = AnimatedSprite ([1, 1], "player.png", game)
level.load_level ()
game.main (level)