Неверный синтаксис Pygame Я просто не могу понять - PullRequest
0 голосов
/ 08 апреля 2009

Я следовал учебному пособию «McGugan - начало разработки игр с использованием Python и Pygame (Apress, 2007)», и в коде, описанном в главе пятой, касающейся перемещения объектов, я продолжаю получать недопустимые синтаксические предупреждения при использовании «-» код. Это не актуально, но я бы подумал, что вычитание не будет изменено ни в каких обновлениях из-за его простоты и необходимости.

Это код, который у меня есть:

background_image_filename = 'sushiplate.jpg'
sprite_image_filename = 'fugu.png'
import pygame
from pygame.locals import *
from sys import exit
from gameobjects.vector2 import Vector2
pygame.init()
screen = pygame.display.set_mode((640, 480), 0, 32)
background = pygame.image.load(background_image_filename).convert()
sprite = pygame.image.load(sprite_image_filename).convert_alpha()
clock = pygame.time.Clock()
position = Vector2(100.0, 100.0)
speed = 250.
heading = Vector2()
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            exit()
    if event.type == MOUSEBUTTONDOWN:
        destination = Vector2(*event.pos) – Vector2(*sprite.get_size())/2.
        heading = Vector2.from_points(position, destination)
        heading.normalize()
    screen.blit(background, (0,0))
    screen.blit(sprite, position)
    time_passed = clock.tick()
    time_passed_seconds = time_passed / 1000.0
    distance_moved = time_passed_seconds * speed
    position += heading * distance_moved
    pygame.display.update()

я что-то не так делаю или это просто устарело?

Любая помощь очень нужна.

Ответы [ 3 ]

5 голосов
/ 08 апреля 2009

В этой строке:

destination = Vector2(*event.pos) – Vector2(*sprite.get_size())/2.

Вы как-то набрали символ "" (EN DASH) вместо "-" (HYPHEN-MINUS). Вместо этого используйте «-» (HYPHEN-MINUS), например:

destination = Vector2(*event.pos) - Vector2(*sprite.get_size())/2.
0 голосов
/ 08 апреля 2009

Возможно, попробуйте изменить скорость на «скорость = 250,0». Я не знаю, отбросит ли эта висячая точка питона.

То, что здесь происходит, по крайней мере с вашим сообщением об ошибке, заключается в том, что парсер Python наткнулся на что-то перед вашим «-», что испортило его интерпретацию «-». Поэтому я рекомендую поискать опечатки перед '-'.

Кроме того, убедитесь, что вы включаете видимые пробелы в редакторе при отладке кода Python. Это может быть ошибка пробела, которая будет невидима для нас при переполнении стека.

EDIT:
Так что я был совершенно неправ по поводу того, что эта ошибка - красная сельдь. Но помните о том, что такое поведение парсера / пустое пространство, может помочь в будущем.

Извиняюсь, если это очевидно для вас, я не знаю, на каком уровне вы находитесь с Python.

0 голосов
/ 08 апреля 2009

Я не могу быть уверен без трассировки стека, но у меня есть догадка, что это неправильный символ. Какой редактор вы используете? Возможно ли, что ваш редактор берет символ - и превращает его в причудливую черту, как ndash или mdash?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...