Linux环境下基于Ncurses开发贪吃蛇小游戏
我们在Linux环境下基于ncurses开发了一个简易的贪吃蛇小游戏,具体情况如下:
使用链表代替贪吃蛇的身子;
基于ncurses获取用户键盘输入,控制贪吃蛇的上下左右移动;
基于多线程的概念实现控制贪吃蛇移动和自行游动的功能;
一、控制贪吃蛇的移动
本质上贪吃蛇的上下左右移动的原理就是,用来表示贪吃蛇的链表的更新,因为贪吃蛇的移动不会改变贪吃蛇身子的长度,只会改变贪吃蛇的位置。那么在链表的基础上去看,就代表只更新节点的位置,不去增加或减少节点的总数量。
我们可以通过改变代表贪吃蛇身子的链表的头尾节点的位置,来表示贪吃蛇的上下左右移动,在每次更新链表节点位置以后,通过重新扫面地图的显示来表示贪吃蛇的移动。
在重新扫描地图的显示时,由于ncurses的显示机制,会遇到地图无法覆盖的问题,那么只需要使用move(0,0),通过确定重新扫描时地图的显示位置,来覆盖移动前的位置,就能做到贪吃蛇的上下左右移动效果。
while(1){con = getch();if(con == KEY_RIGHT){move_right();gameMap();}}
二、贪吃蛇的撞墙判定
贪吃蛇的撞墙一般出现在移动后的情况下,那么我们需要在移动后加一个判定,判定移动后的贪吃蛇的尾巴节点的行和列是否等于地图边界的值,如果相等就判定撞墙,重新初始化地图界面,释放原链表的