这篇代码基于博主的“C++ 贪吃蛇基本算法”,加入第二只蛇让他移动并不难,但考虑到要让两只蛇的移动互不干扰那还真是破事真多。博主将“C++ 贪吃蛇基本算法”中的while(1)改成了goto,以用来将两条蛇的计数器分开,并加入了变量“move”来判断按键是操纵谁。在这篇代码中,switch()函数可能阅读起来非常困难,因为蛇2输入的按键与地图上的字符不匹配,所以这篇代码看起来并不是很明了。由于太麻烦,所以我设定成只要一条蛇GG游戏就GG。事实上改变蛇头的颜色并不是很难,但我实在懒。
#include <iostream>
#include <windows.h>
#include <cstring>
#include <time.h>
#include <conio.h>
using namespace std;
int error1(char x,char y)
{
if(x<y)
if((y-x==3)||(y-x==4))
return 1;
if(x>y)
if((x-y==3)||(x-y==4))
return 1;
if(x==y)
return 1;
return 0;
}
int error2(char x,char y)
{
if(x<y)
if(y-x==2)
return 1;
if(x>y)
if(x-y==2)
return 1;
if(x==y)
return 1;
return 0;
}
//纠正强行自噬
int Pos(long x,long y)
{
HANDLE direct=GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos={x,y};
SetConsoleCursorPosition(direct,pos);
}
//改变光标位置
int Color(long clr)
{
HANDLE direct=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(direct,clr);
}
//改变输出颜色
int Show(long judge)
{
HANDLE direct=GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cci;
GetConsoleCursorInfo(direct,&cci);
cci.bVisible=judge;
SetConsoleCursorInfo(direct,&cci);
}
//是否显示光标
int main()
{
char map[15][18];
char Key1,Keys1,Key2,Keys2,Key;
long xh1,yh1,xt1,yt1,start1,timeover1;
long xh2,yh2,xt2,yt2,start2,timeover2;
long xm,ym,level,move;
long X,Y;
memset(map,' ',sizeof(map));
for(long i=0;i<=14;i++)
{
if((i==0)||(i==14))
for(long j=0;j<=17;j++)
map[i][j]='b';
else
map[i][0]=map[i][17]='b';
}
//地图初始化