版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Loremipsumdolorsitamet,consectetueradipiscingelit.Aeneancommodoligulaegetdolor.Cumsociisnatoquepenatibusetmagnisdisparturientmontes,nasceturridiculusmus.少儿编程课飞机大战2本节我们来使用另一种方式绘制小方块,并使其能够在屏幕中左右移动Pygame中的精灵除了绘制飞机,还可以通过创建精灵的方式来生成飞机1精灵是游戏开发中的术语。简单来说,游戏中会动的东西都叫精灵飞机陨石子弹飞机大战中的精灵2对于本游戏来说,目前有以下几种精灵使用精灵类来制作角色,会更加有利于对角色的管理以及功能的添加Pygame中提供了精灵类,继承它就可以定义自己的精灵,下面我们定义飞机精灵12定义飞机精灵类Player,定义初始化方法为了方便确定创建出的正方形的位置,设置一下它的中心和底的值,classPlayer(pygame.sprite.Sprite):
def__init__(self):
#完成精灵的初始化
pygame.sprite.Sprite.__init__(self)
#初始化飞机精灵的图像,也就是长什么样
self.image=pygame.Surface((50,50))
#初始化飞机精灵图像的颜色
self.image.fill((0,255,0))这里的get_rect能够获取飞机的图像的长方形,也就是我们定义的长方形本身。
#角色的长方形
self.rect=self.image.get_rect()
#设置长方形中心的x的值
self.rect.centerx=WIDTH/2
#设置长方形底的值
self.rect.bottom=HEIGHT-10通过设置rect的centerx值和bottom值,就能确定长方形所在的位置了。这里将image属性设置为方块,那么飞机的表现形式就是一个方块。飞机精灵类定义完成之后,画到屏幕中12添加黄色部分代码—创建player对象,并绘制到屏幕#定义玩家飞机对象
player=Player()
running=True
whilerunning:
foreventinpygame.event.get():
ifevent.type==pygame.QUIT:
#结束游戏
running=False
elifevent.type==pygame.KEYDOWN:
ifevent.key==pygame.K_ESCAPE:
#结束游戏
running=False
#将玩家飞机绘制到屏幕上
screen.blit(player.image,player.rect)
#重绘游戏界面,相当于刷新一次
pygame.display.flip()
pygame.quit运行程序,可以看到屏幕中同样出现了绿色小方块绘制到屏幕时,不需要指定位置,直接传入player.rect即可飞机左右移动接下来我们让飞机能够移动,首先来分析(0,0)600480(0,600)(480,0)(480,600)X轴Y轴左右移动,改变的是角色的X坐标当按下左移键240200160120280320360X坐标减少当按下右移键X坐标增加然后设置角色的X轴坐标为当前坐标加上这个变量,在死循环中不断的更新位置就可以了所以我们可以创建一个初始值为0,按下左键时设为负值、按下右键时设为正值的变量在player类中增加update方法,更新飞机的位置1在首先初始化X轴速度并获得按键状态2根据不同按键,将X轴速度设为不同值defupdate(self):
self.speedx=0
#获取按键状态
keys=pygame.key.get_pressed()
#如果左移键被按下
ifkeys[pygame.K_LEFT]:
#x轴上的速度设置为‐8
self.speedx=-8
#如果右键被按下
ifkeys[pygame.K_RIGHT]:
#x轴上的速度设置为8
self.speedx=8
#设置角色的x轴坐标
self.rect.x+=self.speedx3最后,将角色的位置设置为当前坐标加上按键之后的速度在死循环中调用update方法,然后运行程序,结果如下:这是因为在每次绘制飞机时,并没有绘制屏幕,导致绘制飞机后的界面又重新做了屏幕要解决这个问题,只需要每次绘制飞机的时候也绘制背景即可,绘制背景只需要给一个背景颜色。可以看到,屏幕下方出现了一块绿色区域,这显然不是我们想要的移动效果。为屏幕添加背景色再次运行#绘制屏幕的背景颜色
screen.fill((0,0,0))现在飞机虽然可以移动,但是非常不合理,不仅移动的速度非常快,而且能够移出屏幕接下来,我们对飞机的移动进行设置,使其移动更加合理飞机移动合理性首先解决飞机能够移出屏幕的问题1更新update方法,设置边界限制2运行程序,飞机只能在屏幕中移动#边缘检测,如果碰到边缘,就停止不动
ifself.rect.right>WIDTH:
self.rect.right=WIDTH
ifself.rect.left<0:
self.rect.left=0
当飞机的右边缘即将超出屏幕右边缘坐标时,将飞机右边缘坐标设为屏幕右边缘坐标,左侧限制同理。边缘限制写好之后,来看一下飞机的移动速度非常快的原因我们知道,电脑的运行速度是非常快的,当我们按下按键时,死循环已经执行了很多次已运行了五次为例:8像素8像素8像素8像素8像素8像素执行一次,移动像素执行五次,移动5x8也就是40像素实际程序的执行速度更加快,所以看起来飞机移动的非常快知道原因之后就要想办法解决,这里有两种方法:第一种是修改左右移动的像素数,减慢飞机运动速度第二种方式在游戏中更常见:控制游戏的节奏!这里我们使用pygame中的定时器来控制游戏节奏1初始化计时器2定义一个常量并在死循环中设定循环执行的时间#初始化计时器
clock=pygame.time.Clock()FPS=60
clock.tick(FPS)注意:这里的60并不是设定的循环执行的时间,而是每秒循环执行的次数,1秒等于1000毫秒,所有每次循环的执行时间就是1000/60=16.66约等于17毫秒。3使用time模
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三年级,语文,上册教案
- 道路修缮工程投标方案(技术方案)
- 2024年重庆市消防操作员《中级技能-维保方向》科目真题冲刺卷下半年A卷
- 汽车物流产业发展现状调研与投资战略研究报告模板
- 部编版小学语文五年级上册配套教案(全册)
- 全球IO链接(IO-Link)行业分析:欧洲是最大市场占36%市场份额
- 【同课异构】雁门太守行 教学设计
- 【写作指导】细节描写之如何选点
- 第8单元单元测试-2024-2025学年六年级上册语文统编版
- 面积和面积单位(教学设计)-2023-2024学年三年级下册数学人教版
- 毛石混凝土挡墙施工方案
- 武术教案(长拳一段)(共5页)
- 物理化学实验教材电子
- 四川建龙软件资料全套表格
- 局部氧疗(TOT)治疗创面
- 承接查验协议书
- 警惕‘委托代办邮政业务’之规定被曲解与滥用
- 内部控制风险评估报告
- 新航空运费计算
- XX县民办教育发展状况的调研报告
- 吊篮计算书(精编版)
评论
0/150
提交评论