贪吃蛇代码基础函数

指令接受

贪吃蛇代码(字符型动画)最重要的功能实现便是对于指令的接受,由于贪吃蛇游戏要求接受指令时按指令方向操作,未接受指令或等待指令时依照原方向移动,C语言及C++内一般多线程、阻塞非阻塞函数容易为初学者理解接受,笔者这里以非阻塞函数为例进行介绍

while(1)
  { 
   if(kbhit())                 //kbhit 非阻塞函数   
         {  
              foot_a=getch();    //使用 getch 函数获取键盘输入   
             if(foot_a==' ') v=1;
             if(foot_a=='f') v=2;		//速度输入
    kz();			//指令计算
         }
   jy();
   fx(); 
   pd();
   kzfood();
   if(key)
   {
    cin>>ok;
    break;
   } 
   move();
   Sleep((210-10*diff)/v);			//速度计算
   if(sum==10)
   {
    diff++;
    break;
   } 
  }

示例中通过对kbhit()非阻塞函数的IF取值,便能使代码实现键盘指令的是否接受判断。由于不论是否输入指令,小蛇的所有事件都还是要发生,所以仅在其内植入kz()函数,及指令的计算。

颜色

虽然我们的贪吃蛇代码是通过最底层的字符组成,但是通过特殊字符及颜色的调用,便能使原本黑白单调的动画变得有趣

void SetColor(unsigned short ForeColor)  //调用颜色 
{
 HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
 SetConsoleTextAttribute(hCon, ForeColor );
}

光标函数

贪吃蛇代码实现中,我们可以发现其实是通过矩阵及对应数组的信息来实现的,如果通过输出数组来实现动画,那么会造成大量损耗,我们可以通过对于光标的控制来直接控制画面中的每一个点,达到减少损耗的目的,数组仅用于储存数据

void hide(int k)   //隐藏显示光标 
{
 HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
 CONSOLE_CURSOR_INFO cci;
 GetConsoleCursorInfo(hOut, &cci);
 cci.bVisible = k;
 SetConsoleCursorInfo(hOut, &cci);
}

void Goto(int x, int y)   //光标移动 
{
 COORD coord;
 coord.X = x*2;
 coord.Y = y;
 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值