def draw(self): clock.tick() screen = display.get_surface() screen.fill(GB_SCREEN_COLOR) screen.blit(self.background, ((-self.camera.x/2) % 160, 0)) screen.blit(self.background, (((-self.camera.x/2) - 160) % -160, 0)) screen.blit(self.background, (((-self.camera.x/2) + 160) % 160, 0)) # screen.blit(self.image, (self.rect.x - camera.x + self.offsetx, # self.rect.y - camera.y + self.offsety)) for object in self.objects: object.draw(screen, self.camera) ren = self.font.render("score level x%d" % self.lives) screen.blit(ren, (4, 4)) ren = self.font.render("%06d %d-1" % (self.score, self.level-1)) screen.blit(ren, (4, 14)) #screen.blit(self.lifeicon, (160-30, 2)) if self.levelCompleted: self.levelCompleted = False self.level += 1 print "lvl", self.level if self.level == len(LEVELS): self.startLevel(LEVELS[self.level]) display.update()
def run_menu(): timer = 0 play_music("data/title.ogg") game = Game() set_global_sound_volume(0.75) while True: clock.tick() button.handle_input() # If we pressed start, begin the game if button.is_pressed(START): play_music("data/algar-orka.xm", -1) # Creates text box whitefont = font.Font(GAMEBOY_FONT, GB_SCREEN_COLOR) box = dialog.DialogBox((152, 46), (50, 50, 50), GB_SCREEN_COLOR, whitefont) box.set_dialog([ "Spin to \ win.", "- Garen 2008" ]) # Updates box when Z is pressed box.set_scrolldelay(2) while not box.over(): clock.tick() button.handle_input() if button.is_pressed(A_BUTTON): box.progress() screen = display.get_surface() screen.fill(GB_SCREEN_COLOR) screen.blit(game.background, (0, 0)) box.draw(screen, (4, 4)) display.update() game.won = True #game.level = 1 game.lives = 3 game.score = 0 #Play each level for lvl in LEVELS: game.startLevel(lvl) #game.level += 1 game.loop() #if not game.player.alive(): # break screen = display.get_surface() screen.fill(GB_SCREEN_COLOR) screen.blit(load_image("data/bg.png"), (0, 0)) ren = game.font.render("Press Start") timer += 1 timer = timer % 30 if timer < 15: screen.blit(ren, (80-ren.get_width()/2, 104-ren.get_height()/2)) display.update()
def win(self): splash = display.get_surface().copy() pos = 0 time = 50 while 1: button.handle_input() clock.tick() if pos < 74: pos += 2 else: time -= 1 if time <= 0: break screen = display.get_surface() screen.blit(splash, (0, 0)) ren = self.font.render("You reached Oliland!") screen.blit(ren, (80-ren.get_width()/2, pos)) display.update() self.playing = False
def win(self): splash = display.get_surface().copy() pos = 0 time = 50 while 1: button.handle_input() clock.tick() if pos < 74: pos += 2 else: time -= 1 if time <= 0: break screen = display.get_surface() screen.blit(splash, (0, 0)) ren = self.font.render("You reached Oliland!") screen.blit(ren, (80 - ren.get_width() / 2, pos)) display.update() self.playing = False
# Create a font nesfont = font.Font(NES_FONT, (255, 255, 255)) dialogbox = dialog.DialogBox((240, 51), (0, 0, 0), (255, 255, 255), nesfont) dialogbox.set_dialog([ "This is a dialog box! Press the a button to go to the next page.", "Press it again and this box will close." ]) menu = dialog.Menu(nesfont, ["Close", "Pause", "Exit"]) # dialogbox.close() while 1: # Tick, tock, at 30 frames per second clock.tick() # Handle button and key input button.handle_input() # If displaying dialog, do events for dialog! if not dialogbox.over(): if button.is_pressed(A_BUTTON): dialogbox.progress() # Otherwise, play the "game" else: # Move if LEFT or RIGHT is being pressed. if button.is_held(LEFT): player.pos[0] -= 3
# Create a font nesfont = font.Font(NES_FONT, (255, 255, 255)) dialogbox = dialog.DialogBox((240, 51), (0, 0, 0), (255, 255, 255), nesfont) dialogbox.set_dialog([ "This is a dialog box! Press the a button to go to the next page.", "Press it again and this box will close."]) menu = dialog.Menu(nesfont, ["Close", "Pause", "Exit"]) #dialogbox.close() while 1: # Tick, tock, at 30 frames per second clock.tick() # Handle button and key input button.handle_input() # If displaying dialog, do events for dialog! if not dialogbox.over(): if button.is_pressed(A_BUTTON): dialogbox.progress() # Otherwise, play the "game" else: # Move if LEFT or RIGHT is being pressed. if button.is_held(LEFT): player.pos[0] -= 3
def update(self): clock.tick() for object in self.objects: if (object.rect.right >= self.camera.left and \ object.rect.left <= self.camera.right) or \ object.always_update == True: object.update(self.engine.tiles) object.always_update = True # Move the camera self.camera.centerx = self.player.rect.centerx if self.camera.left < 0: self.camera.left = 0 if self.camera.right > len(self.engine.tiles[0])*16: self.camera.right = len(self.engine.tiles[0])*16 # Check if we won the level if self.player.rect.left > len(self.engine.tiles[0])*16: if len(LEVELS) == self.level-1: self.win() else: self.playing = False # Check if we fell off a cliff if self.player.rect.top > len(self.engine.tiles)*16: self.kill_player() # Make sure we don't move off the far left of the level if self.player.rect.left < 0: self.player.rect.left = 0 # Get rich quick! for c in self.coins: if self.player.rect.colliderect(c.rect): c.kill() self.score += 25 Poof(c.rect.center) play_sound("data/coin.ogg") # Who knew these blocks broke so easily! for c in self.blocks: if self.player.rect.colliderect(c.rect): c.kill() Poof(c.rect.center) # Will you live, or die? for b in self.baddies: if self.player.rect.colliderect(b.rect): if self.player.jump_speed > 0 and \ self.player.rect.bottom < b.rect.top+10 and \ b.alive(): b.kill() Poof(b.rect.center) self.player.jump_speed = -3 self.player.rect.bottom = b.rect.top-1 play_sound("data/pounce.ogg") self.score += 50 Points(50, b.rect.center, self.font) else: if b.alive(): self.kill_player() # Will you live, or die? for b in self.baddiestwo: if self.player.rect.colliderect(b.rect): if self.player.jump_speed > 0 and \ self.player.rect.bottom < b.rect.top+10 and \ b.alive(): b.kill() Poof(b.rect.center) self.player.jump_speed = -3 self.player.rect.bottom = b.rect.top-1 play_sound("data/pounce.ogg") self.score += 50 Points(50, b.rect.center, self.font) else: if b.alive(): self.kill_player() # Boinnnng! for s in self.springs: if self.player.rect.colliderect(s.rect): if self.player.jump_speed > 0: self.player.jump_speed = -8 if not s.bouncing: play_sound("data/bounce.ogg") s.bounce() self.player.jumping = True
def main(): display.init(3.0, "Kontra") play_music("data/nes6.xm") objects = retrogamelib.gameobject.Group() platforms = retrogamelib.gameobject.Group() bullets = retrogamelib.gameobject.Group() Bullet.groups = [objects, bullets] Player.groups = [objects] Player.platforms = platforms Player.objects = objects Platform.groups = [objects, platforms] Tile.groups = [objects] Bullet.platforms = platforms x = 0 y = 0 for row in level.split("\n"): for col in row: if col == "T": Platform((x, y)) if col == "-": Platform((x, y)) platforms[-1].allow_fall_through = False if col == "L": Platform((x, y), -45) if col == "R": Platform((x, y), 45) if col == "r": Platform((x, y), 30) if col == "B": Tile((x, y)) if col == "h": Helicopter((x, y)) x += 16 x = 0 y += 16 player = Player() turret = Turret() turret.rect.topleft = [0, 100] camera = Camera() camera.follow(player) while 1: clock.tick() button.handle_input() aliencount = 0 for o in objects: if isinstance(o, Alien): aliencount += 1 o.update() player.controls() camera.update() surface = display.surface surface.fill((175, 200, 255)) for object in objects: translated = camera.translate(object.rect) surface.blit(object.image, translated) if translated.x < -16 or translated.x > 300: if hasattr(object, "offscreen"): object.offscreen(camera) else: if hasattr(object, "onscreen"): object.onscreen(camera) display.update() if aliencount < 2: if random.randint(0, 100) > 95: if random.randint(0, 1) == 1: alien = Alien() alien.rect.topleft = [ 258 - camera.offset[0], random.randint(0, 200) ] alien.direction.x = -1 else: alien = Alien() alien.rect.topleft = [ -5 - camera.offset[0], random.randint(0, 200) ] alien.direction.x = 1
def run_menu(): play_music("sfx/title_screen.ogg") timer = 0 game = Game() set_global_sound_volume(0.75) while True: clock.tick() button.handle_input() if button.is_pressed(START): play_music("sfx/ChibiNinja.ogg", -1) whitefont = font.Font(GAMEBOY_FONT, GB_SCREEN_COLOR) box = dialog.DialogBox((152, 46), (50, 50, 50), GB_SCREEN_COLOR, whitefont) box.set_dialog([ "GET THEM DARN ALIENS!" ]) box.set_scrolldelay(2) while not box.over(): clock.tick() button.handle_input() if button.is_pressed(A_BUTTON): box.progress() screen = display.get_surface() screen.fill(GB_SCREEN_COLOR) screen.blit(game.background, (0, 0)) box.draw(screen, (4, 4)) display.update() game.won = True game.level = 1 game.lives = 5 game.score = 0 # Play each level for lvl in LEVELS: game.start_level(lvl) game.level += 1 game.loop() if not game.player.alive(): break # If we got to the end of the game, display credits if game.won: pos = 144 credits = [ "Credits", "", "", "Programming by", "Tommy Brunn", "pymike", "saluk", "", "", "Art by", "Tommy Brunn", "", "", "Sound Mixing", "Tommy Brunn", "", "", "Music", "Eric Skiff", "thechad1138", "", "", "Special Thanks To", "SFXR by DrPetter", "pymike", "saluk", "", "", "", "", "", "", "", "", "", "", "", "", "", " Thanks for playing!"] while pos > -144-(len(credits)*7): button.handle_input() if button.is_pressed(START): break screen = display.get_surface() screen.fill(GB_SCREEN_COLOR) screen.blit(game.background, (0, 0)) clock.tick() pos -= 0.5 y = 0 for c in credits: ren = game.font.render(c) screen.blit(ren, (80-ren.get_width()/2, pos+y)) y += 10 display.update() play_music("sfx/title_screen.ogg") #Draw main menu screen = display.get_surface() screen.fill(GB_SCREEN_COLOR) #screen.blit(load_image("gfx/menu.png"), (0, 0)) ren = game.font.render("Press Start") timer += 1 timer = timer % 30 if timer < 15: screen.blit(ren, (80-ren.get_width()/2, 104-ren.get_height()/2)) display.update()
def update(self): clock.tick() for object in self.objects: if (object.rect.right >= self.camera.left and \ object.rect.left <= self.camera.right) or \ object.always_update == True: object.update(self.engine.tiles) object.always_update = True # Move the camera self.camera.centerx = self.player.rect.centerx if self.camera.left < 0: self.camera.left = 0 if self.camera.right > len(self.engine.tiles[0]) * 16: self.camera.right = len(self.engine.tiles[0]) * 16 # Check if we won the level if self.player.rect.left > len(self.engine.tiles[0]) * 16: if len(LEVELS) == self.level - 1: self.win() else: self.playing = False # Check if we fell off a cliff if self.player.rect.top > len(self.engine.tiles) * 16: self.kill_player() # Make sure we don't move off the far left of the level if self.player.rect.left < 0: self.player.rect.left = 0 # Get rich quick! for c in self.coins: if self.player.rect.colliderect(c.rect): c.kill() self.score += 25 Poof(c.rect.center) play_sound("data/coin.ogg") # Will you live, or die? for b in self.baddies: if self.player.rect.colliderect(b.rect): if self.player.jump_speed > 0 and \ self.player.rect.bottom < b.rect.top+10 and \ b.alive(): b.kill() Poof(b.rect.center) self.player.jump_speed = -3 self.player.rect.bottom = b.rect.top - 1 play_sound("data/pounce.ogg") self.score += 50 Points(50, b.rect.center, self.font) else: if b.alive(): self.kill_player() # Boinnnng! for s in self.springs: if self.player.rect.colliderect(s.rect): if self.player.jump_speed > 0: self.player.jump_speed = -9000 if not s.bouncing: play_sound("data/bounce.ogg") s.bounce() self.player.jumping = True
def run_menu(): timer = 0 play_music("data/title.ogg") game = Game() set_global_sound_volume(0.75) while 1: clock.tick() button.handle_input() # If we pressed start, begin the game if button.is_pressed(START): play_music("data/algar-orka.xm", -1) whitefont = font.Font(GAMEBOY_FONT, GB_SCREEN_COLOR) box = dialog.DialogBox((152, 46), (50, 50, 50), GB_SCREEN_COLOR, whitefont) box.set_dialog([ "bubbman was on his way to oliland,", "when his car broke down in the dododu mountains!", "can bubbman cross the monster-infested mountain range?" ]) box.set_scrolldelay(2) while not box.over(): clock.tick() button.handle_input() if button.is_pressed(A_BUTTON): box.progress() screen = display.get_surface() screen.fill(GB_SCREEN_COLOR) screen.blit(game.background, (0, 0)) box.draw(screen, (4, 4)) display.update() game.won = True game.level = 1 game.lives = 5 game.score = 0 # Play each level for lvl in LEVELS: game.start_level(lvl) game.level += 1 game.loop() if not game.player.alive(): break # If we got to the end of the game, display credits if game.won: pos = 144 credits = [ "Credits", "", "", "Programmers", "pymike", "saluk", "", "", "Sound Mixing", "pymike", "", "", "Music", "ModArchive.org", "DrPetter", "", "", "Special Thanks To", "SFXR by DrPetter", "The Gimp 2", "Geany", "", "", "", "", "", "", "", "", "", "", "", "", "", " Thanks for playing!!" ] while pos > -144 - (len(credits) * 7): button.handle_input() if button.is_pressed(START): break screen = display.get_surface() screen.fill(GB_SCREEN_COLOR) screen.blit(game.background, (0, 0)) clock.tick() pos -= 0.5 y = 0 for c in credits: ren = game.font.render(c) screen.blit(ren, (80 - ren.get_width() / 2, pos + y)) y += 10 display.update() play_music("data/title.ogg") # Draw the main menu screen = display.get_surface() screen.fill(GB_SCREEN_COLOR) screen.blit(load_image("data/bubbman-menu.png"), (0, 0)) ren = game.font.render("Press Start") timer += 1 timer = timer % 30 if timer < 15: screen.blit(ren, (80 - ren.get_width() / 2, 104 - ren.get_height() / 2)) display.update()
def update(self): clock.tick() for object in self.objects: if (object.rect.right >= self.camera.left and \ object.rect.left <= self.camera.right) or \ object.always_update == True: object.update(self.engine.tiles) object.always_update = True self.camera.centerx = self.player.rect.centerx if self.camera.left < 0: self.camera.left = 0 if self.camera.right > len(self.engine.tiles[0])*16: self.camera.right = len(self.engine.tiles[0])*16 # Make sure we don't move off the far left of the level if self.player.rect.left < 0: self.player.rect.left = 0 if self.player.rect.bottom > 144: self.player.rect.bottom = 144 # Get rich quick! if button.is_pressed(B_BUTTON): self.player.falling = True (x, y) = (self.player.rect.left, self.player.rect.top) (newX, newY) = self.engine.rotateLeftTile((x, y), 144) self.player.rect.left = newX self.player.rect.top = newY for obj in self.objects: if not obj == self.player: obj.kill() self.matrix = self.engine.rotateLeft() self.engine.parseMatrix(self.matrix) if button.is_pressed(A_BUTTON): self.player.falling = True (x, y) = (self.player.rect.left, self.player.rect.top) (newX, newY) = self.engine.rotateLeftTile((x, y), 144) self.player.rect.left = newX self.player.rect.top = newY for obj in self.objects: if not obj == self.player: obj.kill() self.matrix = self.engine.rotateRight() self.engine.parseMatrix(self.matrix) for c in self.coins: if self.player.rect.colliderect(c.rect): c.kill() c.looted = True self.score += 25 play_sound("data/coin.ogg") for s in self.solids: if self.player.rect.colliderect(s.rect): cX = s.rect.centerx cY = s.rect.centery pX = self.player.rect.centerx pY = self.player.rect.centery if (pX-cX) == 0: self.player.rect.bottom = s.rect.top else: slope = (pY-cY)/(pX-cX) if slope == 0: if pX>cX: self.player.rect.left = s.rect.right else: self.player.rect.right = s.rect.left elif slope > 0 and slope <= 16.0/11: #slu4ai I self.player.rect.left = s.rect.right elif slope < 0 and slope >= -16.0/11: #slu4ai III self.player.rect.right = s.rect.left else: #slu4ai II self.player.rect.bottom = s.rect.top for s in self.dropBs: if self.player.rect.colliderect(s.rect): cX = s.rect.centerx cY = s.rect.centery pX = self.player.rect.centerx pY = self.player.rect.centery if (pX-cX) == 0: self.player.rect.bottom = s.rect.top else: slope = (pY-cY)/(pX-cX) if slope == 0: if pX>cX: self.player.rect.left = s.rect.right else: self.player.rect.right = s.rect.left elif slope > 0 and slope <= 16.0/11: #slu4ai I self.player.rect.left = s.rect.right elif slope < 0 and slope >= -16.0/11: #slu4ai III self.player.rect.right = s.rect.left else: #slu4ai II self.player.rect.bottom = s.rect.top for db in self.dropBs: print "tile", self.matrix[db.x][db.y], db.x, db.y if(db.y + 1 < len(self.matrix)): if self.matrix[db.x][db.y + 1] == '.' or self.matrix[db.x][db.y + 1] == 'C': temp = self.matrix[db.x][db.y + 1] self.matrix[db.x][db.y+1] = 'D' self.matrix[db.x][db.y] = temp db.y = db.y + 1 for g in self.gates: if self.player.rect.colliderect(g.rect): self.levelCompleted = True '''
def run_menu(): timer = 0 play_music("data/title.ogg") game = Game() set_global_sound_volume(0.75) while 1: clock.tick() button.handle_input() # If we pressed start, begin the game if button.is_pressed(START): play_music("data/algar-orka.xm", -1) whitefont = font.Font(GAMEBOY_FONT, GB_SCREEN_COLOR) box = dialog.DialogBox((152, 46), (50, 50, 50), GB_SCREEN_COLOR, whitefont) box.set_dialog([ "johnny the adventurer discovered a huge tower,", "and, being the manly man he is, must explore it!", "can you help him climb the perilous tower??" ]) box.set_scrolldelay(2) while not box.over(): clock.tick() button.handle_input() if button.is_pressed(A_BUTTON): box.progress() screen = display.get_surface() screen.fill(GB_SCREEN_COLOR) screen.blit(game.background, (0, 0)) box.draw(screen, (4, 4)) display.update() game.won = True game.level = 1 game.lives = 5 game.score = 0 # Play each level for lvl in LEVELS: game.start_level(lvl) game.level += 1 game.loop() if not game.player.alive(): break # If we got to the end of the game, display credits if game.won: pos = 144 credits = [ "Credits", "", "", "Programmers", "pymike", "saluk", "", "", "Sound Mixing", "pymike", "", "", "Music", "ModArchive.org", "DrPetter", "", "", "Special Thanks To", "SFXR by DrPetter", "The Gimp 2", "Geany", "", "", "", "", "", "", "", "", "", "", "", "", "", " Thanks for playing!!"] while pos > -144-(len(credits)*7): button.handle_input() if button.is_pressed(START): break screen = display.get_surface() screen.fill(GB_SCREEN_COLOR) screen.blit(game.background, (0, 0)) clock.tick() pos -= 0.5 y = 0 for c in credits: ren = game.font.render(c) screen.blit(ren, (80-ren.get_width()/2, pos+y)) y += 10 display.update() play_music("data/title.ogg") # Draw the main menu screen = display.get_surface() screen.fill(GB_SCREEN_COLOR) screen.blit(load_image("data/bubbman-menu.png"), (0, 0)) ren = game.font.render("Press Start") timer += 1 timer = timer % 30 if timer < 15: screen.blit(ren, (80-ren.get_width()/2, 104-ren.get_height()/2)) display.update()
def update(self): clock.tick() for object in self.objects: if (object.rect.right >= self.camera.left and \ object.rect.left <= self.camera.right) or \ object.always_update == True: object.update(self.engine.tiles) object.always_update = True # Move the camera self.camera.centerx = self.player.rect.centerx if self.camera.left < 0: self.camera.left = 0 if self.camera.right > len(self.engine.tiles[0])*16: self.camera.right = len(self.engine.tiles[0])*16 # Check if we won the level if self.player.rect.right > len(self.engine.tiles[0])*16: if len(LEVELS) == self.level-1: self.win() else: self.playing = False # Check if we fell off a cliff if self.player.rect.top > len(self.engine.tiles)*16: self.kill_player() # Make sure we don't move off the far left of the level if self.player.rect.left < 0: self.player.rect.left = 0 #Subtract fuel if we're flying if self.player.flying: self.change_fuel(1, mode=-1) # Get rich quick! for c in self.coins: if self.player.rect.colliderect(c.rect): c.kill() self.score += 25 self.change_fuel(1, mode=1) Poof(c.rect.center) play_sound("sfx/coin.ogg") # Extra lives! for l in self.extralives: if self.player.rect.colliderect(l.rect): l.kill() self.lives += 1 Poof(l.rect.center) #Play 1-up sound # Will you live, or die? for b in self.baddies: if self.player.rect.colliderect(b.rect): if self.player.jump_speed > 0 and \ self.player.rect.bottom < b.rect.top+10 and \ b.alive(): b.kill() Poof(b.rect.center) self.player.jump_speed = -3 self.player.rect.bottom = b.rect.top-1 play_sound("sfx/pounce.ogg") self.score += 50 Points(50, b.rect.center, self.font) else: if b.alive(): self.kill_player() # Boinnnng! for s in self.springs: if self.player.rect.colliderect(s.rect): if self.player.jump_speed > 0: self.player.jump_speed = -8 if not s.bouncing: play_sound("sfx/bounce.ogg") s.bounce() self.player.jumping = True # Check if the player is standing on a collapsible platform! for p in self.FallingPlatforms: if p.touched: continue for i in range(p.rect.left, p.rect.left+p.rect.width): if self.player.rect.collidepoint(i , p.rect.top-1): p.touched = True break # Check if the player is on a horizontally moving platform for p in self.MovingPlatforms: if p.axis == 2: continue for i in range(p.rect.left, p.rect.left+p.rect.width): if self.player.rect.collidepoint(i , p.rect.top-1): if p.dir == 1: self.player.move(p.speed,0,self.engine.tiles) else: self.player.move(p.speed,0, self.engine.tiles)