教表弟用Python写了个“飞机大战”游戏!表弟(可以拜你为师吗())
今天由于我生病,于是在家休息。刚好我表弟来我家里玩!由于太无聊了,就顺便教他写个"飞机大战"的游戏!还不错,他玩的也挺开心,哈哈哈。如果有想要源码的小伙伴们可以找我要!
文章图片
操作环境 操作系统:windows10
python版本:python 3.7
使用模块:os,sys,random,pygame
Python有过基础的都知道,我们在做游戏的时候,会用到一个模块:pygame ! 小白需要注意的是:没有的先 pip install 一下!
具体实现 1:首先我们需要准备游戏中界面所需要的飞机和场景图片!
文章图片
2:我们初始化pygame,界面设计,绘制游戏屏幕,一些前期准备做足!如:
遇到问题没人解答?小编创建了一个Python学习交流QQ群:895817687 寻找有志同道合的小伙伴,
互帮互助,群里还有不错的视频学习教程和PDF电子书!
...........
...........
...........
pygame.init() # 初始化pygame
# 使用pygame.display.set_mode()绘制游戏屏幕
screen = pygame.display.set_mode((512, 768))
# 使用pygame.time.Clock创建一个时钟对象
clock = pygame.time.Clock() # 创建一个时钟(后面刷新帧率时会用到)
pygame.time.set_timer(CREATE_ENEMY, 400) # 定时创建敌军,计量毫秒
pygame.time.set_timer(CREATE_BULLET, 500) # 定时创建子弹
pygame.time.set_timer(CREATE_BOMB, random.randint(10000, 50000))
hero = Hero() # 创建一个英雄
hero_group = pygame.sprite.Group(hero) # 英雄精灵组
enemy_group = pygame.sprite.Group() # 敌军精灵组
bullet_group = pygame.sprite.Group() # 子弹精灵组
bomb_group = pygame.sprite.Group() # 炸弹精灵组
font1 = pygame.font.Font("./images/SIMHEI.TTF", 40) # 设置字体样式
font2 = pygame.font.Font("./images/SIMHEI.TTF", 25)
bomb_num = 0 # 炸弹数量
bj_num = 1 # 背景图片的初始值,更换背景
FLAG = False # 游戏事件标识
score = False
while True:
game_text = font1.render("飞机大战 ", 1, (220, 36, 194)) # 文本显示,抗锯齿,RGB
start_text = font1.render("按下Enter 开始游戏! ", 1, (35, 221, 100))
bj_text = font1.render("←→键更换游戏背景 ", 1, (39, 187, 217))
for event in pygame.event.get(): # 获取事件信息
if event.type == pygame.KEYDOWN and event.key == pygame.K_RETURN:
FLAG = True
elif event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT:
bj_num += 1
if bj_num > 5:
bj_num = 1
elif event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT:
bj_num -= 1
if bj_num < 1:
bj_num = 5
elif event.type == pygame.QUIT:
exit()
bj1 = BackGround(bj_num=bj_num) # 进入游戏的背景
bj2 = BackGround(True, bj_num=bj_num) # 开始等于True的背景
bj_group = pygame.sprite.Group(bj1, bj2)
bj_group.draw(screen) # 绘制界面
............
............
............
文章图片
3:功能上的实现:英雄与敌军碰撞时同是消除!当英雄与敌军碰撞时替换爆炸效果图片!绘制分数!绘制炸弹显示子弹,与敌机碰撞时消除等等!
# 子弹与敌机碰撞时消除
score += len(pygame.sprite.groupcollide(bullet_group, enemy_group, True, True)) # score分数 collide碰撞
enemies = pygame.sprite.spritecollide(hero, enemy_group, True) # 英雄与敌军碰撞时同是消除
# bomb_num += len(pygame.sprite.spritecollide(hero, bomb_group, True))
if len(enemies) > 0:
hero.image = pygame.image.load("./images/image 12.png") # 当英雄与敌军碰撞时替换爆炸效果图片
hero_group.draw(screen)
pygame.display.update()
hero.kill()
exit()
bj_group.update() # 更新所有精灵
bullet_group.update()
enemy_group.update()
hero_group.update()
bomb_group.update()
bj_group.draw(screen) # 绘制精灵到界面
enemy_group.draw(screen)
bullet_group.draw(screen)
hero_group.draw(screen)
bomb_group.draw(screen)
screen.blit(start_text, (10, 10)) # 绘制炸弹显示
screen.blit(score_text, (10, 40)) # 绘制分数
pygame.display.update() # 刷新界面
【教表弟用Python写了个“飞机大战”游戏!表弟(可以拜你为师吗())】
文章图片
或许做的不是很完美,后期都是可以不断优化的!喜欢的小哥哥小姐姐,想要的可以评论!
推荐阅读
- 游戏|低调使用!Python这个技能比开挂还爽!
- SpringBoot集成使用Redis及搭建过程
- 最佳实战|如何使用腾讯云微搭从0到1开发企业门户应用
- 用JSP写商品表
- vscode|windows操作系统下用vscode写C++
- 举个栗子-Tableau|举个栗子~Tableau 技巧(219)(用浏览器提取 .twbx 文件中的形状)
- 汇聚优质AR应用开发者,技术助力AR领域繁荣生态
- 有道技术团队|有道词典Flutter架构与应用
- 漫谈生活|碎碎念--2022,请多指教
- 调用华为Order服务验证购买Token接口时返回Connection reset