python实现微信小游戏“飞机大战”

简介: python实现微信小游戏“飞机大战”

以前版本的微信小游戏有一个飞机大战的游戏,学完python之后我试着写了下程序去基本实现这个游戏的部分功能,下面是小游戏飞机大战的python代码

注:python中部分代码转自crossin编程教室

importpygameimportrandomfromsysimportexit#向sys模块借用个exit函数来退出程序#定义一个敌机类classEnemy:
defrestar(self):
#重置敌机位置与速度self.x=random.randint(100,600)
self.y=random.randint(-200,-80)
self.speed=random.random()+0.4def__init__(self):
self.restar()
self.image=pygame.image.load('enermy.jpg')
defmove(self):
ifself.y<800:
self.y+=self.speed#向下移动else:
self.restar()
#定义一个bullet类,封装子弹相关的数据和方法classBullet:
def__init__(self):
self.x=0;
self.y=-1;
self.image=pygame.image.load('bulet.jpg')
self.active=False#默认不激活子弹defmove(self):
#激活状态下,向上移动ifself.active:
self.y-=0.8#挡飞出屏幕,设为不激活ifself.y<0:
self.active=Falsedefrestar(self):
#重置子弹位置子弹mouseX,mouseY=pygame.mouse.get_pos()
self.x=mouseX-self.image.get_width()/2;
self.y=mouseY-self.image.get_height()/2;
self.active=True;
defcheckhit(enemy,bullet):
#如果子弹在敌机的图片范围之内if (bullet.x>enemy.xandbullet.x<enemy.x+enemy.image.get_width()) and (
bullet.y>enemy.yandbullet.y<enemy.y+enemy.image.get_height()
        ):
enemy.restar();
bullet.active=FalsereturnTruereturnFalseclassPlane:
defrestar(self):
self.x=200self.y=600def__init__(self):
self.restar()
self.image=pygame.image.load('plane.jpg')
defmove(self):
x, y=pygame.mouse.get_pos();  # 跟随鼠标移动x-=self.image.get_width() /2;
y-=self.image.get_height() /2;
self.x=x;
self.y=ydefcheckcrash(enemy, plane):
if (plane.x+0.7*plane.image.get_width() >enemy.x) and (
plane.x+0.3*plane.image.get_width() <enemy.x+enemy.image.get_width()) and (
plane.y+0.7*plane.image.get_height() >enemy.y) and (
plane.y+0.3*plane.image.get_width() <enemy.y+enemy.image.get_height()
    ):
returnTruereturnFalsepygame.init()
screen=pygame.display.set_mode((1000,700),0,32)  #创建一个窗口pygame.display.set_caption('xwr!')#设置窗口标题background=pygame.image.load('pygame.jpg')  #加载并转换图像plane=Plane()#加载飞机图像bullets=[]#创建子弹的listforiinrange(5):
bullets.append(Bullet())  #向list添加5发子弹count_b=len(bullets)#子弹总数index_b=0#即将激活的子弹序号interval_b=0#发射子弹的间隔enemies=[]
foreinrange(5):
enemies.append(Enemy())
gameover=False#分数score=0#用以显示文字的font变量font=pygame.font.Font(None, 32)
whileTrue:  #游戏主循环函数foreventinpygame.event.get():
ifevent.type==pygame.QUIT:  #接收到退出事件后退出程序pygame.quit()
exit()
ifgameoverandevent.type==pygame.MOUSEBUTTONUP:
plane.restar()
foreinenemies:
e.restar()
forbinbullets:
b.restar()
score=0;
gameover=Falsescreen.blit(background, (0, 0))  # 将背景图画上去ifnotgameover:
interval_b-=1#发射间隔递减ifinterval_b<0:   #激活一发子弹bullets[index_b].restar()
interval_b=80#重置间隔时间index_b=(index_b+1)%count_b#子弹序号周期性递增forbinbullets:  #处于激活状态的子弹,移动位置并绘制ifb.active:
foreinenemies:
ifcheckhit(e,b):
score+=100b.move()
screen.blit(b.image,(b.x,b.y))
foreinenemies:
ifcheckcrash(e, plane):
gameover=Truee.move()
screen.blit(e.image,(e.x,e.y))
plane.move()
screen.blit(plane.image, (plane.x, plane.y))
# 在屏幕左上角显示分数text=font.render("Socre: %d"%score, 1, (0, 0, 0))
screen.blit(text, (0, 0))
else:
# 在屏幕中央显示分数text=font.render("Socre: %d"%score, 1, (0, 0, 0))
screen.blit(text, (190, 400))
passpygame.display.update()  #刷新一下界面

效果图如下图所示:

6aadf8f8fdd7d4a8d988a1e7cff8e331.jpg

飞机可以发出子弹,只要子弹碰到敌机,敌机就会消失不见。背景及子弹发射的速度还有大小等都可以更换和控制。

8ac2d2a46700461c19d3b65b0ea3b12c.jpg

这是游戏结束的图片,只要飞机撞到敌机就失败了,左上方显示得到的分数Score。

不足之处:消灭敌机还有发射子弹没有加入声音效果,后续版本可以加入爆炸的声音,游戏的沉浸式体验才会更好。

相关文章
|
机器人 数据安全/隐私保护 Python
企业微信自动回复软件,企业微信自动回复机器人,python框架分享
企业微信机器人包含完整的消息处理流程,支持文本消息自动回复、事件处理、消息加密解密等功能
|
数据采集 存储 C++
Python异步爬虫(aiohttp)加速微信公众号图片下载
Python异步爬虫(aiohttp)加速微信公众号图片下载
|
数据安全/隐私保护 Python
微信群成员导出工具, 微信群成员导出软件, 微信群管理工具软件【python】
这个工具提供了完整的微信群成员导出功能,包括登录微信、获取群列表、导出成员信息到Excel等功能
|
12月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
12月前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
API 数据安全/隐私保护 开发者
企业微信自动加好友软件,导入手机号批量添加微信好友,python版本源码分享
代码展示了企业微信官方API的合规使用方式,包括获取access_token、查询部门列表和创建用户等功能
|
JSON 机器人 API
微信机器人自动回复插件,vx自动回复机器人脚本助手,python框架分享
这个微信机器人系统包含三个主要模块:主程序基于itchat实现微信消息监听和自动回复功能
|
数据采集 监控 调度
应对频率限制:设计智能延迟的微信读书Python爬虫
应对频率限制:设计智能延迟的微信读书Python爬虫
|
人工智能 搜索推荐 数据可视化
用 Python 制作简单小游戏教程:手把手教你开发猜数字游戏
本教程详细讲解了用Python实现经典猜数字游戏的完整流程,涵盖从基础规则到高级功能的全方位开发。内容包括游戏逻辑设计、输入验证与错误处理、猜测次数统计、难度选择、彩色输出等核心功能,并提供完整代码示例。同时,介绍了开发环境搭建及调试方法,帮助初学者快速上手。最后还提出了图形界面、网络对战、成就系统等扩展方向,鼓励读者自主创新,打造个性化游戏版本。适合Python入门者实践与进阶学习。
1569 1
|
监控 数据安全/隐私保护 Python
微信自动抢红包免费版,2025微信抢红包神器,微信红包挂苹果版【python仅供学习】
这个模拟项目包含5个模块:核心监控逻辑、用户界面、配置管理、实用工具和主程序入口

推荐镜像

更多