Я пытался переопределить местоположение, но оно не остановит выдачу ошибки NoneType.
Я также пытался определить направление в классе, но безрезультатно. Я также попытался удалить объявление без указания местоположения в функции Head init , без изменений.
Traceback (most recent call last):
File "main.py", line 55, in <module>
head.draw()
File "main.py", line 39, in draw
start_point = (self.location[0] + paddingSize, self.location[0] + paddingSize)
TypeError: 'NoneType' object is not subscriptable
import pygame
size = 24
paddingSize = 1
displaySize = 960
def add(a, b):
a = list(a)
for xi in range(len(a)):
a[xi] += b[xi]
class SnakePart:
location = (0, 0) # x, y
direction = (0, 0)
def __init__(self, next_part, direction):
self.direction = direction
self.location = next_part.location
if direction[0]: # up
self.location[0] += 1
elif not direction[0]: # down
self.location[0] -= 1
elif direction[1]: # right
self.location[0] += 1
elif not direction[1]: # left
self.location[0] -= 1
class Head(SnakePart):
def __init__(self, start_pos, direction):
self.location = start_pos
self.direction = direction
def move(self, direction):
self.direction = direction
def draw(self):
start_point = (self.location[0] + paddingSize, self.location[0] + paddingSize)
end_point = (start_point[0] + paddingSize + sizeOfSquare, start_point[1] + paddingSize + sizeOfSquare)
self.location = add(self.location, self.direction)
pygame.draw.rect(surface, (52, 60, 107), pygame.Rect(start_point, end_point))
pygame.display.init()
display = pygame.display.set_mode(size=(displaySize, displaySize))
surface = pygame.display.get_surface()
sizeOfSquare = (displaySize/size)-paddingSize*2
clock = pygame.time.Clock()
pygame.key.set_repeat(100)
head = Head((0, 0), (-1, 0))
while True:
clock.tick(60)
display.fill((0, 0, 0))
head.draw()