gpt4 book ai didi

python - 为什么pygame上两个移动物体之间的碰撞不起作用?

转载 作者:行者123 更新时间:2023-12-04 08:41:39 27 4
gpt4 key购买 nike

我正在用 pygame 做一个蛇游戏(游戏中有两条蛇),我想检测蛇头何时与另一个蛇体相撞,对两者都这样做,当两个头相撞时,我正在做这种特殊情况蛇头和另一条蛇身之间的碰撞,如果其中一条蛇被卡住而另一条蛇在移动,则可以正常工作,但是如果两者都在移动,则碰撞不起作用
这是移动蛇的代码:

new_pos = None
if direction == 'DOWN':
new_pos = (snake[0][0], snake[0][1] + size)
if direction == 'UP':
new_pos = (snake[0][0], snake[0][1] - size)
if direction == 'LEFT':
new_pos = (snake[0][0] - size, snake[0][1])
if direction == 'RIGHT':
new_pos = (snake[0][0] + size, snake[0][1])
if new_pos:
snake = [new_pos] + snake
del snake[-1]
请记住,移动另一条蛇的代码是相同的,但蛇变成了snake2,new_pos 变成了new_pos2,等等
碰撞代码:
if snake2[0] in snake[1:]:
gameOverBlue()

if snake2[0] in snake[1:]:
gameOverRed()
编辑:我想我也应该放置制作蛇的代码:
#snake
size = 15
s_pos = 60
snake = [(s_pos + size * 2, s_pos),(s_pos + size, s_pos),(s_pos, s_pos)]
s_skin = pygame.Surface((size, size))
s_skin.fill((82,128,208))
#snake2
size2 = 15
s2_pos = 195
snake2 = [(s2_pos + size2 * 2, s2_pos),(s2_pos + size2, s2_pos),(s2_pos, s2_pos)]
s2_skin = pygame.Surface((size2, size2))
s2_skin.fill((208,128,82))

最佳答案

您需要评估snake的头是否在列表中 snake2 ,包括snake2的负责人:

if snake[0] in snake2:
gameOverBlue()
而如果 snake2的负责人在 snake :
if snake2[0] in snake:
gameOverRed()
如果你想检测蛇的头部是否碰撞,你必须比较 snake[0]snake2[0]分别地:
if snake[0] == snake2[0]:
print("heads are colliding")

if snake[0] in snake2[1:]:
gameOverBlue()
if snake2[0] in snake[1:]:
gameOverRed()

关于python - 为什么pygame上两个移动物体之间的碰撞不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64539458/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com