我写在TI-基本蛇游戏,每一次我动议我要看看是否蛇的头已经砸在了尾部的任何一点。尾部存储为圆形基于列表的队列,我可以在恒定的时间添加的开始和结束。

唯一困难的部分是我必须做一些类似的在每个迭代上: (S =列表的大小)

For(I,1,S)
    If X=LX(I) and Y=LY(I)
    Then
        Disp "GAME OVER"
        Return
    End
End

这是一个相当短环,但它永远需要甚至在10项的列表。我试图序列方式:

If sum(seq(X=LX(I) and Y=LY(I),I,1,S))
...

其他唯一的优化我能想到的是不为N至N + 2的校验值(因为你的尾巴的第一部分,这是可能的命中是在N + 3),但只是把断问题4后分,以及具有该游戏不可播放以14分没有更好比做后10分播放。

使用组件是不是一种选择,因为我不具有链路电缆(或写组件的愿望)。

有帮助吗?

解决方案

没用过TI-基本...

但如何还存储所述游戏板的2D阵列。该阵列中的每个元素指示如果蛇存在。当你前进,设定在头点阵列的价值,并在老尾终点清除值。然后,以试验为碰撞,则可以只是做一个查找到2D阵列。

其他提示

在整个块:

For(I,1,S)
    If X=LX(I) and Y=LY(I)
    Then
        Disp "GAME OVER"
        Return
    End
End

可以替换为:

If sum(X=LX and Y=LY)
Then
    Disp "Game Over"
    Return
End

X=LX施加测试分段到LX的每个元素,并且这同样适用于Y=LY。所述sum()检查是否有在这两个列表的交集一个1

我做了什么,当我编程蛇,是检查是否在蛇面前像素为上。如果是这样,我会检查该像素是“食品”像素,否则,游戏将停止。

实施例,与I和J是头部和尾部的位置,(F,G)是蛇的方向,和(M,N)是所述食品。

if Pxl-Test(I+F, J+G) #pixel in front of snake
then
if I+F=M and J+G=N
stop
end

更多的内存-conservant比的2D阵列。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top