Python小游戏(并夕夕版飞机大战)
生活随笔
收集整理的這篇文章主要介紹了
Python小游戏(并夕夕版飞机大战)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
源碼分享:
import sys import cfg import pygame from modules import *'''游戲界面''' def GamingInterface(num_player, screen):# 初始化pygame.mixer.music.load(cfg.SOUNDPATHS['Cool Space Music'])pygame.mixer.music.set_volume(0.4)pygame.mixer.music.play(-1)explosion_sound = pygame.mixer.Sound(cfg.SOUNDPATHS['boom'])fire_sound = pygame.mixer.Sound(cfg.SOUNDPATHS['shot'])font = pygame.font.Font(cfg.FONTPATH, 20)# 游戲背景圖bg_imgs = [cfg.IMAGEPATHS['bg_big'], cfg.IMAGEPATHS['seamless_space'], cfg.IMAGEPATHS['space3']]bg_move_dis = 0bg_1 = pygame.image.load(bg_imgs[0]).convert()bg_2 = pygame.image.load(bg_imgs[1]).convert()bg_3 = pygame.image.load(bg_imgs[2]).convert()# 玩家, 子彈和小行星精靈組player_group = pygame.sprite.Group()bullet_group = pygame.sprite.Group()asteroid_group = pygame.sprite.Group()# 產(chǎn)生小行星的時間間隔asteroid_ticks = 90for i in range(num_player):player_group.add(Ship(i+1, cfg))clock = pygame.time.Clock()# 分數(shù)score_1, score_2 = 0, 0# 游戲主循環(huán)while True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()# --玩家一: ↑↓←→控制, j射擊; 玩家二: wsad控制, 空格射擊pressed_keys = pygame.key.get_pressed()for idx, player in enumerate(player_group):direction = Noneif idx == 0:if pressed_keys[pygame.K_UP]:direction = 'up'elif pressed_keys[pygame.K_DOWN]:direction = 'down'elif pressed_keys[pygame.K_LEFT]:direction = 'left'elif pressed_keys[pygame.K_RIGHT]:direction = 'right'if direction:player.move(direction)if pressed_keys[pygame.K_j]:if player.cooling_time == 0:fire_sound.play()bullet_group.add(player.shot())player.cooling_time = 20elif idx == 1:if pressed_keys[pygame.K_w]:direction = 'up'elif pressed_keys[pygame.K_s]:direction = 'down'elif pressed_keys[pygame.K_a]:direction = 'left'elif pressed_keys[pygame.K_d]:direction = 'right'if direction:player.move(direction)if pressed_keys[pygame.K_SPACE]:if player.cooling_time == 0:fire_sound.play()bullet_group.add(player.shot())player.cooling_time = 20if player.cooling_time > 0:player.cooling_time -= 1if (score_1 + score_2) < 500:background = bg_1elif (score_1 + score_2) < 1500:background = bg_2else:background = bg_3# --向下移動背景圖實現(xiàn)飛船向上移動的效果screen.blit(background, (0, -background.get_rect().height + bg_move_dis))screen.blit(background, (0, bg_move_dis))bg_move_dis = (bg_move_dis + 2) % background.get_rect().height# --生成小行星if asteroid_ticks == 0:asteroid_ticks = 90asteroid_group.add(Asteroid(cfg))else:asteroid_ticks -= 1# --畫飛船for player in player_group:if pygame.sprite.spritecollide(player, asteroid_group, True, None):player.explode_step = 1explosion_sound.play()elif player.explode_step > 0:if player.explode_step > 3:player_group.remove(player)if len(player_group) == 0:returnelse:player.explode(screen)else:player.draw(screen)# --畫子彈for bullet in bullet_group:bullet.move()if pygame.sprite.spritecollide(bullet, asteroid_group, True, None):bullet_group.remove(bullet)if bullet.player_idx == 1:score_1 += 1else:score_2 += 1else:bullet.draw(screen)# --畫小行星for asteroid in asteroid_group:asteroid.move()asteroid.rotate()asteroid.draw(screen)# --顯示分數(shù)score_1_text = '玩家一得分: %s' % score_1score_2_text = '玩家二得分: %s' % score_2text_1 = font.render(score_1_text, True, (0, 0, 255))text_2 = font.render(score_2_text, True, (255, 0, 0))screen.blit(text_1, (2, 5))screen.blit(text_2, (2, 35))# --屏幕刷新pygame.display.update()clock.tick(60)'''主函數(shù)''' def main():pygame.init()pygame.font.init()pygame.mixer.init()screen = pygame.display.set_mode(cfg.SCREENSIZE)pygame.display.set_caption('飛機大戰(zhàn) —— 九歌')num_player = StartInterface(screen, cfg)if num_player == 1:while True:GamingInterface(num_player=1, screen=screen)EndInterface(screen, cfg)else:while True:GamingInterface(num_player=2, screen=screen)EndInterface(screen, cfg)'''run''' if __name__ == '__main__':main()祝大家玩得開心,歡迎點贊、關(guān)注、評論,歡迎一健三聯(lián)。
總結(jié)
以上是生活随笔為你收集整理的Python小游戏(并夕夕版飞机大战)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python小游戏(打地鼠)
- 下一篇: Python小游戏(24点小游戏)