python - 对象的方向被迭代
问题描述
我正在重拍涂鸦跳跃。我遇到的问题是对象面对的方向被迭代了。我的意思是这样的:如果方向等于“右”,但是,您决定通过循环进一步改变方向,所以方向应该变为“左”,但由于循环从第一行,它几乎立即变回“正确”方向。
像这样:循环:右如果发生什么事:左
问题是循环从第一行开始,所以它立即回到右边
这是代码:
class Player():
def __init__(self, x, y):
self.direction = -1
player_img = pygame.image.load('player1.png')
if self.direction == 1:
self.player = pygame.transform.scale(player_img, (100, 100))
if self.direction == -1:
player = pygame.transform.scale(player_img, (100, 100))
self.player = pygame.transform.flip(player, True, False)
self.rect = self.player.get_rect()
self.rect.x = x
self.rect.y = y
self.vel_y = 0
self.jumped = False
def update(self):
dx = 0
dy = 0
# Key windings
key = pygame.key.get_pressed()
if key[pygame.K_LEFT]:
dx -= 5
self.direction = -1
if key[pygame.K_RIGHT]:
dx += 5
self.direction = 1
解决方案
所以这就是我重新定义你的班级的方式:
class Player():
def __init__(self, x, y):
self.direction = -1
self.player_img_left = pygame.transform.scale(pygame.image.load('player1.png'), (100, 100))
self.player_img_right = pygame.image.flip(self.player_img_left, True, False)
self.rect = self.player_img_left.get_rect()
self.direction = 1
self.rect.x = x
self.rect.y = y
self.vel_y = 0
self.jumped = False
def update(self):
dx = 0
dy = 0
# Key windings
key = pygame.key.get_pressed()
if key[pygame.K_LEFT]:
dx -= 5
self.direction = 1
if key[pygame.K_RIGHT]:
dx += 5
self.direction = -1
if self.direction == -1:
img = self.player_img_right
elif self.direction == 1:
img = self.player_img_left
最后你会想要blit img
(我也可能弄乱了左右)
推荐阅读
- java - 设置属性“java.io.tmpdir”会导致测试失败
- ruby-on-rails - Rails 脚手架关联 has_many 错误:1 个错误禁止保存此产品
- php - 我的代码有什么问题?我在调用未定义的方法 mysqli::error() 时出错
- php - 尝试使用 ErrorDocument 处理请求时遇到 403 禁止错误。PHP 声音
- html - 为什么这个导航栏不会显示在其他所有内容之上?
- html - Bootstrap 'row' 类不适用于 CDN 或下载版本
- java - 如果我只需要通过套接字发送 1 个字节,我可以只使用一个字符吗?
- ruby-on-rails - 具有静态属性的 FactoryBot 工厂
- go - 如何计算golang溢出?
- php - 如果仍然返回错误的数组