Если змея может двигаться только под определенными углами (например, 90 или 45 градусов), что типично в такой игре, есть только 4 или 8 направлений, по которым вы можете идти. Вы можете просто разделить угол на допустимое приращение и получить индекс направления, который затем можно использовать для индексации в таблице смещений X / Y. Это будет намного быстрее, чем при использовании тригонометрии.
x, y = 100, 100 # starting position of the snake
direction = angle / 90 % 4 # convert angle to direction
directions = [(0,-1), (1, 0), (0, 1), (-1, 0)] # up, right, down, left
# convert the direction to x and y offsets for the next move
xoffset, yoffset = directions[direction]
# calculate the next move
x, y = x + xoffset, y + yoffset
Еще лучше, полностью отказаться от концепции угла и просто использовать переменную направления. Затем вращение змеи - это просто увеличение или уменьшение направления.
# rotate counter-clockwise
direction = (direction - 1) % 4
# rotate clockwise
direction = (direction + 1) % 4
При желании его можно легко расширить до 8 направлений (с шагом 45 градусов).