贪吃蛇还能怎样玩?

上一篇介绍了简单的贪吃蛇游戏设计,那么贪吃蛇还能怎样玩呢?
###1.创新玩法:
看到一位同学的想法很新奇,就拿出来分享啦。我们可以将二维平面转化为三维空间,把蛇放在444的笼子里(太大会不会爆啊),操作键位如下:“↑” “↓” ”←“ ”→“与经典模式相同,控制蛇头前进方向。“W” “A” “D” “S” 则控制笼子绕轴旋转,因为我们看到的还是一个二维平面在显示屏上,(对于蛇来说它还是在一个二维空间运动)所以需要通过将笼子进行翻转达到增加一维的目的。
###2.食物设置:
可以让食物每五秒就刷新一次,如果蛇还没有吃到食物的话,食物的位置就会改变。为了实现这个功能,就要设置一个定时器。
例如,启动一个windows的定时器:

UINT iTimerID = SetTimer (NULL, 0, 10000, mycallback) ; // 10秒以后调用mycallback函数
这样10秒后你的mycallback函数就会被调用到。所以你还得写一个mycallback函数:
void CALLBACK mycallback(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)
{
// 这个函数里面,你要去检查食物是否已经被吃掉了,判断要不要改变食物显示的位置
}

###3.食物分类:
可以每隔5个小食物就出现一个大食物,和小食物并存,吃到大食物的分数较多,吃到小食物的分数较少。我们可以把所有的食物放在一个结构数组或者链表中,结构中包含其存在时间,永久存在的小食物的存在时间可以设置为-1;大食物的存在时间可以设置为倒计时描述。然后每隔1秒钟就检查这个链表,更新时间值,到0 了就删掉。
###4.障碍设置:
为了增加游戏的难度,我们可以适当地增加一些障碍(也是墙)。在地图的某些区域内输出类似于围墙的方块即可。

/*开始画面,左上角座标为(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);/*右边*/
  }
}

以上就是一些特别增加的功能,同时也增加了玩游戏的乐趣和挑战性,有些仅仅提供思路啦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章