def level11(win, money): print( "rmervmeivmiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii" ) # __________________________БЛОК ПЕРЕМЕННЫХ начинается___________________________ player = Player() coins = [] exampleCoin = Coin(1, 1) exampleCoin.image = pygame.transform.scale(exampleCoin.image, (25, 25)) exampleCoin.rect.center = [20, 20] event = 0 enemies = [] exampleEnemy = EnemyAircraft(270, 1, 10) enemiesBullets = [] for e in range(3): enemies.append(EnemyAircraft(270, 1, 1)) enemiesBullets.append([]) enemies[1].vel = 2 [enemies[0].rect.centerx, enemies[0].rect.centery] = [WIDHT // 4, -10] [enemies[1].rect.centerx, enemies[1].rect.centery] = [WIDHT // 2, -10] [enemies[2].rect.centerx, enemies[2].rect.centery] = [WIDHT * 3 // 4, -10] playerBullets = [] numberbgCadr = 0 intervalPlayerSnaryad = 0 intervalEnemySnaryad = 0 intervalCoin = 0 intervalCoin2 = 0 intervalPause12 = 0 intervalPause23 = 0 global numberCoinImg numberCoinImg = 1 global numberCoinImg2 numberCoinImg2 = 1 playerTimerSnaryad = True enemiesTimerSnaryad = True mouseCoords = [] clock = pygame.time.Clock() rightleftGun = 30 constantShooting = -1 global player_live player_live = 3 hearts = [] for staff2 in range(player_live): hearts.append(Heart(staff2)) hearts[staff2].centerx = WIDHT - 25 - staff2 * 35 hearts[staff2].centery = 25 pause = False restart = False allEnemiesZero = False font_name = pygame.font.match_font('Comic Sans MS') # __________________________БЛОК ПЕРЕМЕННЫХ закончился___________________________ # __________________________БЛОК ФУНКЦИЙ начинается___________________________ def draw_text(surf, text, size, x, y): font = pygame.font.Font(font_name, size) text_surface = font.render(text, True, WHITE) text_rect = text_surface.get_rect() text_rect.midtop = (x, y) surf.blit(text_surface, text_rect) def game_over(): """Функция для вывода надписи Game Over и результатов в случае завершения игры и выход из игры""" play_surface = pygame.display.set_mode((500, 650)) bg = pygame.image.load('sprites/gameover_bg.jpg') play_surface.blit(bg, (0, 0)) pygame.display.set_caption('Shooter') draw_text(play_surface, str('Game over'), 72, WIDHT // 2, HEIGHT // 2 - 200) play_surface.blit(exampleCoin.image, exampleCoin.rect) draw_text(play_surface, str(money), 20, 60, 11) draw_text(play_surface, str(money), 50, WIDHT // 2, HEIGHT // 2 - 50) pygame.display.flip() time.sleep(3) pygame.quit() os.sys.exit() # функция получения названия картинки фона по номеру def winner(): play_surface = pygame.display.set_mode((500, 650)) pygame.display.set_caption('Shooter') bg = pygame.image.load('sprites/winner_bg.jpg') play_surface.blit(bg, (0, 0)) draw_text(play_surface, str('You win!'), 72, WIDHT // 2, HEIGHT // 2 - 200) play_surface.blit(exampleCoin.image, exampleCoin.rect) draw_text(play_surface, str(money), 20, 60, 11) draw_text(play_surface, str(money), 50, WIDHT // 2, HEIGHT // 2 - 50) draw_text(play_surface, str('press \'Esc\' to exit...'), 10, WIDHT // 2, HEIGHT - 40) pygame.display.flip() winner = True while winner: keys = pygame.key.get_pressed() for event in pygame.event.get(): if event.type == pygame.QUIT: os.sys.exit() if keys[pygame.K_ESCAPE]: winner = False pygame.quit() os.sys.exit() def bgCadr(i): i = str(i) while len(i) < 4: i = '0' + i return ('bg/Видеофон Звёздное небо ' + i + '.jpg') def pausedddd(): nonlocal pause nonlocal restart play_surface = pygame.display.set_mode((500, 650)) pygame.display.set_caption('Shooter') bg = pygame.image.load('sprites/pause_bg.jpg') play_surface.blit(bg, (0, 0)) while pause or not restart: keys = pygame.key.get_pressed() for event in pygame.event.get(): if event.type == pygame.QUIT: os.sys.exit() if keys[pygame.K_r]: restart = True if keys[pygame.K_p]: pause = False break draw_text(play_surface, str('Pause...'), 72, WIDHT // 2, HEIGHT // 2 - 200) play_surface.blit(exampleCoin.image, exampleCoin.rect) draw_text(play_surface, str(money), 20, 60, 11) draw_text(play_surface, str(money), 50, WIDHT // 2, HEIGHT // 2 - 50) draw_text(play_surface, str('press \'R\' to restart game...'), 10, WIDHT // 2, HEIGHT - 40) for staff2 in range(player_live): win.blit(hearts[staff2].image, hearts[staff2].rect) pygame.display.flip() pygame.display.update() # функция обновления экрана def drawWindow(win): bg = pygame.image.load(bgCadr(numberbgCadr)) win.blit(bg, (0, 0)) for playerBullet in playerBullets: win.blit(playerBullet.image, playerBullet.rect) for coin in coins: if coin.imageInd == 1: coin.image = pygame.image.load('sprites/coin' + str(coin.imageInd) + '/coin' + str(numberCoinImg) + '.png') elif coin.imageInd == 2: coin.image = pygame.image.load('sprites/coin' + str(coin.imageInd) + '/coin' + str(numberCoinImg2) + '.png') win.blit(coin.image, coin.rect) for enemy in enemies: enemyBullets = enemiesBullets[enemies.index(enemy)] for enemyBullet in enemyBullets: win.blit(enemyBullet.image, enemyBullet.rect) if type(enemy) == type(exampleEnemy): win.blit(enemy.image, enemy.rect) win.blit(player.image, player.rect) for staff2 in range(player_live): win.blit(hearts[staff2].image, hearts[staff2].rect) draw_text(win, str(money), 20, 60, 11) win.blit(exampleCoin.image, exampleCoin.rect) pygame.display.update() # двигаю снаряды врагов и удаляю улетевшие def movingEnemiesBullets(): for enemy in enemies: enemyBullets = enemiesBullets[enemies.index(enemy)] for enemyBullet in enemyBullets: if inWindow(enemyBullet) == 1: enemyBullet.rect.centery += enemyBullet.vel * \ (-round(sin(enemyBullet.angle*pi/180), 3)) enemyBullet.rect.centerx += enemyBullet.vel * \ (round(cos(enemyBullet.angle*pi/180), 3)) else: enemyBullets.pop(enemyBullets.index(enemyBullet)) # двигаю снаряды игрока и удаляю улетевшие def movingPlayerBullets(): for playerBullet in playerBullets: if inWindow(playerBullet) == 1: delta = round(random.random()) playerBullet.rect.centery -= playerBullet.vel + delta * 3 playerBullet.rect.bottom -= playerBullet.vel + delta * 3 else: playerBullets.pop(playerBullets.index(playerBullet)) # обработка поражения врагов пулями def defeatOfEnemies(): realEnemies = [] for enemy in enemies: if type(enemy) == type(exampleEnemy): realEnemies.append(enemy) enemiesGroup = pygame.sprite.Group(realEnemies) playerBulletsGroup = pygame.sprite.Group(playerBullets) hits = pygame.sprite.groupcollide(enemiesGroup, playerBulletsGroup, True, True) for hit in hits: if hit: if allEnemiesZero == False: imageInd = 1 coins.append(Coin(numberCoinImg, imageInd)) coins[len(coins) - 1].rect.center = enemies[enemies.index( hit)].rect.center coins[len(coins) - 1].image = pygame.image.load('sprites/coin' + str(imageInd) + '/coin' + str(numberCoinImg) + '.png') elif allEnemiesZero == True and iteration3 == False: imageInd = 2 coins.append(Coin(numberCoinImg, imageInd)) coins[len(coins) - 1].rect.center = enemies[enemies.index( hit)].rect.center coins[len(coins) - 1].image = pygame.image.load('sprites/coin' + str(imageInd) + '/coin' + str(numberCoinImg) + '.png') enemies[enemies.index(hit)] = 0 def takeCoins(): nonlocal money for coin in coins: distance = (coin.rect.centerx - player.rect.centerx)**2 + \ (coin.rect.centery - player.rect.centery)**2 if distance <= 25**2: if coin.imageInd == 1: coins.pop(coins.index(coin)) money += 1 elif coin.imageInd == 2: coins.pop(coins.index(coin)) money += 2 # обработка поражения игрока пулями def defeatOfPlayer(): global player_live for enemy in enemies: enemyBullets = enemiesBullets[enemies.index(enemy)] for enemyBullet in enemyBullets: # обработка столкновения врагов с игроком distance = (enemyBullet.rect.centerx - player.rect.centerx)**2 + \ (enemyBullet.rect.centery - player.rect.centery)**2 if distance <= 25**2: enemyBullets.pop(enemyBullets.index(enemyBullet)) # уничтожение пули player_live -= 1 if player_live <= 0: time.sleep(0) print('Game over') print(player_live) game_over() def inWindow(sprite): if sprite.rect.left > WIDHT or sprite.rect.right < 0 or sprite.rect.top > HEIGHT or sprite.rect.bottom < 0: return (0) else: return (1) # __________________________БЛОК ФУНКЦИЙ закончился________________________ # __________________________ОСНОВНОЙ БЛОК начинается___________________________ # __________________________итерация 1_________________________________ i = 1 while not allEnemiesZero: clock.tick(45) intervalPlayerSnaryad += 1 intervalEnemySnaryad += 1 intervalCoin += 1 # счетчик для анимированного фона if numberbgCadr < 7325: numberbgCadr += 1 else: numberbgCadr = 0 movingEnemiesBullets() movingPlayerBullets() takeCoins() defeatOfEnemies() defeatOfPlayer() # обработка некоторых клавиш (выхода и постоянной стрельбы) events = pygame.event.get() keys = pygame.key.get_pressed() for event in events: if event.type == pygame.QUIT: os.sys.exit() if keys[pygame.K_e]: os.sys.exit(0) if keys[pygame.K_c]: constantShooting *= -1 if keys[pygame.K_p]: pause = True pausedddd() # движение игрока за стрелкой if event.type == pygame.MOUSEMOTION: [player.rect.centerx, player.rect.centery] = event.pos mouseCoords = event.pos # движение врагов staff1 = 0 for enemy in enemies: if type(enemy) == type(exampleEnemy): if inWindow(enemy) == 1: enemy.rect.centery += enemy.vel * \ (-sin(enemy.angle*pi/180)) enemy.rect.centerx += enemy.vel * \ cos(enemy.angle*pi/180) # обработка столкновения врагов с игроком distance = (enemy.rect.centerx - player.rect.centerx)**2 + \ (enemy.rect.centery - player.rect.centery)**2 if distance <= 30**2: time.sleep(0) print('Game over') print(player_live) game_over() else: enemy = 0 staff1 += 1 else: staff1 += 1 if staff1 == 3: allEnemiesZero = True # UPDATE - СОЗДАНИЕ ПУЛЬ стрельба врагов if enemiesTimerSnaryad == True: for enemy in enemies: if type(enemy) == type(exampleEnemy): enemyBullets = enemiesBullets[enemies.index(enemy)] enemyBullets.append(Bullet(enemy.angle, 1, 6)) enemyBullets[len(enemyBullets) - 1].rect.centerx = enemy.rect.centerx enemyBullets[len(enemyBullets) - 1].rect.centery = enemy.rect.centery enemiesTimerSnaryad = False # стрельба игрока if keys[pygame. K_f] or event.type == pygame.MOUSEBUTTONDOWN or constantShooting > 0: if playerTimerSnaryad == True: playerBullets.append(Bullet(90, 2, 20)) playerBullets[len(playerBullets) - 1].rect.centerx = mouseCoords[0] - rightleftGun playerBullets[len(playerBullets) - 1].rect.centery = mouseCoords[1] rightleftGun *= -1 playerTimerSnaryad = False drawWindow(win) # проверка счетчика интервала между пулями if intervalPlayerSnaryad >= 5: playerTimerSnaryad = True intervalPlayerSnaryad = 0 if intervalEnemySnaryad >= 30: enemiesTimerSnaryad = True intervalEnemySnaryad = 0 if intervalCoin >= 5 and numberCoinImg < 6: numberCoinImg += 1 intervalCoin = 0 elif numberCoinImg >= 6: numberCoinImg = 1 #allEnemiesZero = True # __________________итерация 2_________________________________________ allEnemiesZero = True intervalEnemySnaryad = 9 enemiesTimerSnaryad = True iteration3 = False enemy1Count = 0 enemy2Count = 0 """ """ # """ enemies = [] enemiesBullets = [] for e in range(3): enemies.append(EnemyAircraft(270, 1, 1)) enemiesBullets.append([]) enemies[1].vel = 2 [enemies[0].rect.centerx, enemies[0].rect.centery] = [WIDHT // 4, -10] [enemies[1].rect.centerx, enemies[1].rect.centery] = [WIDHT // 2, -10] [enemies[2].rect.centerx, enemies[2].rect.centery] = [WIDHT*3 // 4, -10] enemiesBullets = [] for e in range(3): enemies.append(EnemyAircraft(270, 1, 1)) enemiesBullets.append([]) enemies[1].vel = 2 [enemies[0].rect.centerx, enemies[0].rect.centery] = [WIDHT // 4, -10] [enemies[1].rect.centerx, enemies[1].rect.centery] = [WIDHT // 2, -10] [enemies[2].rect.centerx, enemies[2].rect.centery] = [WIDHT*3 // 4, -10] """ exampleEnemy = EnemyAircraft(270, 1, 1) enemies = [] enemiesBullets = [] while intervalPause12 <= 100: intervalPause12 += 1 intervalCoin += 1 takeCoins() # обработка некоторых клавиш (выхода и постоянной стрельбы) events = pygame.event.get() keys = pygame.key.get_pressed() for event in events: if event.type == pygame.QUIT: os.sys.exit() if keys[pygame.K_e]: os.sys.exit(0) if keys[pygame.K_c]: constantShooting *= -1 if keys[pygame.K_p]: pause = True pausedddd() # движение игрока за стрелкой if event.type == pygame.MOUSEMOTION: [player.rect.centerx, player.rect.centery] = event.pos mouseCoords = event.pos movingPlayerBullets() if intervalCoin >= 5 and numberCoinImg < 6: numberCoinImg += 1 intervalCoin = 0 elif numberCoinImg >= 6: numberCoinImg = 1 drawWindow(win) enemies.append(EnemyAircraft(0, 2, 10, 2)) enemiesBullets.append([]) [enemies[0].rect.centerx, enemies[0].rect.centery] = [0, WIDHT // 2] enemies.append(EnemyAircraft(-90, 2, 10, 1.3, 10)) enemies[len(enemies) - 1].image_copy = enemies[len(enemies) - 1].image enemiesBullets.append([]) [ enemies[len(enemies) - 1].rect.centerx, enemies[len(enemies) - 1].rect.centery ] = [WIDHT // 3, 0] # # # здесь должен быть код с созданием врагов второй итерации # # playerBullets = [] # while not iteration3: clock.tick(45) intervalPlayerSnaryad += 1 intervalEnemySnaryad += 1 intervalCoin2 += 1 intervalCoin += 1 # счетчик для анимированного фона if numberbgCadr < 7325: numberbgCadr += 1 else: numberbgCadr = 0 movingEnemiesBullets() movingPlayerBullets() takeCoins() defeatOfEnemies() defeatOfPlayer() """ staff1 = 0 for enemy in enemies: if type(enemy) == type(exampleEnemy): enemy.rect.centery += enemy.vel * \ (-sin(enemy.angle*pi/180)) enemy.rect.centerx += enemy.vel * \ cos(enemy.angle*pi/180) # обработка столкновения врагов с игроком distance = (enemy.rect.centerx - player.rect.centerx)**2 + \ (enemy.rect.centery - player.rect.centery)**2 if distance <= 30**2: time.sleep(0) print('Game over') print(player_live) game_over() else: staff1 += 1 if staff1 == 3: allEnemiesZero = True """ for enemy in enemies: if type(enemy) == type(exampleEnemy): if enemies.index(enemy) == 0: enemy.rect.centery += enemy.vel * \ (-round(sin(enemy.angle*pi/180), 3)) enemy.rect.centerx += enemy.vel * \ (round(cos(enemy.angle*pi/180), 3)) enemy.rotate() distance = (enemy.rect.centerx - player.rect.centerx)**2 + \ (enemy.rect.centery - player.rect.centery)**2 if inWindow(enemy) == 0: enemies[0] = EnemyAircraft(0, 2, 10, 2) [enemies[0].rect.centerx, enemies[0].rect.centery] = [0, WIDHT // 2] enemy1Count += 1 if enemy1Count == 3: enemies[0] = 0 elif enemies.index(enemy) == 1: enemy.rect.centery += enemy.vel * \ (-round(sin(enemy.angle*pi/180), 3)) enemy.rect.centerx += enemy.vel * \ (round(cos(enemy.angle*pi/180), 3)) enemy.rotate() distance = (enemy.rect.centerx - player.rect.centerx)**2 + \ (enemy.rect.centery - player.rect.centery)**2 if inWindow(enemy) == 0: enemies[len(enemies) - 1] = EnemyAircraft( -90, 2, 10, 1.3, 10) enemies[len(enemies) - 1].image_copy = enemies[len(enemies) - 1].image [ enemies[len(enemies) - 1].rect.centerx, enemies[len(enemies) - 1].rect.centery ] = [WIDHT // 4, 0] enemy2Count += 1 if enemy2Count == 3: enemies[1] = 0 if distance <= 30**2: time.sleep(0) print('Game over') print(player_live) game_over() # # # # # # # здесь будет функция с движением игроков второй итерации # # # обработка некоторых клавиш (выхода и постоянной стрельбы) events = pygame.event.get() keys = pygame.key.get_pressed() for event in events: if event.type == pygame.QUIT: os.sys.exit() if keys[pygame.K_e]: os.sys.exit(0) if keys[pygame.K_c]: constantShooting *= -1 if keys[pygame.K_p]: pause = True pausedddd() # движение игрока за стрелкой if event.type == pygame.MOUSEMOTION: [player.rect.centerx, player.rect.centery] = event.pos mouseCoords = event.pos # UPDATE - СОЗДАНИЕ ПУЛЬ стрельба врагов if enemiesTimerSnaryad == True: for enemy in enemies: if type(enemy) == type(exampleEnemy): enemyBullets = enemiesBullets[enemies.index(enemy)] enemyBullets.append(Bullet(enemy.angle, 1, 15)) enemyBullets[len(enemyBullets) - 1].rect.centerx = enemy.rect.centerx enemyBullets[len(enemyBullets) - 1].rect.centery = enemy.rect.centery enemiesTimerSnaryad = False # стрельба игрока if keys[pygame. K_f] or event.type == pygame.MOUSEBUTTONDOWN or constantShooting > 0: if playerTimerSnaryad == True: playerBullets.append(Bullet(pi / 2, 2, 20)) playerBullets[len(playerBullets) - 1].rect.centerx = mouseCoords[0] - rightleftGun playerBullets[len(playerBullets) - 1].rect.centery = mouseCoords[1] rightleftGun *= -1 playerTimerSnaryad = False drawWindow(win) # проверка счетчика интервала между пулями if intervalPlayerSnaryad >= 7: playerTimerSnaryad = True intervalPlayerSnaryad = 0 if intervalEnemySnaryad >= 3: enemiesTimerSnaryad = True intervalEnemySnaryad = 0 if intervalCoin >= 5 and numberCoinImg < 6: numberCoinImg += 1 intervalCoin = 0 elif numberCoinImg >= 6: numberCoinImg = 1 if intervalCoin2 >= 20 and numberCoinImg2 < 6: numberCoinImg2 += 1 intervalCoin2 = 0 elif numberCoinImg2 >= 6: numberCoinImg2 = 1 if (enemy1Count >= 3 or enemies[0] == 0) and (enemy2Count >= 3 or enemies[1] == 0): iteration3 = True enemies = [] enemiesBullets = [] while intervalPause23 <= 100: intervalPause23 += 1 intervalCoin += 1 takeCoins() # обработка некоторых клавиш (выхода и постоянной стрельбы) events = pygame.event.get() keys = pygame.key.get_pressed() for event in events: if event.type == pygame.QUIT: os.sys.exit() if keys[pygame.K_e]: os.sys.exit(0) if keys[pygame.K_c]: constantShooting *= -1 if keys[pygame.K_p]: pause = True pausedddd() # движение игрока за стрелкой if event.type == pygame.MOUSEMOTION: [player.rect.centerx, player.rect.centery] = event.pos mouseCoords = event.pos movingPlayerBullets() if intervalCoin >= 5 and numberCoinImg < 6: numberCoinImg += 1 intervalCoin = 0 elif numberCoinImg >= 6: numberCoinImg = 1 drawWindow(win) winner()
def fire_bullet(ai_settings, screen, ship, bullets): """Fire a bullet, if limit not reached yet.""" # Create a new bullet, add to bullets group. if len(bullets) < ai_settings.bullets_allowed: new_bullet = Bullet(ai_settings, screen, ship) bullets.add(new_bullet)
(enemy.rect.centery - player.rect.centery)**2 if distance <= 25**2: time.sleep(0) print('Game over') print(player_live) game_over() ##os.sys.exit(0) # стрельба врагов if enemiesTimerSnaryad == True: for enemy in enemies: if type(enemy) == type(exampleEnemy): enemyBullets = enemiesBullets[enemies.index(enemy)] enemyBullets.append( Bullet( 270, 2, pygame.image.load( os.path.join(os.path.dirname(__file__), 'sprites/enemyBullet.png')))) enemyBullets[len(enemyBullets) - 1].rect.centerx = enemy.rect.centerx enemyBullets[len(enemyBullets) - 1].rect.centery = enemy.rect.centery enemiesTimerSnaryad = False # стрельба игрока if keys[pygame. K_f] or event.type == pygame.MOUSEBUTTONDOWN or constantShooting > 0: if playerTimerSnaryad == True: playerBullets.append(Bullet()) playerBullets[len(playerBullets) - 1].rect.centerx = mouseCoords[0] - rightleftGun
last_key = None while True: # Eventos key = pygame.key.get_pressed() # Eventos # < Logica dt = clock.tick(FPS) / 1000.0 """Background color: cornflower (101, 156, 239)""" screen.fill(Color.BLACK) # screen.blit(background, Vec2.ZERO) Enemy.update(dt) Bullet.update(dt) player.update(dt) process.collision(player) process.keyboard(player, dt, key, last_key) # < Draw # Renderiza todos os sprites SpriteBase.group.draw(screen) Bullet.List.draw(screen) # Draw > pygame.display.flip() elapsed = clock.tick(FPS) last_key = key
def generalPart(player, playerBullets, enemies, enemiesBullets, exampleEnemy, constantShooting, intervalPlayerSnaryad, intervalEnemySnaryad, win, numberbgCadr, playerTimerSnaryad, mouseCoords, lastEvent): intervalPlayerSnaryad += 1 intervalEnemySnaryad += 1 # счетчик для анимированного фона if numberbgCadr < 7325: numberbgCadr += 1 else: numberbgCadr = 0 # двигаю снаряды врагов и удаляю улетевшие for enemy in enemies: enemyBullets = enemiesBullets[enemies.index(enemy)] for enemyBullet in enemyBullets: if enemyBullet.rect.centery < HEIGHT and enemyBullet.rect.centery >= 0 and type( enemy) == type(exampleEnemy): enemyBullet.rect.centery += (enemy.vel + enemyBullet.vel) * \ (-round(sin(enemyBullet.angle), 3)) # enemyBullet.rect.bottom += enemyBullet.vel*(-sin(enemy.Bullet.angle*pi/180)) + delta*3 enemyBullet.rect.centerx += (enemy.vel + enemyBullet.vel) * \ (round(cos(enemyBullet.angle), 3)) else: # удалил снаряд с индексом, который вылетел за границы enemyBullets.pop(enemyBullets.index(enemyBullet)) # двигаю снаряды игрока и удаляю улетевшие for playerBullet in playerBullets: if playerBullet.rect.centery < HEIGHT and playerBullet.rect.centery > 0: delta = round(random.random()) playerBullet.rect.centery -= playerBullet.vel + delta * 3 playerBullet.rect.bottom -= playerBullet.vel + delta * 3 else: # удалил снаряд с индексом, который вылетел за границы playerBullets.pop(playerBullets.index(playerBullet)) # обработка некоторых клавиш (выхода и постоянной стрельбы) keys = pygame.key.get_pressed() events = pygame.event.get() for event in events: if event.type == pygame.QUIT: os.sys.exit() if keys[pygame.K_e]: os.sys.exit(0) if keys[pygame.K_c] and event.type == pygame.KEYUP: constantShooting *= -1 if len(events) > 0: lastEvent = event # движение игрока за стрелкой if lastEvent.type == pygame.MOUSEMOTION and type(lastEvent) != type( int(3)): [player.rect.centerx, player.rect.centery] = lastEvent.pos mouseCoords = lastEvent.pos if keys[pygame.K_o]: pause = True pausedddd() # обработка поражения игрока пулями for enemy in enemies: enemyBullets = enemiesBullets[enemies.index(enemy)] enemyBulletsGroup = pygame.sprite.Group(enemyBullets) playerBulletsGroup = pygame.sprite.Group(player) hits = pygame.sprite.groupcollide(enemyBulletsGroup, playerBulletsGroup, True, True) for hit in hits: if hit: enemyBullets.pop(enemyBullets.index(hit)) # уничтожение пули player_live -= 1 if player_live < 0: time.sleep(0) print('Game over') print(player_live) game_over() # стрельба игрока if lastEvent.type == pygame.MOUSEBUTTONDOWN or keys[ pygame.K_f] or constantShooting > 0: if playerTimerSnaryad == True and len(playerBullets) > 0: playerBullets.append(Bullet(pi / 2, 2, 20)) playerBullets[len(playerBullets) - 1].rect.centerx = mouseCoords[0] - rightleftGun playerBullets[len(playerBullets) - 1].rect.centery = mouseCoords[1] rightleftGun *= -1 playerTimerSnaryad = False # проверка счетчика интервала между пулями if intervalPlayerSnaryad >= 2: playerTimerSnaryad = True intervalPlayerSnaryad = 0 if intervalEnemySnaryad >= 60: enemiesTimerSnaryad = True intervalEnemySnaryad = 0 drawWindow(win, bgCadr, numberbgCadr, playerBullets, enemies, enemiesBullets, exampleEnemy, player)
def create_bullet(self): if len(self.bullets) != TurretTetris.max_bullet_count: y, x = self.turret.get_position() bullet = Bullet((y - 1, x)) self.bullets.append(bullet)
while True: # Eventos key = pygame.key.get_pressed() # Eventos # < Logica dt = clock.tick(FPS)/1000.0 """Background color: cornflower (101, 156, 239)""" screen.fill(Color.BLACK) # screen.blit(background, Vec2.ZERO) Enemy.update(dt) Bullet.update(dt) player.update(dt) process.collision(player) process.keyboard(player, dt, key, last_key) # < Draw # Renderiza todos os sprites SpriteBase.group.draw(screen) Bullet.List.draw(screen) # Draw > pygame.display.flip() elapsed = clock.tick(FPS) last_key = key