【发布时间】:2020-10-31 03:30:29
【问题描述】:
我正在制作一个蛇游戏,我想传送我的蛇,当它进入某堵墙时,它会传送到另一侧的另一个,但是当我尝试这样做时,我遇到了很多“错误”,但是我的主要问题是当蛇多次穿过墙壁时它会脱离网格,并且所有碰撞都会搞砸,这是蛇代码:
size = 15
s_posx = 60
s_posy = 60
snake = [(s_posx + size * 2, s_posy),(s_posx + size, s_posy),(s_posx, s_posy)]
s_skin = pygame.Surface((size, size))
s_skin.fill((82,128,208))
这是蛇的移动代码:
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]
这是墙壁传送代码:
if snake[0][0] == 0:
_pos = (1020, (snake[0][1]/15) * 15)
if _pos:
snake = [_pos] + snake
del snake[-1]
elif snake[0][1] == 0:
_pos = ((snake[0][0]/ 15) * 15,580)
if _pos:
snake = [_pos] + snake
del snake[-1]
elif snake[0][0] == 1020:
_pos = (0, (snake[0][1]/ 15) * 15)
if _pos:
snake = [_pos] + snake
del snake[-1]
elif snake[0][1] == 580:
_pos = ((snake[0][0] / 15) * 15, 0)
if _pos:
snake = [_pos] + snake
del snake[-1]
【问题讨论】:
-
抱歉,我没明白窗外那部分蛇的意思。
-
我不怪你,我的英语沟通能力还不是很好
-
你的英语很好。甚至比我的还要好。外语交流会导致误解。这就是生活。无论如何,我看到了我的错误。
标签: python pygame collision-detection