def spawn(): if wave%10 == 0: enemy = Boss(10,10,height) enemies.append(enemy) elif wave%5 == 0: picture = "Enemy.png" columns = 7 for y in range(50, 500, 150): for x in range(50, 850, 150): enemy = Enemy(x,y,wave,picture,columns) enemies.append(enemy ) elif wave%2 == 1: picture = "curtn.png" columns =3 for y in range(50, 500, 150): for x in range(50, 850, 150): enemy = Enemy(x,y,wave,picture,columns) enemies.append(enemy) elif wave%2 == 0: picture = "sone.png" columns = 4 for y in range(50, 500, 150): for x in range(50, 850, 150): enemy = Enemy(x,y,wave,picture,columns) enemies.append(enemy)
def load_map(self): counter = str(self.counter) for letter in counter: self.map = MAP_level[letter] file = open(self.map, 'r') for i, line in enumerate(file): # y for j, letter in enumerate(line): # x if letter == 'B': boss = Boss(j * TILE_SIZE, i * TILE_SIZE) boss.add(self.allBlocks) boss.add(self.boss) boss.add(self.enemy) if letter == 'G': monster = Monster(j * TILE_SIZE, i * TILE_SIZE, JIIINGO) monster.add(self.jiiingo) monster.add(self.allBlocks) monster.add(self.enemy) if letter in MAP_KEYS.keys(): block_temp = Block(j * TILE_SIZE, i * TILE_SIZE, MAP_KEYS[letter]) block_temp.add(self.allBlocks) if letter in SOLID_BLOCKS: block_temp.add(self.solidBlocks) if letter in Enemy: block_temp.add(self.enemy) if letter in HEAL_BLOCKS: block_temp.add(self.heal) if letter in KEYS: block_temp.add(self.keys) if letter in NPC: block_temp.add(self.npc) if letter in DOORS: block_temp.add(self.door) if letter in CRISTRAJ: block_temp.add(self.cristraj) self.boss_health += 1 if letter in LOOT_BLOCKS: money = Money(j * TILE_SIZE, i * TILE_SIZE) money.add(self.allBlocks) money.add(self.lootBlocks) if letter == 'Q': npc = Npc1(j * TILE_SIZE, i * TILE_SIZE) npc.add(self.allBlocks) npc.add(self.npc1) if letter =='P': plevaka = Plevaka(j * TILE_SIZE, i * TILE_SIZE) plevaka.add(self.allBlocks) plevaka.add(self.enemy) plevaka.add(self.plev) if letter == 's': self.player.start_x = j * TILE_SIZE self.player.start_y = i * TILE_SIZE self.start_x = j * TILE_SIZE self.start_y = i * TILE_SIZE self.ret() self.m_counter = self.counter self.BACKGROUND = background_key[str(self.m_counter)] self.background = pygame.image.load(self.BACKGROUND["texture"]) self.background = pygame.transform.scale(self.background, (MAP_RIGHT,MAP_BOTTOM)) self.background.convert()
def update(): global character, monsters global character_projectile global kill_counter global clear global boss_comeup global boss global map character.update() map.update() for i in range(30): if character_projectile[i] != None: character_projectile[i].update() if character_projectile[i].delete: character_projectile[i] = None for i in range(1000): if monster_projectile[i] != None: monster_projectile[i].update() if monster_projectile[i].delete: monster_projectile[i] = None kill_counter = 0 if clear == False: for monster in monsters: if monster.dead == False: monster.update() else: kill_counter += 1 if kill_counter == 60: for item in items: item.comeup = True items[0].x = character.x - 100 items[0].y = character.y items[0].type = 1 items[1].x = character.x + 100 items[1].y = character.y items[1].type = 2 clear = True for item in items: if item.comeup: item.update() if boss_comeup == 2: boss = Boss.Boss() boss_comeup += 1 if boss_comeup == 3: boss.update()
def create_enemy(frame_time): global player, boss, background NormalEnemy.CreateTime += frame_time MiddleEnemy.CreateTime += frame_time HighEnemy.CreateTime += frame_time if player.StageTime >= 30: count = 3 elif player.StageTime >= 10: count = 2 else: count = 1 if NormalEnemy.CreateTime >= 2.0: for i in range(count): enemy = NormalEnemy() EnemyList.append(enemy) NormalEnemy.CreateTime = 0.0 if player.StageTime > 20: if MiddleEnemy.CreateTime >= 5.0: for i in range(count - 1): enemy = MiddleEnemy() EnemyList.append(enemy) MiddleEnemy.CreateTime = 0.0 if player.StageTime > 50: if HighEnemy.CreateTime >= 5.0: enemy = HighEnemy() EnemyList.append(enemy) HighEnemy.CreateTime = 0.0 # boss create if Boss.Create and boss == None: background.bossBgm.repeat_play() boss = Boss() elif Boss.CreateTime >= 110: Boss.Create = True else: Boss.CreateTime += frame_time
from Boss import * from Player import * p1 = Player() b = Boss() print("Player Health: ", p1.getHealth()) print("Boss Health: ", b.getHealth()) turn = 1 while (p1.getHealth() > 0): print("\nTurn: ", turn) p1.takeDamage(b.attack()) b.takeDamage(p1.attack()) print("Player Health: ", p1.getHealth()) print("Boss Health: ", b.getHealth())
def game(difficulty, score, debug_state=False): lasers = [] # List of all the lasers game_quit = False # Does the user want to quit? game_running = True # Is the game running? game_state = '' frame_count = 0 spray_toggle = False timers = { 'time_start': time.time(), 'last_spray_toggle': time.time(), 'last_bomb_toggle': time.time(), 'last_nocollide_toggle': time.time(), 'last_ring_toggle': time.time(), 'last_tinyman_toggle': time.time(), 'last_bigbullets_toggle': time.time(), 'last_slowtime_toggle': time.time(), 'last_fasttime_toggle': time.time(), 'last_debug_toggle': time.time(), 'last_time_change': time.time() } debug_powerups = { 'ring': False, 'bomb': False, 'nocollide': False, 'tinyman': False, 'bigbullets': False, 'slowtime': False, 'fasttime': False, 'spray': False, } time_change = 0 powerups = [] # score = score score_thresh = 10 pygame.event.clear() # Good for the environment player_obj = Player.Player(WINDOW_X / 2, WINDOW_Y / 2, [], []) player_obj.debug = debug_state player_obj.refresh_debug() if difficulty % 5 == 0: boss_obj = Boss.Boss(difficulty * 5, (difficulty / 5.0) / FRAMERATE) else: boss_obj = False while game_running: frame_count += 1 CLOCK.tick(FRAMERATE) SCREEN.fill(COLOR_SCREEN) if difficulty % 5 == 0: update_shots(boss_obj.shots, time_change) update_boss(boss_obj, player_obj, time_change) score = boss_obj.health check_collisions(lasers, player_obj, difficulty, boss_obj) # Do things touch other things? else: update_lasers(lasers, time_change) make_lasers( lasers, difficulty) # If lasers despawn, make more to replace them check_time(debug_state, timers, score, score_thresh) score += check_collisions( lasers, player_obj, difficulty, boss_obj) # Do things touch other things? if score >= score_thresh: score = score_thresh update_mouse(player_obj) game_running, game_state, game_quit = \ update_events(game_running, game_state, game_quit, lasers) debug_state, last_spray_toggle, spray_toggle, time_change, debug_powerups = \ update_keyboard(debug_state, timers, spray_toggle, player_obj, time_change, debug_powerups) update_bombs(player_obj) update_shots(player_obj.shots, time_change) time_change, powerup_display = \ update_player(player_obj, debug_state) spawn_powerups( POWERUP_CHANCE, powerups) # Chance that a powerup will spawn on any given second update_powerups(powerups, player_obj, debug_powerups) # Draw powerups draw_gui(timers, difficulty, powerup_display, score, score_thresh ) # Show the powerups being used, the level, time, etc. pygame.display.flip( ) # This is required by pygame to render the screen. return game_state, game_quit
#!/usr/bin/env python from classzs import Employee from Boss import * emp1 = Employee("Zara", 2200) emp2 = Employee("Xile", 3350) emp1.displayEmployee() boss = Boss("Arma", "cccia") boss.displayBoss() emp1.displayCount() del emp2 # emp2.displayEmployee() emp1.displayCount()
def init_singleplayer(screen, width, height, clock): small_font = pygame.font.SysFont('Corbel', 35) big_font = pygame.font.SysFont('Corbel', 100) team = choose_team(screen, width, height, clock) print(team) if team == "Republic": pass elif team == "Empire": pass else: return pygame.display.flip() display_star_wars_cinematic(screen, width, height, clock) player = Player.Player(team=team) enemies = create_all_enemies(team) level = 10 global background_loop background_loop = True boss = Boss.Boss(Bullet.Bullet(100, 200)) level_display_time = 0 cooldown_on_spawn = 255 first_spawn = True thread_background = threading.Thread(target=background, args=(screen, height, clock)) thread_background.start() render_index = [] render_index = generate_enemies(level, render_index) enemy_picked = random_enemy_fire(enemies, render_index) xwing_sound = pygame.mixer.Sound(constants.xwing_sound) while True: clock.tick(constants.FPS) for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: player.change_x = -7 if event.key == pygame.K_RIGHT: player.change_x = 7 if event.key == pygame.K_UP: player.change_y = -7 if event.key == pygame.K_DOWN: player.change_y = 7 if event.key == pygame.K_SPACE: if player.bullet.state == "Ready": xwing_sound.play() player.bullet.y = player.y player.bullet.x = player.x + ( player.image.get_rect().width / 2) - (player.bullet.image.get_rect().width / 2) player.bullet.state = player.fire(screen) if event.key == pygame.K_ESCAPE: background_loop = False thread_background.join() return if event.type == pygame.KEYUP: if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: player.change_x = 0 if event.key == pygame.K_UP or event.key == pygame.K_DOWN: player.change_y = 0 player.x += player.change_x player.y += player.change_y player.stay_in_screen(width, height) player.verif_bullet(screen) if not first_spawn and level < 10: enemy_picked.fire(screen) if is_collision(player, enemy_picked.bullet): enemy_picked.bullet.player_contact = True player.health -= 20 player.x = width / 2 - player.image.get_rect().width / 2 player.y = height - 150 if level < 10: if enemy_picked.verif_bullet() == 0: enemy_picked = random_enemy_fire(enemies, render_index) if len(render_index) == 0 and level < 10: level += 1 render_index = generate_enemies(level, render_index) level_display_time = 0 if level == 10: boss.constant_move(screen) boss.fire(screen) if is_collision(boss, player.bullet): player.bullet.state = "Ready" player.bullet.y = player.y player.score += 1 boss.hp -= 20 if boss.hp == 0: background_loop = False thread_background.join() lose_win(screen, width, height, clock, "Win") return if is_collision(player, boss): player.x = width / 2 - player.image.get_rect().width / 2 player.y = height - 150 player.health -= 20 if is_collision(player, boss.bullet): boss.bullet.player_contact = True player.health -= 20 player.x = width / 2 - player.image.get_rect().width / 2 player.y = height - 150 boss.verif_bullet() if level < 10: for enemy in enemies: if enemies.index(enemy) in render_index: if is_collision(enemy, player.bullet): player.bullet.state = "Ready" player.bullet.y = player.y player.score += 1 render_index.remove(enemies.index(enemy)) if is_collision(player, enemy): player.health -= 20 player.x = width / 2 - player.image.get_rect().width / 2 player.y = height - 150 level_display_time += 1 if level_display_time < 100: display_level(screen, level, width, height, big_font) display_score(screen, player.score, height, small_font) display_health(screen, player.health, height, small_font) if player.health == 0: background_loop = False thread_background.join() lose_win(screen, width, height, clock, "Lose") return if first_spawn: player.image.set_alpha(255 - cooldown_on_spawn) player.display_player(screen) cooldown_on_spawn -= 1 if cooldown_on_spawn == 0: first_spawn = False player.image.set_alpha(255) else: player.display_player(screen) if not first_spawn and level < 10: for enemy in enemies: if enemies.index(enemy) in render_index: enemy.display_enemy(screen) pygame.display.flip()
def main(): # ____________ VARIABLE DECS _________________________ pygame.init() global display_surf global BASIC_FONT, BASIC_FONT_SIZE, BASIC_FONT_1 BASIC_FONT_SIZE = 15 BASIC_FONT = pygame.font.Font('freesansbold.ttf', BASIC_FONT_SIZE) BASIC_FONT_1 = pygame.font.Font('freesansbold.ttf', 15) COMMAND_FONT = pygame.font.Font('freesansbold.ttf', 10) fps_clock = pygame.time.Clock() display_surf = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) pygame.display.set_caption('Platformer') player = Player.Player(WINDOW_WIDTH, WINDOW_HEIGHT, LINE_THICKNESS) finished = False current_text_lines = [] # current_text = "" enemies = [] multiplier = 1 move_up = False move_down = False move_left = False move_right = False e_spawn_counter = 0 is_dead = False last_is_on = 0 platform_vel = 1 start_ticks = pygame.time.get_ticks() level_type = "vertical" game_started = False command_displayed = False newline_counter = 1 line_counter = 1 current_text = "%s::~>> " % str(newline_counter) level_complete = False challenge_complete = False current_level = 1 problem_displayed = False problem_solved = False # _______ IMAGE STUFF __________________ blood_right = GIFImage.GIFImage("blood_anim_right.gif") blood_left = GIFImage.GIFImage("blood_anim_2.gif") # image example # pentagram = pygame.image.load('pentagram.png').convert() # ____________ SOUND STUFF ____________ #music = pygame.mixer.Sound("generic_metal.wav") #channel = music.play() # Sound plays at full volume by default #music.set_volume(0.9) # ________ LEVEL GENERATION ___________ ground = 0 # level 1 for i in range(52): rand = random.randint(10, 300) rand_width = random.randint(30, 100) rand_type = random.randint(1, 5) if rand_type == 2: t = "moving" else: t = "static" if i > 0 and i < 10: platforms.append( Platform.Platform( rand, WINDOW_HEIGHT / 2 - LINE_THICKNESS / 2 + 100 - 50 * (i), rand_width, 10, t, 1)) elif i >= 10 and i < 20: platforms.append( Platform.Platform( rand, WINDOW_HEIGHT / 2 - LINE_THICKNESS / 2 + 100 - 50 * (i), rand_width, 10, t, 1)) elif i >= 20 and i < 51: platforms.append( Platform.Platform( rand, WINDOW_HEIGHT / 2 - LINE_THICKNESS / 2 + 100 - 50 * (i), rand_width, 10, t, 1)) elif i == 0: platforms.append( Platform.Platform( 10, WINDOW_HEIGHT / 2 - LINE_THICKNESS / 2 + 100 - 50 * (i), 50, 10, "static", 1)) elif i == 51: platforms.append( Platform.Platform( 10, WINDOW_HEIGHT / 2 - LINE_THICKNESS / 2 + (100 - 50 * (i)) - 50, 2000, 10, "static", 1)) ground = WINDOW_HEIGHT / 2 - LINE_THICKNESS / 2 + (100 - 50 * (i)) - 50 # level 2 ______ for i in range(50): rand = random.randint(100, 300) rand_width = random.randint(30, 100) platforms.append( Platform.Platform(400 + (i * 100), ground - (i * 100), rand_width, 10, "static", 0)) # Draws the starting position of the Arena #draw_arena() #player.draw(display_surf, WHITE) #for i in platforms: #i.draw(display_surf, blue) draw_title_screen() is_on = -1 pygame.mouse.set_visible(0) # make cursor invisible mouse_x = 0 mouse_y = 0 gravity = 5 boss_can_spawn = False boss_is_active = False boss = Boss(platforms[51].rect.x + 100, platforms[51].rect.y - 10, LINE_THICKNESS) text_flicker_counter = 0 screen_flicker_counter = 0 # ________________ START GAME LOOP ____________________________ while True: # main game loop for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() if event.type == MOUSEMOTION: mouse_x, mouse_y = event.pos player.aim_move(mouse_x, mouse_y) if event.type == pygame.KEYDOWN: if command_displayed: if len(current_text) <= 30: if event.key == pygame.K_a: current_text += "a" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_b: current_text += "b" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_c: current_text += "c" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_d: current_text += "d" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_e: current_text += "e" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_f: current_text += "f" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_g: current_text += "g" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_h: current_text += "h" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_i: current_text += "i" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_j: current_text += "j" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_k: current_text += "k" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_l: current_text += "l" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_m: current_text += "m" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_n: current_text += "n" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_o: current_text += "o" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_p: current_text += "p" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_q: current_text += "q" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_r: current_text += "r" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_s: current_text += "s" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_t: current_text += "t" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_u: current_text += "u" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_v: current_text += "v" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_w: current_text += "w" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_x: current_text += "x" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_y: current_text += "y" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_z: current_text += "z" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_EQUALS: current_text += "=" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_SLASH: current_text += "/" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_PLUS: current_text += "+" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_KP_PLUS: current_text += "+" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_MINUS: current_text += "-" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_ASTERISK: current_text += "*" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_0: current_text += "0" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_1: current_text += "1" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_2: current_text += "2" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_3: current_text += "3" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_4: current_text += "4" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_5: current_text += "5" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_6: current_text += "6" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_7: current_text += "7" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_8: current_text += "8" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_9: current_text += "9" text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_SPACE: current_text += " " text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_BACKSPACE: current_text = current_text[:-1] text = BASIC_FONT.render(current_text, True, green) elif event.key == pygame.K_RETURN: commands.append( Textbox(current_text, green, BASIC_FONT, newline_counter)) if input_command(current_text): output = input_command(current_text) if level_complete: if output == 10: problem_solved = True command_displayed = False game_started = True current_level = 2 newline_counter += 1 commands.append( Textbox(str(output), green, BASIC_FONT, newline_counter)) newline_counter += 1 line_counter += 1 current_text = "%s::~>> " % str(line_counter) # submit current_text to lang and move to next line pass if event.key == pygame.K_BACKQUOTE: if command_displayed == False: display_surf.fill((0, 0, 0)) newline_counter = 1 line_counter = 1 game_started = False command_displayed = True display_command_prompt(current_text, newline_counter) else: if level_complete != True: game_started = True problem_solved = True command_displayed = False else: command_displayed = False if command_displayed: display_command_prompt(current_text, newline_counter) if event.key == pygame.K_a: if player.can_move_left: move_left = True if event.key == pygame.K_d: if player.can_move_right: move_right = True if event.key == pygame.K_LSHIFT: multiplier = 2 if event.key == pygame.K_SPACE: if player.can_jump: # can_jump = False player.is_jumping = True player.can_jump = False if last_is_on < 51: player.jump(50) else: player.jump(100) if player.can_wall_jump: # can_wall_jump = False player.is_wall_jumping = True player.can_wall_jump = False if last_is_on < 51: player.wall_jump(30) else: player.wall_jump(60) if event.key == pygame.K_f: if player.can_slash: player.slash() player.can_slash = False pass if event.type == pygame.KEYUP: if event.key == pygame.K_w: move_up = False if event.key == pygame.K_a: move_left = False if event.key == pygame.K_s: move_down = False if event.key == pygame.K_d: move_right = False if event.key == pygame.K_LSHIFT: while (float(multiplier) > 1): multiplier -= .05 if event.key == pygame.K_SPACE: pass if event.key == pygame.K_f: player.slash_revert() player.can_slash = True pass if event.key == pygame.K_RETURN: if (game_started == False and command_displayed == False): game_started = True elif (game_started == False and command_displayed == True): for i in commands: i.draw(display_surf) if (is_dead): display_surf.fill((0, 0, 0)) player.is_falling = False platforms.clear() main() if pygame.mouse.get_pressed()[0]: # player.shoot(mouse_x, mouse_y) pass # _______________ IF RETURN PRESSED, START GAME ________________ if game_started: # _______ ENEMY SPAWNING _________________ if platforms[is_on].type != "last" and current_level == 1: e_spawn_counter += 1 if e_spawn_counter > 100: enemies.append(Enemy.Enemy()) e_spawn_counter = 0 # _______ PLAYER MOVEMENT _________________ if move_right: if level_type == "vertical": if (player.rect.right < right_side_rect.left - 2): player.move_right(multiplier) else: player.rect.x = right_side_rect.x - 11 player.hit_rect.x = right_side_rect.x - 11 player.can_move_right = False if not player.is_wall_jumping: player.can_wall_jump = True if level_type == "horizontal": for i in platforms: i.move_left(4 * multiplier) left_side_rect.x -= (4 * multiplier) if (player.rect.x < 300): player.move_right(multiplier) if move_left: if level_type == "vertical": if (player.rect.left > left_side_rect.right + 2): player.move_left(multiplier) else: player.rect.x = left_side_rect.x + 11 player.hit_rect.x = left_side_rect.x + 11 player.can_move_left = False if not player.is_wall_jumping: player.can_wall_jump = True if level_type == "horizontal": for i in platforms: i.move_right(4 * multiplier) left_side_rect.x += (4 * multiplier) if (player.rect.x > 100): player.move_left(multiplier) if player.rect.left > left_side_rect.right + 2: player.can_move_left = True if player.rect.right < right_side_rect.left - 2: player.can_move_right = True if player.rect.left > left_side_rect.right + 2 and player.rect.right < right_side_rect.left - 2: player.can_wall_jump = False # _______________ RANDOM DRAWING _________________________ draw_arena() draw_sides() player.draw(display_surf, WHITE) # _______ BOSS STUFF _____________ if boss_is_active: boss.move(right_side_rect, left_side_rect) boss.draw_health(display_surf, red, grey) if player.check_slash_collision(boss.rect): boss.health -= 1 if (boss.health > 0): boss.draw(display_surf, red) else: boss_is_active = False boss.draw_health(display_surf, BLACK, BLACK) level_complete = True boss.rect.y = platforms[51].rect.y - (LINE_THICKNESS + 10) #________ IF LEVEL HAS COMPLETED __________ if level_complete: game_started = False if problem_displayed == False and problem_solved == False: display_surf.fill((0, 0, 0)) draw_problem_screen(current_level) problem_displayed = True if problem_solved: problem_displayed = False command_displayed = False current_level = 2 level_complete = False game_started = True # draw you win stuff # ____________ ENEMY STUFF ________________ for i in enemies: i.move(player.rect.x, player.rect.y) i.draw(display_surf) if player.check_slash_collision(i.rect): enemies.remove(i) if player.check_enemy_collision(i.rect): player.health -= 1 if i.rect.top < platforms[51].rect.bottom: enemies.remove(i) # __________ PLATFORM STUFF ______________ for i in range(len(platforms)): if platforms[i].rect.y > player.rect.y + 300: platforms[i].type = "inactive" if platforms[i].type is not "inactive": platforms[i].draw(display_surf, blue) platforms[i].rect.y += platforms[i].vel if platforms[i].type == "moving": platforms[i].side_move() if player.check_plat_collision(platforms[i].rect): is_on = i last_is_on = i player.is_falling = False player.is_jumping = False player.rect.y = platforms[i].rect.y - platforms[ i].height - 1 player.hit_rect.y = platforms[i].rect.y - platforms[ i].height - 1 player.can_jump = True player.on_ground = True if (is_on > -1): if player.is_jumping == False: if platforms[is_on].type is not "inactive": if player.rect.right < platforms[ is_on].rect.left or player.rect.left > platforms[ is_on].rect.right: player.is_falling = True is_on = -1 player.can_jump = False # Increase platform speed if last_is_on >= 10 and last_is_on <= 20: for i in platforms: i.vel = 1 elif last_is_on >= 21 and last_is_on < 50: for i in platforms: i.vel = 2 elif last_is_on >= 49: if platforms[50].rect.y < platforms[51].rect.y + 250: platforms[51].vel = 1 else: if current_level == 1: #if last_is_on == 51: for i in range(len(platforms)): if i > 51: platforms[i].set_plat_vel(0) platforms[i].type = "last" # platforms[51:].set_plat_vel(0) platforms[51].set_plat_vel(0) # platforms[51:].type = "last" platforms[51].type = "last" boss_is_active = True else: platform_vel = 0 # Jumping stuff --------------------------------- if (player.is_falling): if (player.rect.y < player.max_height + 10): gravity = 3 if (player.rect.y < player.max_height + 30): gravity = 5 for i in platforms: if i.type != "last": i.rect.y -= gravity + 1 for i in enemies: i.rect.y -= gravity + 1 player.rect.y += gravity player.hit_rect.y += gravity if (player.is_wall_jumping): player.can_wall_jump = False if (player.rect.y > player.max_height): if (player.rect.y < player.max_height + 30): gravity = 3 if (player.rect.y < player.max_height + 10): gravity = 1 for i in platforms: if i.type != "last": i.rect.y += gravity + 2 for i in enemies: i.rect.y += gravity + 2 player.rect.y -= gravity player.hit_rect.y -= gravity else: player.is_wall_jumping = False player.is_falling = True if (player.is_jumping == True): player.can_jump = False if (player.rect.y > player.max_height): if (player.rect.y < player.max_height + 30): gravity = 3 if (player.rect.y < player.max_height + 10): gravity = 1 for i in platforms: if i.type != "last": i.rect.y += gravity + 2 for i in enemies: i.rect.y += gravity + 2 player.rect.y -= gravity player.hit_rect.y -= gravity else: player.is_jumping = False player.is_falling = True if (player.is_jumping == False and player.is_falling == False): player.can_jump = True player.rect.y += platforms[is_on].vel player.hit_rect.y += platforms[is_on].vel if (player.is_falling == True): player.can_jump = False player.is_jumping = False player.is_wall_jumping = False # -------------------------------------------- # ________ LEVEL 2 ______________ if game_started and problem_solved: #problem_solved = False current_level = 2 level_type = "horizontal" right_side_rect.x += 2000 for i in platforms: i.type = "static" if game_started: if problem_displayed: pass else: if player.health > 0: display_health(player.health, green, grey) else: display_surf.fill((0, 0, 0)) display_death(current_text) is_dead = True game_started = False # check death if (platforms[last_is_on].rect.y < -200): display_surf.fill((0, 0, 0)) display_death(current_text) is_dead = True game_started = False # ----------------------------------------- pygame.display.update() fps_clock.tick(FPS)
import pygame from pygame import mixer import sys import os import time import random from Player import * from Enemy import * from Boss import * os.environ["PYGAME_HIDE_SUPPORT_PROMPT"] = "hide" player = Player() bullet = Bullet() boss = Boss() extralife = Life() class Game: def __init__(self): pygame.init() self.screen = pygame.display.set_mode((800, 600)) self.background = pygame.image.load("data/background.png") self.FPS = 60 mixer.music.load("data/background.wav") self.explosionSound = mixer.Sound("data/explosion.wav") self.explosionSound.set_volume(0.1) mixer.music.set_volume(0.3) mixer.music.play(-1) self.mute = False self.clock = pygame.time.Clock()
def generate(self): self.timer += 1 if self.level == 1: if self.next_wave(): self.generate_wave_1(6, 0) self.next_level() if self.level == 2: if self.next_wave(): self.generate_wave_1(8, 0) self.next_level() if self.level == 3: if self.next_wave(): self.generate_wave_1(4, 1) self.generate_wave_1(4, 2) self.next_level() if self.level == 4: if not self.check_for_enemy(): Mediator.all_game_objects.append( Boss(100, -20, 0, 'boss', self.screen)) if self.check_for_boss(): self.skip_level() if self.level == 5: if self.next_wave(): self.generate_wave_1(10, 1) self.next_level() if self.level == 6: if self.next_wave(): self.generate_wave_1(8, 0) self.generate_wave_1(8, 1) self.next_level() if self.level == 7: if self.next_wave(): self.generate_wave_1(8, 0) self.generate_wave_1(8, 1) self.generate_wave_1(8, 2) self.next_level() if self.level == 8: if self.next_wave(): self.generate_wave_1(10, 0) self.generate_wave_1(10, 1) self.generate_wave_1(10, 2) self.next_level() if self.level == 9: #if self.next_wave(): #self.generate_wave_1(4,0) #self.generate_wave_1(4,1) #self.generate_wave_1(4,2) if not self.check_for_enemy(): Mediator.all_game_objects.append( Boss(100, -20, 0, 'boss', self.screen, 2)) if self.check_for_boss(): self.skip_level() if self.level == 10: self.game_completed = True
def setup(self, bg, mc): self.Played = False self.bg = bg if self.minimap == "": self.minimap = minimap((0, 0), self) self.minimap = minimap( (self.width - self.bg.w / self.minimap.ratio * self.RATIO / 100 - 5, self.height - self.bg.h / self.minimap.ratio * self.RATIO / 100 - 5), self) #sprite group self.mobs = pygame.sprite.Group() self.mobs_0 = pygame.sprite.Group() self.mobs_4 = pygame.sprite.Group() self.mobs_1 = pygame.sprite.Group() self.mobs_2 = pygame.sprite.Group() self.mobs_3 = pygame.sprite.Group() self.Bullet_Main = pygame.sprite.Group() self.Bullet_Mobs = pygame.sprite.Group() self.Blade_mc = pygame.sprite.Group() self.Boss = pygame.sprite.Group() #mobs spawn tmp = mob0() Fish0 = [] for i in range(number_of_mob_0): Fish0.append( mob0(self.spawn(bg, mc, tmp), "mob0\\ca01", self, bg, MOB_MAX_HEALTH)) tmp = mob1() Fish1 = [] for i in range(number_of_mob_1): Fish1.append( mob1(self.spawn(bg, mc, tmp), "mob1\\ca12", self, bg, MOB_MAX_HEALTH)) tmp = mob2() Fish2 = [] for i in range(number_of_mob_2): Fish2.append( mob2(self.spawn(bg, mc, tmp), "mob2\\ca21", self, bg, MOB_MAX_HEALTH)) tmp = mob3() Fish3 = [] for i in range(number_of_mob_3): Fish3.append( mob3(self.spawn(bg, mc, tmp), "mob3\\cas31", self, bg, MOB_MAX_HEALTH)) tmp = mob4() Fish4 = [] for i in range(number_of_mob_4): Fish4.append( mob4(self.spawn(bg, mc, tmp), "mob4\\ca41", self, bg, MOB_MAX_HEALTH)) tmp = Boss() BOSS = [] for i in range(number_of_boss_1): BOSS.append( Boss(self.spawn(bg, mc, tmp), "boss\\ca100", self, bg, MOB_MAX_HEALTH)) for fish in Fish0: self.mobs_0.add(fish) self.mobs.add(fish) for fish in Fish1: self.mobs_1.add(fish) self.mobs.add(fish) for fish in Fish2: self.mobs_2.add(fish) self.mobs.add(fish) for fish in Fish3: self.mobs_3.add(fish) self.mobs.add(fish) for fish in Fish4: self.mobs_4.add(fish) self.mobs.add(fish) for fish in BOSS: self.Boss.add(fish) self.mobs.add(fish)
def read(self, mc, bg): bg.read() self.bg = bg f = open("saves\\game_save.txt", "r") read = f.readlines() count1 = int(read[0]) count2 = int(read[1]) count3 = int(read[2]) self.mobs = pygame.sprite.Group() self.mobs_0 = pygame.sprite.Group() self.mobs_4 = pygame.sprite.Group() self.mobs_1 = pygame.sprite.Group() self.mobs_2 = pygame.sprite.Group() self.mobs_3 = pygame.sprite.Group() self.Bullet_Main = pygame.sprite.Group() self.Bullet_Mobs = pygame.sprite.Group() self.Blade_mc = pygame.sprite.Group() self.Boss = pygame.sprite.Group() for i in range(count1): Fish = fish() Fish.read(i) if Fish.mob == 0: tmp = Fish.rpos Fish = mob0(Fish.pos, Fish.name, self, bg, Fish.health) Fish.rpos = tmp self.mobs_0.add(Fish) self.mobs.add(Fish) if Fish.mob == 1: tmp = Fish.rpos Fish = mob1(Fish.pos, Fish.name, self, bg, Fish.health) Fish.rpos = tmp self.mobs_1.add(Fish) self.mobs.add(Fish) if Fish.mob == 2: tmp = Fish.rpos Fish = mob2(Fish.pos, Fish.name, self, bg, Fish.health) Fish.rpos = tmp self.mobs_2.add(Fish) self.mobs.add(Fish) if Fish.mob == 3: tmp = Fish.rpos Fish = mob3(Fish.pos, Fish.name, self, bg, Fish.health) Fish.rpos = tmp self.mobs_3.add(Fish) self.mobs.add(Fish) if Fish.mob == 4: tmp = Fish.rpos Fish = mob4(Fish.pos, Fish.name, self, bg, Fish.health) Fish.rpos = tmp self.mobs_4.add(Fish) self.mobs.add(Fish) if Fish.mob == 100: tmp = Fish.rpos Fish = Boss(Fish.pos, Fish.name, self, bg, Fish.health) Fish.rpos = tmp self.Boss.add(Fish) self.mobs.add(Fish) for i in range(count2): Bullet = bullet() Bullet.read(i, "mob") Bullet = bullet(Bullet.pos, self, bg, Bullet.name, Bullet.vx, Bullet.vy) self.Bullet_Mobs.add(Bullet) for i in range(count3): Bullet = bullet() Bullet.read(i, "main") Bullet = bullet(Bullet.pos, self, bg, Bullet.name, Bullet.vx, Bullet.vy) self.Bullet_Main.add(Bullet) self.stage = int(read[3]) self.RATIO = int(read[4]) mc.read(self) self.updated = True self.minimap = minimap((0, 0), self) self.minimap = minimap( (self.width - self.bg.w / self.minimap.ratio * self.RATIO / 100 - 5, self.height - self.bg.h / self.minimap.ratio * self.RATIO / 100 - 5), self)
def spawn_Boss(): for x in range(0, 1): bosses.append(Boss(x * 200, 0))
import Char import Boss Jacob = Char.Player("Jacob") Snugs = Char.Warrior("Snugs") Nui = Char.Archmage("Nui") Cinder = Char.Necromancer("Cinder") Ragnaros = Boss.Boss("Ragnaros", 5, 100, 5, 5, 5) Ragnaros.take_damage(5) Ragnaros.take_damage(96) Snugs.greet() Snugs.attack()
def __init__(self): self.__boss = Boss() self.__name = "BossKiller"
def setUp(self): self.boss = Boss(1000, 60, 60)