Python 在蛇游戏中增加蛇的长度

Python 在蛇游戏中增加蛇的长度,python,pygame,Python,Pygame,我目前的代码使吃苹果的长度增加到蛇头后面的直线上。我如何使它成为像普通蛇游戏一样的轨迹?如果有人能帮我解决这个问题而不是粘贴,那就太好了 这是我的完整代码(它使用png文件,所以如果您尝试它,它可能不会运行) 导入pygame,随机,时间 pygame.init() 屏幕宽度=500 屏幕高度=500 window=pygame.display.set_模式((屏幕宽度、屏幕高度)) pygame.display.set_标题(“蛇”) x=random.randint(30440) y=ran

我目前的代码使吃苹果的长度增加到蛇头后面的直线上。我如何使它成为像普通蛇游戏一样的轨迹?如果有人能帮我解决这个问题而不是粘贴,那就太好了

这是我的完整代码(它使用png文件,所以如果您尝试它,它可能不会运行)

导入pygame,随机,时间
pygame.init()
屏幕宽度=500
屏幕高度=500
window=pygame.display.set_模式((屏幕宽度、屏幕高度))
pygame.display.set_标题(“蛇”)
x=random.randint(30440)
y=random.randint(30,44)
蛇x=x-30
snakey=y
previousx=蛇
先前的=蛇
运行=真
appleNeeded=真
direction=“right”
需要的长度=错误
长度1=真
长度=3
检查=正确
蛇身=[]
#创建图像(蛇头、苹果和蛇尾)
#蛇头类(pygame.sprite.sprite):
#定义初始值(self,):
snakeHeadUp=pygame.image.load(“snakeHeadUp.png”)
snakeHeadUp=pygame.transform.scale(snakeHeadUp,(30,30))
snakeHeadLeft=pygame.image.load(“snakeHeadLeft.png”)
snakeHeadLeft=pygame.transform.scale(snakeHeadLeft,(30,30))
SnakeHeadlight=pygame.image.load(“snakeHeadlight.png”)
蛇头灯=pygame.transform.scale(蛇头灯,(30,30))
snakeHeadDown=pygame.image.load(“snakeHeadDown.png”)
snakeHeadDown=pygame.transform.scale(snakeHeadDown,(30,30))
apple=pygame.image.load(“apple.png”)
苹果=pygame.transform.scale(苹果,(30,30))
蛇头
运行时:
如果check==True:
蛇体附加((x,y))
检查=错误
#创建具有边界的屏幕
窗口填充((0,0,255))
#创建蛇头(精灵)
#造蛇
#如果需要,随机创建苹果(rect或sprite)
如果appleNeeded==True:
randomx=random.randint(30440)
randomy=random.randint(30440)
如果randomx>5:
randomx=randomx-(randomx%5)
elif randomx<5:
randomx=randomx+(5%randomx)
如果随机性>5:
随机性=随机性-(随机性%5)
elif随机<5:
随机性=随机性+(5%随机性)
appleNeeded=False
blit(苹果(randomx,randomy))
#确定蛇头是否接触过苹果
如果x-15>=randomx-30和x-15=randomy-30和y-15如果在您的情况下x>=470或x,这有点棘手。看

您必须将蛇遇到的所有位置存储在列表中。
蛇的一部分的长度是30,一个台阶的大小是5。因此,列表中的第六个位置是蛇身体的一个部分的位置:

snake_pos=[]
运行时:
# [...]
#在列表的开头追加位置
snake_pos=[(x,y)]+snake_pos
#在列表的每个第6个位置绘制身体部位
对于范围内的i(长度安装):
pi=最小值((i+1)*6,len(snake_pos)-1)
pygame.draw.rect(窗口,(0,175,0),(*snake_pos[pi],30,30))
#窗玻璃(蛇头,(x,y))
pygame.draw.rect(窗口,(175,50,0),(x,y,30,30))
#从列表中删除所有不再需要的PAOSITON
del snake_pos[长度安装*6:]

我添加了一些代码,所以这是同一个问题,但代码不同。@Lore,Rabbid76对您前面问题的回答无效吗?为什么你要问另一个与你之前回答的问题几乎相同的问题?逻辑与重复问题中的解释相同。你在问同样的问题。不要期望我们在代码中实现逻辑。相反,如果你的代码中有一个特定的问题,那就把这个问题重新分阶段提问。@Valentino我也这么认为。但事实证明,我错了。另一个问题的答案是假设摇晃的一步等于身体某个部位的大小(就像这里大多数琐碎的蛇游戏一样)。在这种情况下,主体尺寸为30,一个台阶为5。所以身体的第一部分必须画在蛇的头部所在的地方,在那里有6帧。@Rabbid76我承认我没有通过代码。如果是的话,你是对的,它不是复制品。