#include〈iostream〉#include#include〈time。h〉#include〈stdlib。h〉using namespace std;int GameOver=0;struct Body//蛇身(链表结构){int x,y;//蛇身结点坐标Body *next;//下一个结点};void SetPos(int i,int j)//设定光标位置{COORD pos={i—1,j—1};//坐标变量HANDLE Out=GetStdHandle(STD_OUTPUT_HANDLE);//猎取输出句柄 SetConsoleCursorPosition(Out,pos);//设定光标位置}class Sneak//贪吃蛇类{ private:Body *head;//蛇头指针int Direction;//移动方向.1,2,3,4 对应上左下右int Count;//蛇长 int Speed;//速度(等级)int FoodExist;//食物存在标记int Food_x;//食物 X 坐标int Food_y;//食物 Y 坐标 public:Sneak(int a=3,int b=4,int c=1,int d=0)//构造函数{ FoodExist=d;//起始不存在食物 Body *temp1,*temp2; head=new(Body);//申请起始蛇身 3 节 head->x=4; head—〉y=2; temp1=new(Body); temp1—>x=3; temp1—>y=2; temp2=new(Body); temp2-〉x=2; temp2-〉y=2; head—>next=temp1; temp1->next=temp2; temp2-〉next=NULL; Direction=b;//方向为右 Count=a;//长为 3 Speed=c;//等级 1}void Map();//画界面函数void Paint();//画蛇身函数void Food();//生成食物int Over();//推断游戏是否结束void Gaming();//游戏进程函数void Move();//移动};void Sneak::Map()//使用{int i;for(i=1;i〈=50;i++){SetPos(i,1);cout〈〈”-";}for(i=2;i〈=25;i++){SetPos(1,i);cout〈〈"|”;SetPos(50,i);cout<<”|";}for(i=1;i<=50;i++){SetPos(i,25);cout〈〈"-";}SetPos(54,3);cout〈<"贪吃蛇";SetPos(54,5);cout〈〈"贪吃蛇长度为:”〈x==Food_x&&p—〉y==Food_y){InBody=1;break;}p=p->next;}if(InBody==0)//食物不在蛇身。生成成功break;InBody=0;}}int Sneak::Over(){Body *p;p=head;if((he...