当前位置: 首页 > news >正文

景德镇建设局网站WordPress社群

景德镇建设局网站,WordPress社群,怎么做国际网站首页,租网络服务器多少钱学习 Python 之 Pygame 开发魂斗罗#xff08;三#xff09;继续编写魂斗罗1. 角色站立2. 角色移动3. 角色跳跃4. 角色下落继续编写魂斗罗 在上次的博客学习 Python 之 Pygame 开发魂斗罗#xff08;二#xff09;中#xff0c;我们完成了角色的创建和更新#xff0c;现… 学习 Python 之 Pygame 开发魂斗罗三继续编写魂斗罗1. 角色站立2. 角色移动3. 角色跳跃4. 角色下落继续编写魂斗罗 在上次的博客学习 Python 之 Pygame 开发魂斗罗二中我们完成了角色的创建和更新现在具体实现一下更新函数中的角色状态函数 1. 角色站立 在写角色站立函数时先把其他状态函数注释了方便测试 在角色站立函数中首先设置当前角色的状态 站立时其他状态都是False只有isStanding True # 设置角色状态 self.isStanding True self.isWalking False self.isJumping False self.isSquating False self.isUp False self.isDown False self.isFiring False其次修改人物的速度站立时速度均为0 # 设置速度 self.ySpeed 0 self.xSpeed 0再次我们设置按键响应事件 # 按下A键 if keys[pygame.K_a]:# A按下角色方向向左self.direction Direction.LEFT# 改变角色的状态角色进入移动状态self.state State.WALK# 设置站立状态为False移动状态为Trueself.isStanding Falseself.isWalking True# 向左移动速度为负数这样玩家的x坐标是减小的self.xSpeed -PLAYER_X_SPEED # 按下D键 elif keys[pygame.K_d]:# D按下角色方向向右self.direction Direction.RIGHT# 改变角色的状态角色进入移动状态self.state State.WALK# 设置站立状态为False移动状态为Trueself.isStanding Falseself.isWalking True# 向右移动速度为正数self.xSpeed PLAYER_X_SPEED # 按下k键 elif keys[pygame.K_k]:# K按下角色进入跳跃状态但是不会改变方向self.state State.JUMP# 设置站立状态为False跳跃状态为True# 不改变移动状态因为移动的时候也可以跳跃self.isStanding Falseself.isJumping True# 设置速度速度为负数因为角色跳起后要下落self.ySpeed self.jumpSpeed # 没有按下按键 else:# 没有按下按键角色依然是站立状态self.state State.STANDself.isStanding True# 按下w键 if keys[pygame.K_w]:# W按下角色向上改变方向状态self.isUp Trueself.isStanding Trueself.isDown Falseself.isSquating False # 按下s键 elif keys[pygame.K_s]:# S按下角色蹲下改变方向状态并且蹲下状态设置为Trueself.isUp Falseself.isStanding Falseself.isDown Trueself.isSquating True完整的角色类 import pygame from Constants import *class PlayerOne(pygame.sprite.Sprite):def __init__(self, currentTime):pygame.sprite.Sprite.__init__(self)# 加载角色图片self.standRightImage loadImage(../Image/Player/Player1/Right/stand.png)self.standLeftImage loadImage(../Image/Player/Player1/Left/stand.png)self.upRightImage loadImage(../Image/Player/Player1/Up/upRight(small).png)self.upLeftImage loadImage(../Image/Player/Player1/Up/upLeft(small).png)self.downRightImage loadImage(../Image/Player/Player1/Down/down.png)self.downLeftImage loadImage(../Image/Player/Player1/Down/down.png, True)self.obliqueUpRightImages [loadImage(../Image/Player/Player1/Up/rightUp1.png),loadImage(../Image/Player/Player1/Up/rightUp2.png),loadImage(../Image/Player/Player1/Up/rightUp3.png),]self.obliqueUpLeftImages [loadImage(../Image/Player/Player1/Up/rightUp1.png, True),loadImage(../Image/Player/Player1/Up/rightUp2.png, True),loadImage(../Image/Player/Player1/Up/rightUp3.png, True),]self.obliqueDownRightImages [loadImage(../Image/Player/Player1/ObliqueDown/1.png),loadImage(../Image/Player/Player1/ObliqueDown/2.png),loadImage(../Image/Player/Player1/ObliqueDown/3.png),]self.obliqueDownLeftImages [loadImage(../Image/Player/Player1/ObliqueDown/1.png, True),loadImage(../Image/Player/Player1/ObliqueDown/2.png, True),loadImage(../Image/Player/Player1/ObliqueDown/3.png, True),]# 角色向右的全部图片self.rightImages [loadImage(../Image/Player/Player1/Right/run1.png),loadImage(../Image/Player/Player1/Right/run2.png),loadImage(../Image/Player/Player1/Right/run3.png)]# 角色向左的全部图片self.leftImages [loadImage(../Image/Player/Player1/Left/run1.png),loadImage(../Image/Player/Player1/Left/run2.png),loadImage(../Image/Player/Player1/Left/run3.png)]# 角色跳跃的全部图片self.upRightImages [loadImage(../Image/Player/Player1/Jump/jump1.png),loadImage(../Image/Player/Player1/Jump/jump2.png),loadImage(../Image/Player/Player1/Jump/jump3.png),loadImage(../Image/Player/Player1/Jump/jump4.png),]self.upLeftImages [loadImage(../Image/Player/Player1/Jump/jump1.png, True),loadImage(../Image/Player/Player1/Jump/jump2.png, True),loadImage(../Image/Player/Player1/Jump/jump3.png, True),loadImage(../Image/Player/Player1/Jump/jump4.png, True),]self.rightFireImages [loadImage(../Image/Player/Player1/Right/fire1.png),loadImage(../Image/Player/Player1/Right/fire2.png),loadImage(../Image/Player/Player1/Right/fire3.png),]self.leftFireImages [loadImage(../Image/Player/Player1/Right/fire1.png, True),loadImage(../Image/Player/Player1/Right/fire2.png, True),loadImage(../Image/Player/Player1/Right/fire3.png, True),]# 角色左右移动下标self.imageIndex 0# 角色跳跃下标self.upImageIndex 0# 角色斜射下标self.obliqueImageIndex 0# 上一次显示图片的时间self.runLastTimer currentTimeself.fireLastTimer currentTime# 选择当前要显示的图片self.image self.standRightImage# 获取图片的rectself.rect self.image.get_rect()# 设置角色的状态self.state State.STAND# 角色的方向self.direction Direction.RIGHT# 速度self.xSpeed PLAYER_X_SPEEDself.ySpeed 0self.jumpSpeed -11# 人物当前的状态标志self.isStanding Falseself.isWalking Falseself.isJumping Trueself.isSquating Falseself.isFiring False# 重力加速度self.gravity 0.7self.isUp Falseself.isDown Falsedef update(self, keys, currentTime):# 更新站或者走的状态# 根据状态响应按键if self.state State.STAND:self.standing(keys, currentTime)# elif self.state State.WALK:# self.walking(keys, currentTime)# elif self.state State.JUMP:# self.jumping(keys, currentTime)# elif self.state State.FALL:# self.falling(keys, currentTime)# 更新位置# 记录前一次的位置坐标pre self.rect.xself.rect.x self.xSpeedself.rect.y self.ySpeed# 如果x位置小于0了就不能移动防止人物跑到屏幕左边if self.rect.x 0:self.rect.x pre# 更新动画# 跳跃状态if self.isJumping:# 根据方向if self.direction Direction.RIGHT:# 方向向右角色加载向右跳起的图片self.image self.upRightImages[self.upImageIndex]else:# 否则方向向左角色加载向左跳起的图片self.image self.upLeftImages[self.upImageIndex]# 角色蹲下if self.isSquating:if self.direction Direction.RIGHT:# 加载向右蹲下的图片self.image self.downRightImageelse:# 加载向左蹲下的图片self.image self.downLeftImage# 角色站着if self.isStanding:if self.direction Direction.RIGHT:if self.isUp:# 加载向右朝上的图片self.image self.upRightImageelif self.isDown:# 加载向右蹲下的图片self.image self.downRightImageelse:# 加载向右站着的图片self.image self.standRightImageelse:# 向左也是同样的效果if self.isUp:self.image self.upLeftImageelif self.isDown:self.image self.downLeftImageelse:self.image self.standLeftImage# 角色移动if self.isWalking:if self.direction Direction.RIGHT:if self.isUp:# 加载斜右上的图片self.image self.obliqueUpRightImages[self.obliqueImageIndex]elif self.isDown:# 加载斜右下的图片self.image self.obliqueDownRightImages[self.obliqueImageIndex]else:# 加载向右移动的图片根据开火状态是否加载向右开火移动的图片if self.isFiring:self.image self.rightFireImages[self.imageIndex]else:self.image self.rightImages[self.imageIndex]else:if self.isUp:self.image self.obliqueUpLeftImages[self.obliqueImageIndex]elif self.isDown:self.image self.obliqueDownLeftImages[self.obliqueImageIndex]else:if self.isFiring:self.image self.leftFireImages[self.imageIndex]else:self.image self.leftImages[self.imageIndex]def standing(self, keys, currentTime):角色站立# 设置角色状态self.isStanding Trueself.isWalking Falseself.isJumping Falseself.isSquating Falseself.isUp Falseself.isDown Falseself.isFiring False# 设置速度self.ySpeed 0self.xSpeed 0# 按下A键if keys[pygame.K_a]:# A按下角色方向向左self.direction Direction.LEFT# 改变角色的状态角色进入移动状态self.state State.WALK# 设置站立状态为False移动状态为Trueself.isStanding Falseself.isWalking True# 向左移动速度为负数这样玩家的x坐标是减小的self.xSpeed -PLAYER_X_SPEED# 按下D键elif keys[pygame.K_d]:# D按下角色方向向右self.direction Direction.RIGHT# 改变角色的状态角色进入移动状态self.state State.WALK# 设置站立状态为False移动状态为Trueself.isStanding Falseself.isWalking True# 向右移动速度为正数self.xSpeed PLAYER_X_SPEED# 按下k键elif keys[pygame.K_k]:# K按下角色进入跳跃状态但是不会改变方向self.state State.JUMP# 设置站立状态为False跳跃状态为True# 不改变移动状态因为移动的时候也可以跳跃self.isStanding Falseself.isJumping True# 设置速度速度为负数因为角色跳起后要下落self.ySpeed self.jumpSpeed# 没有按下按键else:# 没有按下按键角色依然是站立状态self.state State.STANDself.isStanding True# 按下w键if keys[pygame.K_w]:# W按下角色向上改变方向状态self.isUp Trueself.isStanding Trueself.isDown Falseself.isSquating False# 按下s键elif keys[pygame.K_s]:# S按下角色蹲下改变方向状态并且蹲下状态设置为Trueself.isUp Falseself.isStanding Falseself.isDown Trueself.isSquating True完成角色站立后我们试一下效果怎么样 在主类中创建角色并放入pygame.sprite.Group中 class MainGame:player1 NoneallSprites None在__init__()函数中添加代码 # 初始化角色 MainGame.player1 PlayerOne(pygame.time.get_ticks()) # 设置角色的初始位置 # 这里设置为080可以实现一开始玩家掉下来的动画目前没有实现掉落所以直接设置为80300 # MainGame.player1.rect.x 80 # MainGame.player1.rect.bottom 0 MainGame.player1.rect.x 80 MainGame.player1.rect.bottom 300# 把角色放入组中方便统一管理 MainGame.allSprites pygame.sprite.Group(MainGame.player1)之后在循环中调用角色的update函数 为了方便我把物体的更新全部放在一起创建一个update()函数 在主类中添加函数 def update(self, window):# 更新物体currentTime pygame.time.get_ticks()MainGame.allSprites.update(self.keys, currentTime)# 显示物体MainGame.allSprites.draw(window)pygame.sprite.Group()中的物体可以统一更新这就是它的方便之处 因为魂斗罗中玩家移动的时候场景中的物体也是要移动的所以地图是一个长条状当玩家向右移动时实际上是地图向左移动玩家不动创建中的物体向左移动如果不把全部物体放到组中不好统一管理 完整的主类代码 import sys import pygame from Constants import * from PlayerOne import PlayerOneclass MainGame:player1 NoneallSprites Nonewindow Nonedef __init__(self):# 初始化展示模块pygame.display.init()SCREEN_SIZE (SCREEN_WIDTH, SCREEN_HEIGHT)# 初始化窗口MainGame.window pygame.display.set_mode(SCREEN_SIZE)# 设置窗口标题pygame.display.set_caption(魂斗罗角色)# 是否结束游戏self.isEnd False# 获取按键self.keys pygame.key.get_pressed()# 帧率self.fps 60self.clock pygame.time.Clock()# 初始化角色MainGame.player1 PlayerOne(pygame.time.get_ticks())# 设置角色的初始位置# 这里设置为080可以实现一开始玩家掉下来的动画MainGame.player1.rect.x 80MainGame.player1.rect.bottom 300# 把角色放入组中方便统一管理MainGame.allSprites pygame.sprite.Group(MainGame.player1)def run(self):while not self.isEnd:# 设置背景颜色pygame.display.get_surface().fill((0, 0, 0))# 游戏场景和景物更新函数self.update(MainGame.window)# 获取窗口中的事件self.getPlayingModeEvent()# 更新窗口pygame.display.update()# 设置帧率self.clock.tick(self.fps)fps self.clock.get_fps()caption 魂斗罗 - {:.2f}.format(fps)pygame.display.set_caption(caption)else:sys.exit()def getPlayingModeEvent(self):# 获取事件列表for event in pygame.event.get():# 点击窗口关闭按钮if event.type pygame.QUIT:self.isEnd True# 键盘按键按下elif event.type pygame.KEYDOWN:self.keys pygame.key.get_pressed()# 键盘按键抬起elif event.type pygame.KEYUP:self.keys pygame.key.get_pressed()def update(self, window):# 更新物体currentTime pygame.time.get_ticks()MainGame.allSprites.update(self.keys, currentTime)# 显示物体MainGame.allSprites.draw(window)if __name__ __main__:MainGame().run()我们现在运行一下看看效果 我们发现角色处于跳跃的样子并且向前移动这不符合我们的预期预期应该是站在那里 原因在于角色一开始创建时的状态不对 当前没有实现falling()函数所以下落状态没有办法显示所以我们修改一下修改角色类中__init__()函数 # 设置角色的状态 self.state State.FALL 改为 self.state State.STAND改完后运行一下看看结果 按a和d键玩家会一直移动不会停下来 到此我们就写好了玩家站立函数了下面我们来写玩家移动函数 完整的玩家类__init__()函数代码 def __init__(self, currentTime):pygame.sprite.Sprite.__init__(self)# 加载角色图片self.standRightImage loadImage(../Image/Player/Player1/Right/stand.png)self.standLeftImage loadImage(../Image/Player/Player1/Left/stand.png)self.upRightImage loadImage(../Image/Player/Player1/Up/upRight(small).png)self.upLeftImage loadImage(../Image/Player/Player1/Up/upLeft(small).png)self.downRightImage loadImage(../Image/Player/Player1/Down/down.png)self.downLeftImage loadImage(../Image/Player/Player1/Down/down.png, True)self.obliqueUpRightImages [loadImage(../Image/Player/Player1/Up/rightUp1.png),loadImage(../Image/Player/Player1/Up/rightUp2.png),loadImage(../Image/Player/Player1/Up/rightUp3.png),]self.obliqueUpLeftImages [loadImage(../Image/Player/Player1/Up/rightUp1.png, True),loadImage(../Image/Player/Player1/Up/rightUp2.png, True),loadImage(../Image/Player/Player1/Up/rightUp3.png, True),]self.obliqueDownRightImages [loadImage(../Image/Player/Player1/ObliqueDown/1.png),loadImage(../Image/Player/Player1/ObliqueDown/2.png),loadImage(../Image/Player/Player1/ObliqueDown/3.png),]self.obliqueDownLeftImages [loadImage(../Image/Player/Player1/ObliqueDown/1.png, True),loadImage(../Image/Player/Player1/ObliqueDown/2.png, True),loadImage(../Image/Player/Player1/ObliqueDown/3.png, True),]# 角色向右的全部图片self.rightImages [loadImage(../Image/Player/Player1/Right/run1.png),loadImage(../Image/Player/Player1/Right/run2.png),loadImage(../Image/Player/Player1/Right/run3.png)]# 角色向左的全部图片self.leftImages [loadImage(../Image/Player/Player1/Left/run1.png),loadImage(../Image/Player/Player1/Left/run2.png),loadImage(../Image/Player/Player1/Left/run3.png)]# 角色跳跃的全部图片self.upRightImages [loadImage(../Image/Player/Player1/Jump/jump1.png),loadImage(../Image/Player/Player1/Jump/jump2.png),loadImage(../Image/Player/Player1/Jump/jump3.png),loadImage(../Image/Player/Player1/Jump/jump4.png),]self.upLeftImages [loadImage(../Image/Player/Player1/Jump/jump1.png, True),loadImage(../Image/Player/Player1/Jump/jump2.png, True),loadImage(../Image/Player/Player1/Jump/jump3.png, True),loadImage(../Image/Player/Player1/Jump/jump4.png, True),]self.rightFireImages [loadImage(../Image/Player/Player1/Right/fire1.png),loadImage(../Image/Player/Player1/Right/fire2.png),loadImage(../Image/Player/Player1/Right/fire3.png),]self.leftFireImages [loadImage(../Image/Player/Player1/Right/fire1.png, True),loadImage(../Image/Player/Player1/Right/fire2.png, True),loadImage(../Image/Player/Player1/Right/fire3.png, True),]# 角色左右移动下标self.imageIndex 0# 角色跳跃下标self.upImageIndex 0# 角色斜射下标self.obliqueImageIndex 0# 上一次显示图片的时间self.runLastTimer currentTimeself.fireLastTimer currentTime# 选择当前要显示的图片self.image self.standRightImage# 获取图片的rectself.rect self.image.get_rect()# 设置角色的状态self.state State.STAND# 角色的方向self.direction Direction.RIGHT# 速度self.xSpeed PLAYER_X_SPEEDself.ySpeed 0self.jumpSpeed -11# 人物当前的状态标志self.isStanding Falseself.isWalking Falseself.isJumping Trueself.isSquating Falseself.isFiring False# 重力加速度self.gravity 0.7self.isUp Falseself.isDown False2. 角色移动 打开注释开始编写角色移动函数 同样的先设置角色的状态因为是角色移动所以只有isWalking为真其他都是假 self.isStanding False self.isWalking True self.isJumping False self.isSquating False self.isFiring False设置速度 self.ySpeed 0 self.xSpeed PLAYER_X_SPEED判断当前状态根据当前状态准备下一状态的图片 # 如果当前是站立的图片 if self.isStanding:# 方向向右方向向上if self.direction Direction.RIGHT and self.isUp:# 设置为向右朝上的图片self.image self.upRightImage# 方向向右elif self.direction Direction.RIGHT and not self.isUp:# 设置为向右站立的图片self.image self.standRightImageelif self.direction Direction.LEFT and self.isUp:self.image self.upLeftImageelif self.direction Direction.LEFT and not self.isUp:self.image self.standLeftImage# 记下当前时间self.runLastTimer currentTime else:# 如果是走动的图片先判断方向if self.direction Direction.RIGHT:# 设置速度self.xSpeed PLAYER_X_SPEED# 根据上下方向觉得是否角色要加载斜射的图片if self.isUp or self.isDown:# isUp True表示向上斜射# isDown True表示向下斜射# 计算上一次加载图片到这次的时间如果大于115即11.5帧即上次加载图片到这次加载图片之间已经加载了11张图片if currentTime - self.runLastTimer 115:# 那么就可以加载斜着奔跑的图片# 如果角色加载的图片不是第三张则加载下一张就行if self.obliqueImageIndex 2:self.obliqueImageIndex 1# 否则就加载第一张图片else:self.obliqueImageIndex 0# 记录变换图片的时间为下次变换图片做准备self.runLastTimer currentTime# 不是斜射else:# 加载正常向右奔跑的图片if currentTime - self.runLastTimer 115:if self.imageIndex 2:self.imageIndex 1else:self.imageIndex 0self.runLastTimer currentTimeelse:self.xSpeed -PLAYER_X_SPEEDif self.isUp or self.isDown:if currentTime - self.runLastTimer 115:if self.obliqueImageIndex 2:self.obliqueImageIndex 1else:self.obliqueImageIndex 0self.runLastTimer currentTimeelse:if currentTime - self.runLastTimer 115:if self.imageIndex 2:self.imageIndex 1else:self.imageIndex 0self.runLastTimer currentTime完成图片加载后处理按键响应 # 按下D键 if keys[pygame.K_d]:self.direction Direction.RIGHTself.xSpeed PLAYER_X_SPEED # 按下A键 elif keys[pygame.K_a]:self.direction Direction.LEFTself.xSpeed -PLAYER_X_SPEED# 按下S键 elif keys[pygame.K_s]:self.isStanding Falseself.isDown True# 按下W键 if keys[pygame.K_w]:self.isUp Trueself.isDown False # 没有按键按下 else:self.state State.STAND# 移动时按下K键 if keys[pygame.K_k]:# 角色状态变为跳跃self.state State.JUMPself.ySpeed self.jumpSpeedself.isJumping Trueself.isStanding False完整的walking()函数代码 def walking(self, keys, currentTime):角色行走每10帧变换一次图片self.isStanding Falseself.isWalking Trueself.isJumping Falseself.isSquating Falseself.isFiring Falseself.ySpeed 0self.xSpeed PLAYER_X_SPEED# 如果当前是站立的图片if self.isStanding:# 方向向右方向向上if self.direction Direction.RIGHT and self.isUp:# 设置为向右朝上的图片self.image self.upRightImage# 方向向右elif self.direction Direction.RIGHT and not self.isUp:# 设置为向右站立的图片self.image self.standRightImageelif self.direction Direction.LEFT and self.isUp:self.image self.upLeftImageelif self.direction Direction.LEFT and not self.isUp:self.image self.standLeftImage# 记下当前时间self.runLastTimer currentTimeelse:# 如果是走动的图片先判断方向if self.direction Direction.RIGHT:# 设置速度self.xSpeed PLAYER_X_SPEED# 根据上下方向觉得是否角色要加载斜射的图片if self.isUp or self.isDown:# isUp True表示向上斜射# isDown True表示向下斜射# 计算上一次加载图片到这次的时间如果大于115即11.5帧即上次加载图片到这次加载图片之间已经加载了11张图片if currentTime - self.runLastTimer 115:# 那么就可以加载斜着奔跑的图片# 如果角色加载的图片不是第三张则加载下一张就行if self.obliqueImageIndex 2:self.obliqueImageIndex 1# 否则就加载第一张图片else:self.obliqueImageIndex 0# 记录变换图片的时间为下次变换图片做准备self.runLastTimer currentTime# 不是斜射else:# 加载正常向右奔跑的图片if currentTime - self.runLastTimer 115:if self.imageIndex 2:self.imageIndex 1else:self.imageIndex 0self.runLastTimer currentTimeelse:self.xSpeed -PLAYER_X_SPEEDif self.isUp or self.isDown:if currentTime - self.runLastTimer 115:if self.obliqueImageIndex 2:self.obliqueImageIndex 1else:self.obliqueImageIndex 0self.runLastTimer currentTimeelse:if currentTime - self.runLastTimer 115:if self.imageIndex 2:self.imageIndex 1else:self.imageIndex 0self.runLastTimer currentTime# 按下D键if keys[pygame.K_d]:self.direction Direction.RIGHTself.xSpeed PLAYER_X_SPEED# 按下A键elif keys[pygame.K_a]:self.direction Direction.LEFTself.xSpeed -PLAYER_X_SPEED# 按下S键elif keys[pygame.K_s]:self.isStanding Falseself.isDown True# 按下W键if keys[pygame.K_w]:self.isUp Trueself.isDown False# 没有按键按下else:self.state State.STAND# 移动时按下K键if keys[pygame.K_k]:# 角色状态变为跳跃self.state State.JUMPself.ySpeed self.jumpSpeedself.isJumping Trueself.isStanding False运行一下看看效果 哇实现了我们就完成了角色移动了 3. 角色跳跃 首先设置状态标志 # 设置标志 self.isJumping True self.isStanding False self.isDown False self.isSquating False self.isFiring False更新速度 self.ySpeed self.gravity跳跃后角色的y坐标是减少的所以速度原来是负数由于跳起到最高点速度一直减小所以这里我们设置了重力保证速度慢慢减少到0 根据时间决定是否显示下一张图片 if currentTime - self.runLastTimer 115:if self.upImageIndex 3:self.upImageIndex 1else:self.upImageIndex 0# 记录变换图片的时间为下次变换图片做准备self.runLastTimer currentTime设置按键响应事件 if keys[pygame.K_d]:self.direction Direction.RIGHTelif keys[pygame.K_a]:self.direction Direction.LEFT# 按下W键 if keys[pygame.K_w]:self.isUp Trueself.isDown False elif keys[pygame.K_s]:self.isUp Falseself.isDown True# 当速度变为正数玩家进入下落状态 if self.ySpeed 0:self.state State.FALLif not keys[pygame.K_k]:self.state State.FALL完整jumping()函数代码 def jumping(self, keys, currentTime):跳跃# 设置标志self.isJumping Trueself.isStanding Falseself.isDown Falseself.isSquating Falseself.isFiring False# 更新速度self.ySpeed self.gravityif currentTime - self.runLastTimer 115:if self.upImageIndex 3:self.upImageIndex 1else:self.upImageIndex 0# 记录变换图片的时间为下次变换图片做准备self.runLastTimer currentTimeif keys[pygame.K_d]:self.direction Direction.RIGHTelif keys[pygame.K_a]:self.direction Direction.LEFT# 按下W键if keys[pygame.K_w]:self.isUp Trueself.isDown Falseelif keys[pygame.K_s]:self.isUp Falseself.isDown Trueif self.ySpeed 0:self.state State.FALLif not keys[pygame.K_k]:self.state State.FALL4. 角色下落 def falling(self, keys, currentTime):# 下落时速度越来越快所以速度需要一直增加self.ySpeed self.gravityif currentTime - self.runLastTimer 115:if self.upImageIndex 3:self.upImageIndex 1else:self.upImageIndex 0self.runLastTimer currentTime# 防止落到窗口外面当落到一定高度时就不会再掉落了if self.rect.bottom SCREEN_HEIGHT - GROUND_HEIGHT:self.state State.WALKself.ySpeed 0self.rect.bottom SCREEN_HEIGHT - GROUND_HEIGHTself.isJumping Falseif keys[pygame.K_d]:self.direction Direction.RIGHTself.isWalking Falseelif keys[pygame.K_a]:self.direction Direction.LEFTself.isWalking False我们现在来看看效果运行一下 不要忘记打开注释 到现在我们实现了角色移动、跳跃啦下面就是发射子弹了
http://www.hkea.cn/news/14296822/

