上一篇介绍了简单的贪吃蛇游戏设计,那么贪吃蛇还能怎样玩呢?
我们可以将二维平面转化为三维空间,把蛇放在4*4*4的笼子里(太大会不会爆啊),操作键位如下:“↑” “↓” ”←“ ”→“与经典模式相同,控制蛇头前进方向。“W” “A” “D” “S” 则控制笼子绕轴旋转,因为我们看到的还是一个二维平面在显示屏上,(对于蛇来说它还是在一个二维空间运动)所以需要通过将笼子进行翻转达到增加一维的目的。
食物设置:
可以让食物每五秒就刷新一次,如果蛇还没有吃到食物的话,食物的位置就会改变。为了实现这个功能,就要设置一个定时器。
例如,启动一个windows的定时器:
UINT iTimerID = SetTimer (NULL, 0, 10000, mycallback) ; // 10秒以后调用mycallback函数
这样10秒后你的mycallback函数就会被调用到。所以你还得写一个mycallback函数:
void CALLBACK mycallback(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)
食物分类:
可以每隔5个小食物就出现一个大食物,和小食物并存,吃到大食物的分数较多,吃到小食物的分数较少。我们可以把所有的食物放在一个结构数组或者链表中,结构中包含其存在时间,永久存在的小食物的存在时间可以设置为-1;大食物的存在时间可以设置为倒计时描述。然后每隔1秒钟就检查这个链表,更新时间值,到0 了就删掉。
障碍设置:
为了增加游戏的难度,我们可以适当地增加一些障碍(也是墙)。在地图的某些区域内输出类似于围墙的方块即可。
/开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙/
void DrawK(void)
{
/setbkcolor(LIGHTGREEN);/
setcolor(11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);/设置线型/
for(i=50;i<=600;i+=10)/画围墙/
{
rectangle(i,40,i+10,49); /上边/
rectangle(i,451,i+10,460);/下边/
}
for(i=40;i<=450;i+=10)
{
rectangle(50,i,59,i+10); /左边/
rectangle(601,i,610,i+10);/右边/
}
以上就是一些特别增加的功能,同时也增加了玩游戏的乐趣和挑战性,有些仅仅提供思路啦。