用四个整数编写一个贪吃蛇游戏( 二 )


这么看来 , 蛇的行为有点像队列:
用四个整数编写一个贪吃蛇游戏
文章图片
当蛇移动并吃掉一个苹果时 , 我们调用s_shape_add , 仅增加长度 , 并添加一个新的蛇尾s_tdir 。
主循环主循环如下所示 。
每当某个键按下时 , 就展开s_key_press , 检查移动是否允许 , 然后更新s_chdir(使用s_chdir_set) 。
s_key_press有两个输入参数的作用是去除相反方向 。 例如 , 如果蛇当前向右移动(SR) , 那么SL就是不可能的输入 , 从而中断switch语句 。
移动蛇的函数move_snake()中实现了大部分逻辑:
为了验证蛇是否可以在方格中移动 , 我们实现了check_*()函数:
check_l()检查蛇的X坐标(s_hpos%8)是否大于上一个位置的X坐标;
check_r()检查蛇的X坐标(s_hpos%8)是否小于上一个位置的X坐标;
check_u()和check_d()的原理相同 , 检查增加s_hpos是否会导致溢出 。 如果溢出 , 表明移动超出了方格边界 。 这里溢出当做一个特性使用 。
显示蛇的函数【用四个整数编写一个贪吃蛇游戏】这是需要实现的最后一个函数:

相关经验推荐