相关文章:

  • 模板网站制作视频制作网站需要什么知识
  • 怎么查看网站的安全性建立公司官网多少钱
  • 企业网站开发使用方法wordpress的插件安装
  • html5 mysql 网站开发长沙网站建设做得好的
  • 网站正在建设中 htmll中国建设项目招标网站
  • 站长工具亚洲中文精品设计网站公司都选亿企邦
  • 袜子技术支持北京网站建设做外贸找产品上哪个网站好
  • wordpress get attachment长沙seo优化推广
  • 合肥网站建设行情广州推广seo
  • 在婚恋网站上做红娘怎么样室内设计效果图的网站
  • 广州注册公司地址要求沈阳网站关键词优化服务好
  • 网站开发三大框架免费好用的企业邮箱
  • 做建筑机械网站那个网站好opencart zencart网站建设
  • 南京网站建设价格长春市建设集团
  • 本网站仅支持ie浏览器六安城市网官网
  • wordpress 建站教程 下载大连公司
  • 石家庄晋州网站建设阿里云能做网站么
  • 如何查询网站备案号网站开发人员趋势
  • 群晖可以做网站吗招商网站建设全包
  • 南京手机网站制作公司做游戏音频下载网站
  • 专门做各种产品测评的网站asp网站源码安装流程
  • 合肥网站推广优化公司个人网站logo
  • 视频网站直播怎么做的企业手机网站建设信息
  • 佛山市研发网站建设哪家好网站开发时自适应
  • 下列关于网站开发中网页上传和武夷山网站定制
  • 无锡网站制作公司哪家好廊坊seo整站优化软件
  • 网站建设售后回访话术东莞市广建建设工程有限公司
  • 网站建设年度报告注册google账号
  • 住房和城市建设厅网站2016企业网站建设方案
  • 河南专业网站建设公司排名中小企业建站是什么