неподдерживаемые типы операндов для +: ошибки 'NoneType' и 'complex', в то время как оба являются сложными - PullRequest
0 голосов
/ 18 февраля 2019

Я получаю ошибку с операндом, сравнивающим 2 комплексных числа.Я уверен, что оба являются комплексными числами, потому что, когда я наведу курсор на переменные в VS Code, в каждом случае он четко говорит «Комплекс».

Итак, я создал следующий класс

class Snake(object):
    def __init__(self):
        self.pos = [random.randint(1, (width-sqr_size)/sqr_size)*sqr_size,
                    random.randint(1, (height-sqr_size)/sqr_size)*sqr_size]
        self.mov = 1 + 0j
        self.body = [self.pos[:]]

    def move(self, key): #Snake movement
        if key + self.mov != 0 + 0j:
            self.mov = copy.copy(key)
        self.pos += self.mov*SPEED
        self.body.insert(0, self.pos[:])

иследующая функция

def whatkey(event):
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_LEFT:
            return (-1 + 0j)
        if event.key == pygame.K_RIGHT:
            return (1 + 0j)
        if event.key == pygame.K_UP:
            return (0 + 1j)
        if event.key == pygame.K_DOWN:
            return (0 - 1j)

Я называю их так

key1 = 0 + 0j
key1 = whatkey(event)
snake.move(key1)

Возможно, проблема в операции '+' в if copy.copy(key) + self.mov != 0 + 0j:

Когда я пытаюсь запуститьВ моей игре появляется следующая ошибка в названии.unsupported operand type(s) for +: 'NoneType' and 'complex'

Я не понимаю, ключ1 ВСЕГДА является комплексным числом, он никогда не равен None

1 Ответ

0 голосов
/ 18 февраля 2019

Измените свой код следующим образом, и вы увидите свою ошибку:

def whatkey(event):
if event.type == pygame.KEYDOWN:
    if event.key == pygame.K_LEFT:
        return (-1 + 0j)
    if event.key == pygame.K_RIGHT:
        return (1 + 0j)
    if event.key == pygame.K_UP:
        return (0 + 1j)
    if event.key == pygame.K_DOWN:
        return (0 - 1j)
    print("event.key is ", event.key)
    print("Crap... I have to return None!")
    # code ends now and python returns whatkey(event) = None
...