pygame小游戏飞机大战_8继承精灵玩家优化
为了实现碰撞消失的功能,使用继承精灵进行对玩家的优化
# 引入飞机的类
class Plane(pygame.sprite.Sprite):
# 创建玩家的方法,引入screen模块
def __init__(self, screen):
# 引入图片创建玩家
self.player = pygame.image.load("./images/me1.png")
self.image=self.player
# 设置速度变量
self.speed = 10
# 调用继承精灵初始化方法
pygame.sprite.Sprite.__init__(self)
# 根据图片进行获取矩形对象
self.rect = self.image.get_rect()
self.rect.topleft = [179,500]
self.x = 179
self.y = 500
# 使screen变为飞机类的一个属性
self.screen = screen
# 定义装子弹的列表
self.bullets = pygame.sprite.Group()
# 定义update方法包含检测指令和绘制
def update(self):
self.key_control()
self.display()
# 创建玩家移动的方法
def key_control(self):
# 判断按下键盘事件,对玩家x,y坐标进行调整使玩家移动
key_pressed = pygame.key.get_pressed()
if key_pressed[K_w] or key_pressed[K_UP]:
self.rect.top -= self.speed
if key_pressed[K_d] or key_pressed[K_RIGHT]:
self.rect.right+= self.speed
if key_pressed[K_a] or key_pressed[K_LEFT]:
self.rect.left -= self.speed
if key_pressed[K_s] or key_pressed[K_DOWN]:
self.rect.bottom += self.speed
if key_pressed[K_SPACE]:
# 按下空格键发射子弹
bullet = Bullet(self.screen, self.rect.left, self.rect.top)
# 将子弹存入列表
self.bullets.add(bullet)
def display(self):
# 绘制玩家
self.screen.blit(self.player, self.rect)
# 更新子弹坐标
self.bullets.update()
# 绘制所有子弹到屏幕
self.bullets.draw(self.screen)
与原本代码的对比
# 引入飞机的类
class Plane(object):
# 创建玩家的方法,引入screen模块
def __init__(self, screen):
# 引入图片创建玩家
self.player = pygame.image.load("./images/me1.png")
# 设置速度变量
self.speed = 10
self.x = 179
self.y = 500
# 使screen变为飞机类的一个属性
self.screen = screen
# 定义装子弹的列表
self.bullets = []
# 创建玩家移动的方法
def key_control(self):
# 判断按下键盘事件,对玩家x,y坐标进行调整使玩家移动
key_pressed = pygame.key.get_pressed()
if key_pressed[K_w] or key_pressed[K_UP]:
self.y -= self.speed
if key_pressed[K_d] or key_pressed[K_RIGHT]:
self.x += self.speed
if key_pressed[K_a] or key_pressed[K_LEFT]:
self.x -= self.speed
if key_pressed[K_s] or key_pressed[K_DOWN]:
self.y += self.speed
if key_pressed[K_SPACE]:
# 按下空格键发射子弹
bullet = Bullet(self.screen, self.x, self.y)
# 将子弹存入列表
self.bullets.append(bullet)
def display(self):
# 绘制玩家
self.screen.blit(self.player, (self.x, self.y))
# 遍历所有子弹
for bullet in self.bullets:
# 引入让子弹飞起来的方法
bullet.auto_move()
# 显示子弹
bullet.display()
pygame小游戏飞机大战_8继承精灵玩家优化的更多相关文章
- 软件工程 Android小游戏 猜拳大战
一.前言 最近学校举办的大学生程序设计竞赛,自己利用课余时间写了一个小游戏,最近一直在忙这个写这个小游戏,参加比赛,最终是老师说自己写的简单,可以做的更复杂的点的.加油 二.内容简介 自己玩过Andr ...
- 原生JS实现的h5小游戏-植物大战僵尸
代码地址如下:http://www.demodashi.com/demo/12755.html 项目介绍 本项目是利用原生js实现的h5小游戏-植物大战僵尸,主要结合了一下自己对于h5小游戏的理解,结 ...
- pygame小游戏之坦克大战
以前在学校的时候无聊的学了会pygame.看了大概一周的教学视频,做出来个坦克大战的小游戏 Python3.5 pycharm import pygame,sys,time from random ...
- Pygame小游戏练习五
@Python编程从入门到实践 Python项目练习 十一.显示游戏得分及最高分 创建新类Scoreboard,用以显示得分和最高分. # scoreboard.py import pygame.fo ...
- Pygame小游戏练习二
@Python编程从入门到实践 Python项目练习 四.创建Ship类 建立ship.py,创建Ship类,管理飞船行为. # ship.py import pygame class Ship(): ...
- Pygame小游戏练习四
@Python编程从入门到实践 Python项目练习 九.添加Play按钮 一.创建Button类 先让游戏一开始为非活动状态 # game_stats.py # --snip-- self.game ...
- Pygame小游戏练习三
@Python编程从入门到实践 Python项目练习 七.创建Passenger类 创建passenger.py文件,创建Passenger类,控制乘客属性和行为 # passenger.py imp ...
- android小游戏 飞机躲子弹
最近android老师让每人写一个小东西,因为之前学awt时写过一个java版的飞机躲子弹,所以这次想写成android版的. 文件直接导入就行http://files.cnblogs.com/fil ...
- 关于Unity的入门游戏飞机大战的开发(下)
开发思路: 1: 修改测试模式,去掉开始按钮方便开发,加入敌机的资源2: 创建敌机 添加刚体,碰撞器组件,添加帧动画播放组件;3: 创建敌机出现的队形;4: 根据队形随机 生成我们的敌机,调整敌机的速 ...
- 关于Unity的入门游戏飞机大战的开发(上)
每个组件都是一个类的实例,要获得某个组件,要先创建一个同类型的组件类实例,然后把实例传引用过去,就可以对想要的组件实例进行操作. 做游戏一般创建一个逻辑节点,里面只管逻辑,再创建一个动画节点,里面有好 ...
随机推荐
- Ingress学习笔记
Ingress 我们已经知道,Service对集群之外暴露服务的主要方式有两种:NodePort和LoadBalancer,但是这两种方式,都有一定的缺点: NodePort方式的缺点是会占用很多集群 ...
- nodejs实现将json转化为excel文件
本文使用node.js实现将json数据转换导出为excel文件. 一.安装json2xls库 npm i json2xls 二.封装转换方法 新增jsonToExcel.js文件,该文件用于将jso ...
- hot100之栈
有效的括号(020) 跳过 最小栈(155) class MinStack { private final Deque<int[]> stack = new ArrayDeque<& ...
- wc记录
WC记录 咋可 随机化 CF1746F 给每个值随机成\(0/1\),然后查询区间内的所有数的和是否\(\equiv0\mod k\) 考虑错误率,对于一个不合法的权值,设其有\(r\)个,考虑区间内 ...
- 大麦基于HarmonyOS星盾安全架构,打造全链路安全抢票方案
6月21日,在华为开发者大会2025 "安全与隐私分论坛"上,大麦作为鸿蒙生态应用开发优秀案例,受邀进行议题演讲,分享其基于鸿蒙系统星盾安全架构构建的票务安全创新实践.大麦娱乐无线 ...
- Elastic学习之旅 (3) ES必备基本概念
大家好,我是Edison. 上一篇:快速安装ELK ES都有哪些基本概念 在学习ES时,需要掌握一些必备概念,有了这些基本概念,后续的学习才会轻松.我们可以从下图中了解,ES都有哪些基本概念. 从上图 ...
- AWTK 嵌入式Linux平台实现多点触控缩放旋转以及触点丢点问题解决
前言 最近涉及海图的功能交互,多点触摸又开始找麻烦. 在PC/Web平台awtk是通过底层的sdl2库来实现多点触摸,但是在嵌入式Linux平台,可能是考虑到性能原因,awtk并没有采用sdl库来做事 ...
- java--泛型加强、注解、日志组件
泛型 概述 泛型是JDK1.5以后才有的, 可以在编译时期进行类型检查,且可以避免频繁类型转化! 声明泛型集合,集合两端类型必须一致 运行时期异常 @Test public void testGene ...
- 前端开发系列007-基础篇之JavaScript引用类型
本文将介绍JavaScript中值类型和引用类型,两种类型的区别以及编码时候的注意点. 一.值类型和引用类型介绍 在javaScript语言基础这篇文章中已经简单介绍了JavaScript中的数据类型 ...
- A - Ability Draft Gym - 102155A 状压DP
传送门 题意:有两个队伍,每队有n个人,每个人可以有s个普通技能和一个特殊技能.现在可以按照顺序抽技能卡,问各自都在最优策略下双方队伍的技能总分最大差值. 思路:算是一道看着简单但思路形成比较麻烦的一 ...