def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.set_location(400, 100) self.frame_rate = 1/60.0 self.player = GameObject( posx = 200, posy = 200 ,image = "Mario_Super.png") self.enemie1 = Enemies(posx=500, posy=200, image="goomba_1.png") self.enemie2 = Enemies(posx=300, posy=200, image="goomba_1.png") self.background = BackgroundObject(posx = 0, posy = 0, image ='background_0.jpg') self.brick = BackgroundObject(posx=0, posy=0, image='brick.png')
def update(self, dt): self.player.update(dt) self.background.update(dt) eneme_out_of_window = [] for enemieObj in ememies_list: if (enemieObj.getX() < 10 or enemieObj.getX() > 500): print(enemieObj.getX()) eneme_out_of_window.append(enemieObj) enemieObj.update(dt) for removeEneme in eneme_out_of_window: ememies_list.remove(removeEneme) # ememies_list.remove(enemieObj) start = 0 end = 0 if (self.toggle == True): start = 20 end = 40 self.toggle = False else: start = -40 end = -20 self.toggle = True enemie = Enemies(posx=random.randint(0, 300), posy=185, velx=random.randint(start, end), vely=0, image="goomba_1.png") ememies_list.append(enemie)
def run_game(): #функция подключает pygame, настройки, создает экран, инициализирует все модули и запускает основной цикл игры pygame.init() #определяет настройки nlo_settings = Settings() #определяет экран screen = pygame.display.set_mode( (nlo_settings.screen_width, nlo_settings.screen_height)) #создает название pygame.display.set_caption("N L O") #создание корабля korabl = Korabl(nlo_settings, screen) #создание щита sfera = Sfera(nlo_settings, screen, korabl) #изображение fon = pygame.image.load('images/fon.png') #группа для хранения пуль pyli = Group() #группа для хранения врагов enemies = Enemies(nlo_settings, screen) #группа для хранения пуль врагов bullets = Group() #группа для хранения жизней корабля all_lifes = Group() #создание трех жизней gf.all_lifes(screen, all_lifes, nlo_settings) #создание надписи приветствия welcome = Game_over(screen, 'WELCOME') #создание кнопки Play button_play = Button(nlo_settings, screen, 'Play') #создание надписи при проигрыше game_over = Game_over(screen, 'GAME OVER') #создание надписи при выигрыше you_win = Game_over(screen, 'CONGRATULATIONS!') #создание кнопки повтора игры try_again = Button(nlo_settings, screen, 'Try again') #основной цикл игры while True: #выводит фоновое изображение на экран screen.blit(fon, (0, 0)) #проверяет все события (нажатия клавиш, флаги и т.д.) gf.check_events(korabl, nlo_settings, screen, pyli, button_play, try_again, all_lifes) #условия для запуска игровых действий if nlo_settings.game_active: if nlo_settings.korabl_view: #обновления всех функций в зависимости от событий sfera.update() korabl.update() gf.pyli_update(enemies, pyli, sfera, nlo_settings, bullets) gf.life_control(screen, all_lifes, nlo_settings, bullets, korabl) gf.bullets_update(bullets, enemies, nlo_settings, screen, korabl, sfera) gf.enemies_update(enemies, nlo_settings, screen) #обновление экрана gf.update_screen(nlo_settings, screen, korabl, sfera, pyli, enemies, bullets, all_lifes, button_play, game_over, try_again, welcome, you_win)
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.set_location(400, 100) self.frame_rate = 1/60.0 self.player = GameObject( posx = 200, posy = 185 ,image = "Mario_Super.png") self.background = BackgroundObject(posx = 0, posy = 0, image = "background_3.jpg") #self.brick1 = BackgroundObject(posx=0, posy=0, image="brick1.png") #self.brick2 = BackgroundObject(posx=862, posy=0, image="brick1.png") #self.water = BackgroundObject(posx=625, posy=0, image="water.png") self.enemie1 = Enemies(posx=random.randint(0, 300), posy=185, velx=random.randint(30, 50), vely=0, image="goomba_1.png") self.enemie2 = Enemies(posx=random.randint(0, 300), posy=185, velx=random.randint(-50, -30), vely=0, image="goomba_1.png") ememies_list.append(self.enemie1) ememies_list.append(self.enemie2) self.toggle = False
def __init__(self): self.map = Map() self.towers = Towers(self.map) self.enemies = Enemies(self.map, self.towers) self.menu = Menu(self.map, self.towers, self.enemies, screen_width, screen_height) self.dragging_tower = False self.round = 1 self.start_round()
def main(): #SCREEN_SIZEの画面を作成 screen = pygame.display.set_mode(global_data.SCREEN_SIZE) #タイトルバーの文字列をセット pygame.display.set_caption(u"シューティングゲーム") #FPSの取得 clock = pygame.time.Clock() myship = MyShip(50,50) enemies = Enemies() while True: #FPSを60に設定 clock.tick(60) #背景色の設定 screen.fill((255,255,255)) # ***いろんな処理*** # myship.move() enemies.move() enemies.reloadEnemy() myship.draw(pygame,screen) enemies.draw(pygame,screen) #画面の更新 pygame.display.update() for event in pygame.event.get(): if event.type == QUIT: pygame.quit(); sys.exit() elif event.type == KEYDOWN: if event.key == K_RIGHT: myship.direction["right"] = True elif event.key == K_LEFT: myship.direction["left"] = True if event.key == K_UP: myship.direction["up"] = True elif event.key == K_DOWN: myship.direction["down"] = True elif event.type == KEYUP: if event.key == K_RIGHT: myship.direction["right"] = False elif event.key == K_LEFT: myship.direction["left"] = False if event.key == K_UP: myship.direction["up"] = False elif event.key == K_DOWN: myship.direction["down"] = False
from turret import Turret from barriers import Barrier from scoreboard import Scoreboard enemy = "sprites/New Piskel.gif" ship = "sprites/ship.gif" screen = Screen() screen.bgcolor("black") screen.title("Space Invaders") screen.addshape(enemy) screen.addshape(ship) screen.setup(width=600, height=600) screen.tracer(0) enemies = Enemies() turret = Turret() barriers = Barrier() scoreboard = Scoreboard() def check_player_collisions(): for enemy in enemies.enemy_list: if turret.bullet: if turret.bullet.distance(enemy) < 20: enemies.kill(enemy) turret.destroy() scoreboard.point() for brick in barriers.barrier_list:
from shot import Shot from enemies import Enemies WIDTH=800 HEIGHT=600 TITLE="Space shooter game" ICON="spacecrafticon.png" scroll_speed = 2 player = Player() spacecraft = SpaceShip("spacecraft", (400,480)) spacecraft.set_speed(4) enemies = Enemies((WIDTH,HEIGHT), "enemies.dat") # List to track shots shots = [] # shot last fired timestamp - to ensure don't fire too many shots shot_last_fired = 0 # time in seconds time_between_shots = 0.5 scroll_position = 0 # spacecraft hit points # positions relative to spacecraft centre which classes as a collide spacecraft_hit_pos = [ (0,-40), (10,-30), (-10,-30), (13,-15), (-13,-15), (25,-3), (-25,-3), (46,12), (-46,12), (25,24), (-25,24), (10,27), (-10,27), (0,27) ]
def create_enemy_list(self, grid): enemies = Enemies(self.level, grid) self.enemy_list = enemies.enemy_list
def main_game(val): # variables used in this function winings = 0 ships_missed = 0 bckg_y = 0 while val: #main event loop for event in pygame.event.get(): #user did something if event.type == pygame.QUIT: #if user clicked close done = True # to exit this loop elif event.type == pygame.KEYDOWN: if event.key == K_ESCAPE: sys.exit() elif event.type == pygame.MOUSEBUTTONDOWN: music_effect("blaster") new_bullet = Bullet(screen, the_player) bullets.add(new_bullet) #controling a spaceship via the mouse player_pos = pygame.mouse.get_pos() pygame.mouse.set_visible(False) #to hide the mouse curser the_player.update_me(player_pos) # screen.blit(background, [0,0]): #drawing and moving the background moving_background(bckg_y) bckg_y += 1 # rel_y = bckg_y % background.get_rect().height # screen.blit(background, [0, rel_y - background.get_rect().height]) # if rel_y > 0: # screen.blit(background2,(0, rel_y)) # bckg_y += 1 #screen.blit(player_ship, [x, y]) the_player.draw_me() #screen.blit(enemy_ship, [100, 50]) for enemy_ship in enemy_list: # # update the bad guy (based on where the player is) enemy_ship.update_me(the_player) # draw the bad guy enemy_ship.draw_me() if enemy_ship.beyond_screen(): ships_missed += 1 enemy_list.remove(enemy_ship) print("ship missed") #bullet portion for bullet in bullets: # update teh bullet location bullet.update() # draw the bullet on the screen bullet.draw_bullet() bullet_hit = groupcollide(bullets, enemy_list, True, True) # when bullet hits the enemy for bullet, enemy_ship in bullet_hit.items(): print("explosion") music_effect("explosion") enemy_ship[0].explosions(bullet) winings += 1 if len( enemy_list ) < 4: #if number of ships on the screen gets less than 4 - generate another ship enemy_list.add((Enemies(screen, enemy_ship_selector()))) enemy_list.add((Enemies(screen, enemy_ship_selector()))) #ship_crash = groupcollide(player_group, enemy_list, True, True) #when enemy ship hits the player #print ship_crash text = font.render( "Hits: " + str(winings), True, text_color ) # these 2 lines display a text for wins in the right top side of screen screen.blit(text, [600, 50]) text = font.render( "Ships missed: " + str(ships_missed), True, text_color ) # these 2 lines display a text for wins in the right top side of screen screen.blit(text, [100, 50]) text = font.render( "Press ESC to exit at any time", True, text_color ) # these 2 lines display a text for wins in the right top side of screen screen.blit(text, [450, 750]) if ships_missed >= 1: game_over() pygame.display.flip() #update the screen with what we draw clock.tick(80) #number of frames per second pygame.quit()
enemyShip2 = "images/enemyShip2.png" enemyShip3 = "images/enemyShip3.png" enemyShip4 = "images/enemyShip4.png" enemyShip5 = "images/enemyShip5.png" def enemy_ship_selector(): en_index = random.randint(0, 4) enemy_images_list = [ enemyShip1, enemyShip2, enemyShip3, enemyShip4, enemyShip5 ] enemy_ship_selector = enemy_images_list[en_index] return enemy_ship_selector enemy_ship = Enemies(screen, enemy_ship_selector()) #call function to select enemy ships combination enemy_list = Group( ) #creates list of sprites which is managed by class 'Group' for i in range(random.randint(3, 9)): # this represents an enemy enemy_list.add(enemy_ship) new_bullet = Bullet(screen, the_player) bullets = Group() pygame.mixer.music.load("sounds/music.wav") #load game music pygame.mixer.music.play(-1) #'-1' means play indefinetely blaster = pygame.mixer.Sound( 'sounds/blaster.wav') #using Sound class does not interrupt main music
def __init__(self, _states_manager): self.road = Road() self.player = Player() self.enemies = Enemies() self.ui = UI()
def init_enemies(self): self.enemies = Enemies(self, self.signal, self.game_settings)
def main_game(val): # variables used in this function winings = 0 ships_missed = 0 bckg_y = 0 while val: #main event loop for event in pygame.event.get(): #user did something if event.type == pygame.QUIT: #if user clicked close done = True # to exit this loop elif event.type == pygame.KEYDOWN: if event.key == K_ESCAPE: # sys.exit() quit() if event.key == pygame.K_p: print "hitting button P"#just a test for now pause() elif event.type == pygame.MOUSEBUTTONDOWN: music_effect("blaster") new_bullet = Bullet(screen, the_player, bullet_selector(winings)) bullets.add(new_bullet) #controling a spaceship via the mouse player_pos = pygame.mouse.get_pos() pygame.mouse.set_visible(False) #to hide the mouse curser the_player.update_me(player_pos) #drawing and moving the background moving_background(bckg_y) bckg_y += 1 #screen.blit(player_ship, [x, y]) the_player.draw_me() #screen.blit(enemy_ship, [100, 50]) for enemy_ship in enemy_list: # update the bad guy (based on where the player is) enemy_ship.update_me(the_player) # draw the bad guy enemy_ship.draw_me() if enemy_ship.beyond_screen(): ships_missed += 1 enemy_list.remove(enemy_ship) print "ship missed" #bullet portion for bullet in bullets: # update teh bullet location bullet.update() # draw the bullet on the screen bullet.draw_bullet() #remove bullet if beyond the screen if bullet.beyond_screen(): bullets.remove(bullet) print "bullet removed" #enemy collision with bullet bullet_hit = groupcollide(bullets, enemy_list, True, True) # when bullet hits the enemy for bullet, enemy_ship in bullet_hit.iteritems(): print "explosion" music_effect("explosion") enemy_ship[0].explosions() winings += 1 if len(enemy_list) < 4: #if number of ships on the screen gets less than 4 - generate another ship enemy_list.add((Enemies(screen, enemy_ship_selector()))) enemy_list.add((Enemies(screen, enemy_ship_selector()))) player_crash = groupcollide(player_group, enemy_list, True, True) #when enemy ship hits the player for player, enemy_ship in player_crash.iteritems(): print "player hit" music_effect("explosion") player.explosions() game_over(winings) print_text("Hits: " + str(winings), (600, 50), font, text_color) print_text("Ships missed: " + str(ships_missed), (100, 50), font, text_color) print_text("Press ESC to exit at any time", (450, 750), font, text_color) if ships_missed >= 1: game_over(winings) pygame.display.update() #update the screen with what we draw clock.tick(40) #number of frames per second
def new_room(self, last_exit): self.room = Room(entrance=Room.OPPOSITE_DIRECTIONS[last_exit]) self.player.warp(self.room.get_player_spawn_point()) self.room.enemies = Enemies(self.enemy_count, speed=self.enemy_speed)
def __init__(self, level): self.enemies = Enemies(characterlevel=level)
def run(self): # Game clock clock = pygame.time.Clock() # enemy Spawner Enems_pos = [50, 200, 350, 500, 650, 750] Enem = [] for i in range(5): Enem.append(Enemies(Enems_pos[i], -100, 1, self.window)) # Player variable player = Player(self.window, (width * 0.5), (height * 0.5)) # Game loop isRunning = True # Player Score dodged = 0 # player health health = 100 # Bullets list bullets = [] enem_bullets = [] time0 = tm.time() # main game loop while isRunning: # Check if bullet is out of bounds for bullet in bullets: if bullet.y < -100: bullets.pop(bullets.index(bullet)) else: bullet.y -= bullet.vel for bullet in enem_bullets: if bullet.y < -100: enem_bullets.pop(bullets.index(bullet)) else: bullet.y += bullet.vel # Game events starts here for event in pygame.event.get(): if event.type == pygame.QUIT: isRunning = False self.app_quit() # key is pressed if event.type == pygame.KEYDOWN: # move left if event.key == pygame.K_LEFT: player.acclerate(-5) # move right elif event.key == pygame.K_RIGHT: player.acclerate(5) # move up elif event.key == pygame.K_UP: player.acclerate(0, -5) # move down elif event.key == pygame.K_DOWN: player.acclerate(0, 5) # fire bullets elif event.key == pygame.K_SPACE: fire(self.window, player, bullets) # key is released if event.type == pygame.KEYUP: if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT or event.key == pygame.K_UP or event.key == pygame.K_DOWN: player.acclerate(0, 0) # Game Events ends here # fill the screen with white color #self.window.fill(white) self.window.blit(background, (0, 0)) # Draw the player player.draw() for bullet in enem_bullets: bullet.draw() # Draw bullets for bullet in bullets: bullet.draw() # Spawn The enemeis for i in Enem: i.Spawn() i.move() if tm.time() - time0 > 3: # Shoot once every 3 seconds time0 = tm.time() i.fire(self.window, enem_bullets) # Move players and enemies player.move() # Show fps show_fps(clock, self.window) #message_display(f"dodged: {dodged}" , 70 , 15 ,25, white , self.window) hitbox = player.get_hitbox() # draw the player healthbar draw_healthbar(self.window, player.x, (hitbox[1] + hitbox[3]) + 15, health, 10) # check if player is out of bounds if player.x > width - carw or player.x < 0: self.Crash() for bullet in enem_bullets: hit = bullet.get_hitbox() pl_bullet_col = self.detect_collisions(hitbox, hit) if pl_bullet_col: health -= 10 enem_bullets.pop(enem_bullets.index(bullet)) # bullet collision for enemy in Enem: # enemy hitbox enem_hitbox = enemy.get_hitbox() collsion = self.detect_collisions(hitbox, enem_hitbox) # player collsion if collsion: # check if player health is Zero or below if health <= 0: self.Crash() else: enemy.y = 0 - enemy.h enemy.x = random.randrange(0, width) health -= 10 for bullet in bullets: bullet_hitbox = bullet.get_hitbox() # collision detection function collsion_bullet = self.detect_collisions( bullet_hitbox, enem_hitbox) pl_col = self.detect_collisions(hitbox, bullet_hitbox) if collsion_bullet: # reset enemy position enemy.y = 0 - enemy.h enemy.x = random.randrange(0, width) bullets.pop(bullets.index(bullet)) pygame.display.update() clock.tick()