Python Pygame中'tick'属性不存在错误的解决求助
问题修复:Pygame帧率设置报错解决
核心错误修复
报错原因是你没有实例化Clock类,而是直接将类本身赋值给了clock变量。修改这一行即可解决:
# 原错误代码 clock = pygame.time.Clock # 修复后 clock = pygame.time.Clock()
修复后的完整代码
import pygame pygame.init() window = pygame.display.set_mode((500 , 500)) pygame.display.set_caption("G") walkRight = [pygame.image.load('R1.png'), pygame.image.load('R2.png'), pygame.image.load('R3.png'), pygame.image.load('R4.png'), pygame.image.load('R5.png'), pygame.image.load('R6.png'), pygame.image.load('R7.png'), pygame.image.load('R8.png'), pygame.image.load('R9.png')] walkLeft = [pygame.image.load('L1.png'), pygame.image.load('L2.png'), pygame.image.load('L3.png'), pygame.image.load('L4.png'), pygame.image.load('L5.png'), pygame.image.load('L6.png'), pygame.image.load('L7.png'), pygame.image.load('L8.png'), pygame.image.load('L9.png')] bg = pygame.image.load('bg.jpg') char = pygame.image.load('standing.png') # 修复Clock实例化 clock = pygame.time.Clock() x = 50 y = 50 width = 64 height = 64 vel = 5 FPS = 27 jumping = False jump_count = 10 left = False right = False walkCount = 0 def redrawGameWindow(): global walkCount window.blit(bg , (0, 0)) if walkCount + 1 >= 27: walkCount = 0 if left: window.blit(walkLeft[walkCount//3] , (x,y)) elif right: window.blit(walkRight[walkCount//3] , (x,y)) else: window.blit(char, (x, y)) pygame.display.update() running = True while running: clock.tick(FPS) for event in pygame.event.get(): if event.type == pygame.QUIT: running = False if not running: break neg = 1 keys = pygame.key.get_pressed() if keys[pygame.K_LEFT]: x -= vel left = True right = False walkCount += 1 elif keys[pygame.K_RIGHT]: x += vel right = True left = False walkCount += 1 else: left = False right = False walkCount = 0 if not jumping: if keys[pygame.K_UP]: y -= vel if keys[pygame.K_DOWN]: y += vel if keys[pygame.K_SPACE]: jumping = True else: if jump_count >= -10: neg = 1 if jump_count < 0: neg = -1 y -= jump_count ** 2 * 0.5 * neg jump_count -= 1 else: jumping = False jump_count = 10 redrawGameWindow() pygame.quit()
额外优化说明
- 补充了
redrawGameWindow函数中向右移动和站立状态的画面绘制逻辑,避免角色仅能向左移动的问题 - 在键盘控制逻辑中添加
walkCount += 1,让行走动画正常播放 - 将
pygame.quit()移到主循环结束后,避免事件循环中提前退出引发异常
内容的提问来源于stack exchange,提问作者Hasin Arman Dhrubo
相关产品推荐
相关产品推荐

