You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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()

额外优化说明

  1. 补充了redrawGameWindow函数中向右移动和站立状态的画面绘制逻辑,避免角色仅能向左移动的问题
  2. 在键盘控制逻辑中添加walkCount += 1,让行走动画正常播放
  3. 将pygame.quit()移到主循环结束后,避免事件循环中提前退出引发异常

内容的提问来源于stack exchange,提问作者Hasin Arman Dhrubo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 14:35:11