python - 如何在相同坐标上转动蛇段?
问题描述
我的蛇游戏的移动有问题。我已经绘制了两个矩形,现在我想知道如何让这些矩形打开相同的坐标。我已经定义了第一个矩形转弯。我还希望第二个矩形转动是第一个立方体转动。这是我的代码:
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()
解决方案
推荐阅读
- ios - 没有为应用程序找到有效的 aps-environment 权利字符串
- r - 在 R 中创建箱线图
- multithreading - Delphi 从后台线程调用 TDBGrid.Datasource.Dataset.Refresh
- python - 使用 Models.py 创建新数据库时无法在 Django 中验证登录页面
- c - 哪个更好,双重否定还是位移?
- c - MQTT 上的 CAN 帧(需要将十六进制字符串转换为字节数组)
- javascript - 如何从js中不同类型的变量中获取布尔值
- r - 如何将行名转换为元素列表中的列
- flutter - 如何在颤动中向实例化的小部件添加功能?
- unity3d - 如何让单位包围目标?