Неверный синтаксис Pygame, который я просто не могу понять

StackOverflow https://stackoverflow.com/questions/731057

  •  06-09-2019
  •  | 
  •  

Вопрос

Я следовал руководству "МакГуган - начало разработки игр с помощью 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top