首页 > 解决方案 > 如何在相同坐标上转动蛇段?

问题描述

我的蛇游戏的移动有问题。我已经绘制了两个矩形,现在我想知道如何让这些矩形打开相同的坐标。我已经定义了第一个矩形转弯。我还希望第二个矩形转动是第一个立方体转动。这是我的代码:

import pygame
import random
pygame.init()

win = pygame.display.set_mode((500, 500))
pygame.display.set_caption("Snake")


class player:
    def __init__(self, x, y, width, height, colour, vel):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.colour = colour
        self.vel = vel


class food:

    def __init__(self, radius, colour):
        self.radius = radius
        self.colour = colour


# Variables
run = True
fo = food(10, (100, 0, 0))
man = player(50, 50, 20, 20, (200, 0, 0), 10)
direction = 0
y_food = 100
x_food = 100
y_change = 0
x_change = 0
snake_length = [1,2,3]
y_pos = 0
x_pos= 0
pos_x=50
pos_y =50

while run:
    pygame.time.delay(100)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        direction = 0
        x_change = -50
        y_change = 0
        pos_x = man.x
        pos_y = man.y
    elif keys[pygame.K_RIGHT]:
        direction = 1
        x_change = 50
        y_change = 0
        pos_x = man.x
        pos_y = man.y
    elif keys[pygame.K_UP]:
        direction = 2
        x_change = 0
        y_change = -50
        pos_x = man.x
        pos_y = man.y
    elif keys[pygame.K_DOWN]:
        direction = 3
        x_change = 0
        y_change = 50
        pos_x = man.x
        pos_y = man.y

    x_pos = (pos_x - x_change)
    y_pos = (pos_y - y_change)

# head
    if direction == 0:
        man.x = man.x - man.vel
    elif direction == 1:
        man.x = man.x + man.vel
    elif direction == 2:
        man.y = man.y - man.vel
    elif direction == 3:
        man.y = man.y + man.vel

    if y_food - 10 < man.y < y_food + 10:
        if x_food < man.x < x_food + 10 or x_food < man.x +20 < x_food + 15:
            x_food = random.randint(0, 500)
            y_food = random.randint(0, 500)

    win.fill((0, 0, 0))

    pygame.draw.circle(win, fo.colour, (x_food, y_food), fo.radius)
    pygame.draw.rect(win, man.colour, (man.x, man.y, man.width, man.height))
    pygame.draw.rect(win, man.colour, (x_pos, y_pos, man.width, man.height))

    pygame.display.update()

pygame.quit()

标签: pythonpygame

解决方案


推荐阅读