教表弟用Python写了个“飞机大战”游戏!表弟:可以拜你为师吗?
今天由于小编我生病,于是在家休息。刚好我表弟来我家里玩!由于太无聊了,就顺便教他写个"飞机大战"的游戏!还不错,他玩的也挺开心,哈哈哈。如果有想要源码的小伙伴们可以找我要!
操作环境
- 操作系统:windows10
- python版本:python 3.7
- 使用模块:os,sys,random,pygame
Python有过基础的都知道,我们在做游戏的时候,会用到一个模块:pygame ! 小白需要注意的是:没有的先 pip install 一下!
具体实现
1:首先我们需要准备游戏中界面所需要的飞机和场景图片!
2:我们初始化pygame,界面设计,绘制游戏屏幕,一些前期准备做足!如:
........... ........... ........... 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系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。
相关推荐
zhangpan 2019-11-09
Fangxingt 2019-10-17
LodbkMi 2019-04-24
lijiexiaoge 2019-06-28
寒冬玉 2015-10-16
CJYD 2014-12-01
guizhongyun 2014-11-25
JewelCCL 2014-11-24
pingqingbo 2014-11-20
georgeandgeorge 2018-07-15
鹤之淇水 2019-04-03
山顶冻人 2019-04-24
cz0 2019-03-12
Wonder的学习 2018-12-10
YangjingLi 2018-10-29
弗泽智能 2018-10-26
deepSTEM 2019-01-16