Неверный синтаксис Pygame, который я просто не могу понять
Вопрос
Я следовал руководству "МакГуган - начало разработки игр с помощью 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()
я делаю что-то неправильно или это просто устарело?
Нам очень нужна любая помощь.
Решение
В этой строке:
destination = Vector2(*event.pos) – Vector2(*sprite.get_size())/2.
Вы каким - то образом ввели этот символ "–
" (Через ТИРЕ) вместо "-
" (ДЕФИС-МИНУС).Использовать "-
" (ДЕФИС-МИНУС) вместо этого, вот так:
destination = Vector2(*event.pos) - Vector2(*sprite.get_size())/2.
Другие советы
Я не могу быть уверен без трассировки стека, но у меня есть предчувствие, что это неправильный символ.Каким редактором вы пользуетесь?Возможно ли, что ваш редактор берет символ - и превращает его в более причудливую черточку, например, ndash или mdash?
Может быть, попробовать изменить скорость на "speed = 250,0".Я не знаю, сбила бы python с толку эта болтающаяся точка.
Что здесь происходит, по крайней мере, с вашим сообщением об ошибке, так это то, что анализатор Python спотыкается о что-то перед вашим '-', что портит его интерпретацию '-'.Поэтому я рекомендую поискать опечатки перед '-'.
Кроме того, убедитесь, что вы включили видимое пустое пространство в своем редакторе при отладке кода Python.Это может быть ошибка пробела, которая была бы невидима для нас при переполнении стека.
Редактировать:
Так что я был совершенно неправ насчет того, что ошибка '-' была отвлекающим маневром.Но имейте в виду это поведение синтаксического анализатора / помните о пробелах, это может помочь в будущем.
Прошу прощения, если для вас это очевидно, но я не знаю, на каком уровне вы владеете Python.