源码分享:


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()# 产生小行星的时间间隔asteroid_ticks = 90for i in range(num_player):player_group.add(Ship(i+1, cfg))clock = pygame.time.Clock()# 分数score_1, score_2 = 0, 0# 游戏主循环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# --向下移动背景图实现飞船向上移动的效果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)# --显示分数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)'''主函数'''
def main():pygame.init()pygame.font.init()pygame.mixer.init()screen = pygame.display.set_mode(cfg.SCREENSIZE)pygame.display.set_caption('飞机大战 —— 九歌')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()

祝大家玩得开心,欢迎点赞、关注、评论,欢迎一健三联。

Python小游戏(并夕夕版飞机大战)相关推荐

  1. html+javascript实现的网页版飞机大战小游戏源码

    html+javascript实现的网页版飞机大战小游戏源码 完整代码下载地址: html+javascript实现的网页版飞机大战小游戏源码 index.html <!DOCTYPE html ...

  2. 13个Python小游戏,可以上班摸鱼玩了一天

    1.吃金币 源码分享: import os import cfg import sys import pygame import random from modules import *'''游戏初始 ...

  3. 边玩边学,13个 Python 小游戏真有趣啊(含源码)

    经常听到有朋友说,学习编程是一件非常枯燥无味的事情.其实,大家有没有认真想过,可能是我们的学习方法不对? 比方说,你有没有想过,可以通过打游戏来学编程? 今天我想跟大家分享几个Python小游戏,教你 ...

  4. python小游戏,上班摸鱼不无聊

    1,吃金币 源码分享 import os import cfg import sys import pygame import random from modules import *'''游戏初始化 ...

  5. 分享30个有趣的 Python小游戏,我能玩一天

    大家好,今天给大家带来30个 Python 小游戏,喜欢记得点赞.一定要收藏,完整版代码,文末获取 文章目录 有手就行 1.吃金币 2.打乒乓 3.滑雪 4.并夕夕版飞机大战 5.打地鼠 简简单单 6 ...

  6. 分享30个有趣的 Python小游戏,我能玩一天(附源码)

    大家好,今天给大家带来30个 Python 小游戏,喜欢记得点赞.一定要收藏! 文章目录 有手就行 1.吃金币 2.打乒乓 3.滑雪 4.并夕夕版飞机大战 5.打地鼠 简简单单 6.小恐龙 7.消消乐 ...

  7. 30个Python小游戏,小白练手,我都能玩一天

    大家好,我是雨雨~ 今天给大家带来30个py小游戏,一定要收藏! 全部源码都整理好了 小游戏源码腾讯文档-在线文档https://docs.qq.com/doc/DRnZDTnFGVUFMc3FL 有 ...

  8. 边玩边学,13个Python小游戏(含源码)

    经常听到有朋友说,学习编程是一件非常枯燥无味的事情.其实,大家有没有认真想过,可能是我们的学习方法不对? 比方说,你有没有想过,可以通过打游戏来学编程? 今天我想跟大家分享几个Python小游戏,教你 ...

  9. 13个Python小游戏,今天上班摸鱼玩了一天

    1.吃金币 源码分享: import os import cfg import sys import pygame import random from modules import *'''游戏初始 ...

  10. python小游戏之三

    猜拳游戏 Python代码实现猜拳小游戏 Python代码实现猜拳小游戏_zhangtongyuan0909的博客-CSDN博客_python猜拳游戏代码 用python中类与对象写一个猜拳游戏 用p ...

最新文章

  1. 控制ftp访问时间段
  2. [architecture]-AMBA AXI AHB APB学习总结
  3. [ATF]-ATF的异常向量表介绍-(irq,fiq,smc,hyc...)
  4. 图像拾取点_10分钟看懂Photoshop 照片修饰(用“消失点”滤镜编辑照片)
  5. POJ 3264 Balanced Lineup【线段树区间查询求最大值和最小值】
  6. Redmine性能测试
  7. 怎么把一个Java应用打包成Docker镜像
  8. (15) 常用管理类软件需求征集 -- 通用菜单模块管理
  9. JS 中的== 与 ===
  10. 123 Python程序中的线程操作-协程
  11. 剑指offer---数组中重复的数字
  12. USB存储、光驱等外设被禁用了,网络共享被禁用了,还要共享文件怎么办?
  13. java输入年月输出日历_java输入年份打印该年份的年历 | 学步园
  14. windows.2003.应用网络负载平衡管理器实现均衡负载与双机热备
  15. 数字图像处理第二次试验:图像增强
  16. 网络概念- VXLAN技术详解
  17. excel学习-日期计算函数DATEDIF函数(计算相隔年数、月数、天数)
  18. 解决电脑软件可以上网,但是浏览器无法上网的问题
  19. openstack nova基础知识——libvirt和qemu(2)
  20. Pycharm添加默认头注释方法

热门文章

  1. mfc 监控文件操作_mfc是什么
  2. python scikit learn 封装_python的scikit-learn的主要模块和基本使用
  3. WebDriver自动化测试工具(3)---PhantomJS的使用
  4. 2017.3.20上午
  5. javascript注意点(1)
  6. commonJS — 全局操作(for Window)
  7. Fragment Summary 2/2
  8. OpenWrt安装迅雷成功,实现BT emule等多协议下载
  9. fft快速傅利叶变的C实现
  10. Android socket 学习记录 之 执行new socket(ip, port)程序崩溃