python-pygame:实现飞机大战详情(含源码)
准备文件
需要模块模块pygame
pygame简介
Pygame是跨平台Python模块,专为电子游戏设计,包含图像、声音。建立在SDL基础上,允许实时电子游戏研发的模块。pygame的安装
使用命令 pip install pygame
所需素材(包括音频,图片素材):https://pan.baidu.com/s/1lq8CDvvhgymB_5h2wzKc8Q
密码:tebp
实现思路
原图
重要函数及部分代码展示
重要函数
- 启用pygame界面与音频组件组件,绘制一个480*700主界面:
pygame.init()
pygame.mixer.init()
bg_size = width, height = 480, 700
screen = pygame.display.set_mode(bg_size)
导入素材,以下为导入素材所用函数:
pygame.image.load(“图片路径”).convert_alpha() //以alpha通道导入图片,识别图片去白色背景,用于导入飞机子弹素材。
pygame.image.load(“图片路径”).convert() //常规导入图片,用于导入背景素材。pygame.mixer.music.load(“图片路径”) //导入音乐素材。
pygame.mixer.music.set_volume() //设置声音大小。创建飞机,子弹之类的对象并为其初始化,添加移动的方法,例:
import pygameclass MyPlane(pygame.sprite.Sprite):def __init__(self, bg_size):#初始化与导入素材passdef moveUp(self):#向上移动方法passdef moveDown(self):#向下移动方法passdef moveLeft(self):passdef moveRight(self):passdef reset(self):#重置即销毁方法pass
碰撞检测
pygame.sprite.spritecollide(素材1,素材2, False, pygame.sprite.collide_mask)
如果两个素材接触到则返回一个bool值False详细代码见:链接:https://pan.baidu.com/s/19m0xiNEFfgNNfokydDGxRg
提取码:n09t
部分代码
# 检测子弹是否击中敌机for b in bullets:if b.active:b.move()screen.blit(b.image, b.rect)enemy_hit = pygame.sprite.spritecollide(b, enemies, False, pygame.sprite.collide_mask)if enemy_hit:b.active = Falsefor e in enemy_hit:if e in mid_enemies or e in big_enemies:e.hit = Truee.energy -= 1if e.energy == 0:e.active = Falseelse:e.active = False
- 玩家飞机对象:
import pygame
#继承pygame.sprite.Sprite类
class MyPlane(pygame.sprite.Sprite):def __init__(self, bg_size):pygame.sprite.Sprite.__init__(self)#导入素材self.image1 = pygame.image.load("images/me1.png").convert_alpha()self.image2 = pygame.image.load("images/me2.png").convert_alpha()self.destroy_images = []self.destroy_images.extend([\pygame.image.load("images/me_destroy_1.png").convert_alpha(), \pygame.image.load("images/me_destroy_2.png").convert_alpha(), \pygame.image.load("images/me_destroy_3.png").convert_alpha(), \pygame.image.load("images/me_destroy_4.png").convert_alpha()])#获取图片边缘信息self.rect = self.image1.get_rect()self.width, self.height = bg_size[0], bg_size[1]self.rect.left, self.rect.top = \(self.width - self.rect.width) // 2, \self.height - self.rect.height - 60设置移动速度self.speed = 10#设置状态self.active = Trueself.invincible = Falseself.mask = pygame.mask.from_surface(self.image1)def moveUp(self):if self.rect.top > 0:self.rect.top -= self.speedelse:self.rect.top = 0def moveDown(self):if self.rect.bottom < self.height - 60:self.rect.top += self.speedelse:self.rect.bottom = self.height - 60def moveLeft(self):if self.rect.left > 0:self.rect.left -= self.speedelse:self.rect.left = 0def moveRight(self):if self.rect.right < self.width:self.rect.left += self.speedelse:self.rect.right = self.widthdef reset(self):self.rect.left, self.rect.top = \(self.width - self.rect.width) // 2, \self.height - self.rect.height - 60self.active = Trueself.invincible = True
结果演示
给出初步实现效果如下:
python-pygame:实现飞机大战详情(含源码)相关推荐
- 飞机大战HTML5游戏源码,基于Canvas制作的网页版飞机大战游戏+飞机大战手机端
简介: 飞机大战HTML5游戏源码是一款基于Canvas制作的网页版飞机大战游戏,画质精美的飞机大战手机端游戏源码 网盘下载地址: http://kekewangLuo.net/W1S2LQcqAT2 ...
- 用python画皇冠_【推荐】手把手教你如何用Python画一棵漂亮樱花树含源码
最近给大家整理了一下,挑了一些我觉得不错的代码分享给大家手把手教你如何用Python画一棵漂亮樱花树含源码. 动态生成樱花 效果图(这个是动态的): import turtle as T import ...
- html+javascript实现的网页版飞机大战小游戏源码
html+javascript实现的网页版飞机大战小游戏源码 完整代码下载地址: html+javascript实现的网页版飞机大战小游戏源码 index.html <!DOCTYPE html ...
- 雷霆战机9.5全新上线,Python+Pygame开发飞机大战完整游戏项目(附源码)
项目名称:太空大战 开发环境:Python3.6.4 第三方库:Pygame1.9.6 代码编辑器:Sublime Text 先来看一下游戏画面吧! 游戏画面动态且丰富哦! 需求分析 利用Pyt ...
- 基础教学:用python实现儿时游戏飞机大战(带源码)
python是一门非常简单的语言,快速入门后可以做很多事情.例如爬虫,数据分析,自动化运维,机器学习量化分析啊等等! 视频教学源码学习资料领取地址:关注+私信小编"资料"即可. 看 ...
- 边玩边学,13个 Python 小游戏真有趣啊(含源码)
经常听到有朋友说,学习编程是一件非常枯燥无味的事情.其实,大家有没有认真想过,可能是我们的学习方法不对? 比方说,你有没有想过,可以通过打游戏来学编程? 今天我想跟大家分享几个Python小游戏,教你 ...
- 飞机大战小游戏源码---飞机大战初体验
开发环境: Windows10,pycharm,python3 源码使用教程: 打开pycharm,创建一个新的项目,文件-->新建项目 项目命名:飞机大战初体验,基本解释器选择python3版 ...
- java飞机大战编程_[源码和文档分享]Java飞机大战游戏设计与实现
1 概述 本次Java课程设计是做一个飞机大战的游戏,应用Swing编程,完成一个界面简洁流畅.游戏方式简单,玩起来易于上手的桌面游戏.该飞机大战项目运用的主要技术即是Swing编程中的一些窗口类库. ...
- JAVA飞机大战游戏附源码
JAVA飞机大战附源码 java飞机大战 效果图如下 java飞机大战 话不多说 直接上源码 窗体部分 package UI; //自定义窗体 //创建类 继承JFrame //创建构造方法,设置窗体 ...
- 新版飞机大战游戏安卓源码项目
作者nuptboyzhb,源码newplanegame,新版飞机大战是一款以真实战机为模板的飞行射击类游戏,体验新颖,玩法炫酷.一样的经典,不一样的体验.飞机模型基于目前的主流战机:包括美国F16,F ...
最新文章
- 编程珠玑第六章习题二——C++实现一个数的因子分解
- 校友管理软件 JAVA_开源项目1:某大学校友管理系统
- matlab_simulink笔记01——模块属性的设置以及模块参数的设置
- ARM 架构演进对未来计算意味着什么?
- 从一个小程序说起 - C++快速入门02
- mysql从字段取出地名_mysql中从字段中URL提取域名信息
- 怎么用命令提示符测试软件网速,cmd指令测试网速技巧
- 这些重构小技巧,给你项目瘦瘦身吧!
- Linux如何在文件中新建一行,linux – 如何使用sed将文本插入文件的第一行?
- 利用java做前端连接数据库_基于java的前端与数据库的交互
- html如何设置展开全文,Js实现点击查看全文(纯手工代码)
- OpenCV基于dlib进行人脸关键点检测(摄像头)
- html标签的默认样式及去除
- 《HyVulDect: A hybrid semantic vulnerability mining system based ongraph neural network》阅读笔记
- DML语言(数据库操作语言)和DQL语言(数据库查询语言)
- 2021万向区块链黑客马拉松圆满收官
- 登录一粒云客户端时,登录提示“用户名错误”是什么原因?
- 添加商务通的几种方式
- 不添一分钱 轻松使用无盘WIN2000(转)
- How many times rampant Warcraft Star players ah
热门文章
- QPSK与QDPSK调制与解调(待更新)
- 爬梯:Docker全解析(一)
- oracle成本cbo,基于成本的优化--CBO
- Pomelo Treasures
- 省份展开html5 实现,javascript html5 canvas实现可拖动省份的中国地图
- Hive:从HDFS回收站恢复被删的表
- muduo库net源码分析六(Socket 封装)
- EDI集成ERP一体化解决方案
- android计步器摘要,ios - Healthkit每小时活动摘要包含步数,距离和卡路里? - 堆栈内存溢出...
- ORACLE 统计各个部门 工资级别为小于2000,2000-3000,3000+的分别为多少