pygame 代码中的错误

Posted

技术标签:

【中文标题】pygame 代码中的错误【英文标题】:error in a pygame code 【发布时间】:2011-02-08 13:54:48 【问题描述】:
# INTIALISATION
import pygame, math, sys
from pygame.locals import *
screen = pygame.display.set_mode((1024, 768))
car = pygame.image.load('car.png')
clock = pygame.time.Clock()
k_up = k_down = k_left = k_right = 0
speed = direction = 0
position = (100, 100)
TURN_SPEED = 5
ACCELERATION = 2
MAX_FORWARD_SPEED = 10
MAX_REVERSE_SPEED = ­5
BLACK = (0,0,0)
while 1:
    # USER INPUT
    clock.tick(30)
    for event in pygame.event.get():
        if not hasattr(event, 'key'): continue
        down = event.type == KEYDOWN     # key down or up?
        if event.key == K_RIGHT: k_right = down * ­5
        elif event.key == K_LEFT: k_left = down * 5
        elif event.key == K_UP: k_up = down * 2
        elif event.key == K_DOWN: k_down = down * ­2
        elif event.key == K_ESCAPE: sys.exit(0)     # quit the game
    screen.fill(BLACK)
    # SIMULATION
    # .. new speed and direction based on acceleration and turn
    speed += (k_up + k_down)
    if speed > MAX_FORWARD_SPEED: speed = MAX_FORWARD_SPEED
    if speed < MAX_REVERSE_SPEED: speed = MAX_REVERSE_SPEED
    direction += (k_right + k_left)
    # .. new position based on current position, speed and direction
    x, y = position
    rad = direction * math.pi / 180
    x += ­speed*math.sin(rad)
    y += ­speed*math.cos(rad)
    position = (x, y)
    # RENDERING
    # .. rotate the car image for direction
    rotated = pygame.transform.rotate(car, direction)
    # .. position the car on screen
    rect = rotated.get_rect()
    rect.center = position
    # .. render the car to screen
    screen.blit(rotated, rect)
    pygame.display.flip()
    enter code here

我得到的错误是第 13 行文件race1.py 中的这个非ASCII 字符'\xc2',但没有声明编码;详情见http://www.python.org/peps/pep-0263.html

无法理解错误是什么以及如何摆脱它?

【问题讨论】:

【参考方案1】:

您在第 13 行有一个非 ASCII 字符。Python 不接受源文件中的 UTF-8,除非您在文件顶部添加特殊注释:

# encoding: UTF-8

【讨论】:

【参考方案2】:

正如 Greg 所说,您的代码中有一个非 ascii 字符 - 在第 13 行的 5 前面看起来像一个减号。它被称为“软连字符”。此字符出现在代码中的几个位置,而不是减号。删除这些字符并用减号替换。

您上面的代码没有显示该字符。不知道为什么。当我将其复制并粘贴到文本编辑器中时,我可以看到该字符。

如果您在代码顶部放置编码注释,例如:

# -*- coding: utf-8 -*-

您将收到带有“软连字符”的语法错误。所以你需要用减号替换它们。 (这样就不需要代码顶部的编码注释了。)

【讨论】:

以上是关于pygame 代码中的错误的主要内容,如果未能解决你的问题,请参考以下文章

Pygame 没有 blitting 图像,而是吐出类型错误

Pygame Blitting错误

在 Pygame 中加载资产时出现 FileNotFound 错误 [重复]

我无法修复的 Pygame2Exe 错误

退出 pygame 窗口后出现 pygame 错误

pygame 错误:“ImportError:没有名为 'pygame' 的模块”