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的入门游戏飞机大战的开发(上)
每个组件都是一个类的实例,要获得某个组件,要先创建一个同类型的组件类实例,然后把实例传引用过去,就可以对想要的组件实例进行操作. 做游戏一般创建一个逻辑节点,里面只管逻辑,再创建一个动画节点,里面有好 ...
随机推荐
- 2024牛客多校2B MST
同步发布于我的网站. Problem Sajin最近深入研究了最小生成树,现在他已经掌握了MST的算法.他渴望通过一系列查询来评估您对最小生成树概念的掌握程度. 您将面临一个加权无向图,该图包含没有任 ...
- Style:用法,多样性,全局样式与资源字典
Style:用法,多样性,全局样式与资源字典 本文同时为b站WPF课程的笔记,相关示例代码 对应06~08 前言 大部分能够想到的属性,xaml里面都是自带了的.可以多去网络上搜一搜.比如说高度.宽度 ...
- Web前端入门第 62 问:JavaScript 循环结构注意事项
HELLO,这里是大熊的前端开发笔记. 循环作为 算法与数据结构 中的基石,JS 与其他编程语言一样,都提供了多种循环结构用于处理数据. for 循环 事物的开端往往都是从最常用的开始,循环结构咱们从 ...
- Joomla设计理念探讨系列2 -程序员要如何用代码实现“白纸幻想”?
客户幻想拖拖拽拽就建站?程序员连夜拆解出网格化背后的技术深渊. 1. 破灭的白纸幻想?不,是技术逻辑的碰撞 当客户兴奋地描述"白纸网格"时,程序员的第一反应往往是: "需 ...
- 解密prompt系列55.Agent Memory的工程实现 - Mem0 & LlamaIndex
记忆存储是构建智能个性化.越用越懂你的Agent的核心挑战.上期我们探讨了模型方案实现长记忆存储,本期将聚焦工程实现层面. What:记忆内容(手动管理 vs 自动识别) How:记忆处理(压缩/抽取 ...
- 使用wxWidgets进行跨平台GUI开发(附1)
补充说明wxWidgets在Windows下使用CMake的配置 wxWidgets官方提供了一个在Windows下使用CMake来构建wxWidgets库的方法,这样便于你自己用CMake构建项目. ...
- SpringBoot集成TOTP双因素认证(2FA)实战
一.双因素认证的概念 双因素认证(2FA,Two Factor Authentication)又称双因子认证.两步验证,指的是是一种安全认证过程,需要用户提供两种不同类型的认证因子来表明自己的身份,包 ...
- 九、buildroot系统 usb配置
3.3.usb配置 源码中kernel默认已经打开了相关的usb配置,只需要在buildroot中打开相关配置. 1.基本功能类别 简称 功能描述 ADB (Android Debug Bridge) ...
- 我是一名数学专业的应届博士,我该如何选择offer?
这是IC男奋斗史的第5篇原创 关注公众号[IC男奋斗史],让我们一起撸起袖子加油干! 本文1396字,预计阅读4分钟. 本文来自私信咨询问答.杰哥已征得对方同意把内容展示在公众平台. 感谢对杰哥的信任 ...
- Xamarin.Andorid 代码方式弹出下拉框
转载于:https://my.oschina.net/u/1024921/blog/163142 public static void SetFocus(this Spinner snr) { snr ...