-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLevels.py
More file actions
176 lines (136 loc) · 5.58 KB
/
Levels.py
File metadata and controls
176 lines (136 loc) · 5.58 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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
from Scenary import Platform, PlayButton
from Bosses import EventManager
from Bird import Player
import pygame
import localtypes
class MainMenu:
def __init__(self, event_manager):
#self.event_manager = EventManager.Broadcaster()
self.event_manager = event_manager
self.background = pygame.image.load("resources/background_01.png").convert()
self.play_button = PlayButton(100, 100, self.event_manager)
#self.register_event()
self.level_type = localtypes.LEVEL_TYPE_MAIN_MENU
def register_events(self):
self.event_manager.on_click += self.play_button.on_click
def unregister_events(self):
self.event_manager.on_click -= self.play_button.on_click
#def fire_events(self):
# self.event_manager.on_click.fire()
def draw(self, screen):
screen.blit(self.background, (0,0))
self.play_button.draw(screen)
def mouse_over(self, cursor_position):
self.play_button.mouse_over(cursor_position)
class Level:
def __init__(self, event_manager):
self.platform_list = None
self.background = None
self.world_shift = 0
self.level_limit = -1000
self.platform_list = pygame.sprite.Group()
self.player = Player(self.platform_list)
self.player.rect.x = 340
self.player.rect.y = localtypes.SCREEN_HEIGHT - self.player.rect.height
self.event_manager = event_manager
self.level_type = localtypes.LEVEL_TYPE_LEVELS
#self.register_events()
def update(self):
self.platform_list.update()
self.player.update()
def draw(self, screen):
screen.fill(localtypes.BLUE)
screen.blit(self.background, (self.world_shift // 3,0))
self.platform_list.draw(screen)
self.player.draw(screen)
def shift_world(self, shift_x):
""" When the user moves left/right and we need to scroll everything: """
if self.world_shift >= self.level_limit:
self.world_shift += shift_x
# Go through all the sprite lists and shift
for platform in self.platform_list:
platform.rect.x += shift_x
#for enemy in self.enemy_list:
# enemy.rect.x += shift_x
def fire_end_level(self):
self.event_manager.on_screen_change.fire()
def register_events(self):
self.event_manager.on_key_press += self.key_press_action
def unregister_events(self):
self.event_manager.on_key_press -= self.key_press_action
def key_press_action(self, key):
if key == localtypes.KEY_UP:
self.player.jump()
elif key == localtypes.KEY_RIGHT:
self.player.go_right()
elif key == localtypes.KEY_LEFT:
self.player.go_left()
elif key == localtypes.KEY_RELEASED:
if self.player.change_x is not 0:
self.player.is_fade_stop = True
else:
print "Unknown key action"
# Create platforms for the level
class Level_01(Level):
""" Definition for level 1. """
def __init__(self, event_manager):
""" Create level 1. """
# Call the parent constructor
Level.__init__(self, event_manager)
self.background = pygame.image.load("resources/background_01.png").convert()
self.background.set_colorkey(localtypes.WHITE)
self.level_limit = -2500
# Array with type of platform, and x, y location of the platform.
level = [[localtypes.GRASS_LEFT, 500, 500],
[localtypes.GRASS_MIDDLE, 570, 500],
[localtypes.GRASS_RIGHT, 640, 500],
[localtypes.GRASS_LEFT, 800, 400],
[localtypes.GRASS_MIDDLE, 870, 400],
[localtypes.GRASS_RIGHT, 940, 400],
[localtypes.GRASS_LEFT, 1000, 500],
[localtypes.GRASS_MIDDLE, 1070, 500],
[localtypes.GRASS_RIGHT, 1140, 500],
[localtypes.STONE_PLATFORM_LEFT, 1120, 280],
[localtypes.STONE_PLATFORM_MIDDLE, 1190, 280],
[localtypes.STONE_PLATFORM_RIGHT, 1260, 280],
]
# Go through the array above and add platforms
for platform in level:
block = Platform(platform[0])
block.rect.x = platform[1]
block.rect.y = platform[2]
#block.player = self.player
self.platform_list.add(block)
#self.player.platform_list = self.platform_list
# Add a custom moving platform
#block = platforms.MovingPlatform(platforms.STONE_PLATFORM_MIDDLE)
#block.rect.x = 1350
#block.rect.y = 280
#block.boundary_left = 1350
#block.boundary_right = 1600
#block.change_x = 1
#block.player = self.player
#block.level = self
#self.platform_list.add(block)
if __name__ == "__main__":
pygame.init()
screen = pygame.display.set_mode(localtypes.screen_size)
pygame.display.set_caption("Bird Jumper")
clock = pygame.time.Clock()
clock.tick(60)
screen_manager = ScreenManager(screen)
#mm = MainMenu()
done = False
while not done:
#mm.mouse_over(pygame.mouse.get_pos())
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_0:
done = True
if event.type == pygame.MOUSEBUTTONUP:
#print "mouse pressed at: ", pygame.mouse.get_pos()
#mm.fire_events()
screen_manager.fire_event_click()
#mm.draw(screen)
screen_manager.draw()
pygame.display.flip()