admin 管理员组

文章数量: 887021


2024年1月5日发(作者:游戏数据库设计文档)

#include

#include<>

#include<>

#include<>

#include<>

using namespace std;

int GameOver=0;

struct Body//蛇身(链表结构)

{

};

void SetPos(int i,int j)//设定光标位置

{

}

class Sneak//贪吃蛇类

{

private:

Body *head;//蛇头指针

int Direction;//移动方向。1,2,3,4对应上左下右

int Count;//蛇长

int FoodExist;//食物存在标记

int Food_x;//食物X坐标

int Food_y;//食物Y坐标

Sneak(int a=3,int b=4,int c=1,int d=0)//构造函数

{

FoodExist=d;//起始不存在食物

Body *temp1,*temp2;

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;

COORD pos={i-1,j-1};//坐标变量

HANDLE Out=GetStdHandle(STD_OUTPUT_HANDLE);//获取输出句柄

int x,y;//蛇身结点坐标

Body *next;//下一个结点

SetConsoleCursorPosition(Out,pos);//设定光标位置

int Speed;//速度(等级)

public:

head=new(Body);//申请起始蛇身3节

};

}

Direction=b;//方向为右

Count=a;//长为3

Speed=c;//等级1

void Map();//画界面函数

void Paint();//画蛇身函数

void Food();//生成食物

int Over();//判断游戏是否结束

void Gaming();//游戏进程函数

void Move();//移动

void Sneak::Map()//使用

{

}

void Sneak::Food()

{

Body *p;

int InBody=0;

while(1)

{

Food_x=rand()%48+2;//随机出食物的坐标

Food_y=rand()%23+2;

//判断食物是否产生在蛇体内

srand((int)time(0));//用系统时间来做随机数种子

int i;

for(i=1;i<=50;i++)

{

}

for(i=2;i<=25;i++)

{

}

for(i=1;i<=50;i++)

{

}

SetPos(54,3);

cout<<"贪吃蛇";

SetPos(54,5);

cout<<"贪吃蛇长度为:"<

SetPos(54,7);

cout<<"等级:"<

SetPos(i,25);

cout<<"-";

SetPos(1,i);

cout<<"|";

SetPos(50,i);

cout<<"|";

SetPos(i,1);

cout<<"-";

}

p=head;

while(p!=NULL)//判断食物是否产生在蛇体内

{

}

if(p->x==Food_x&&p->y==Food_y)

}

if(InBody==0)//食物不在蛇身。生成成功

break;

InBody=0;

{

}

p=p->next;

InBody=1;

break;

int Sneak::Over()

{

}

void Sneak::Paint()

{

}

void Sneak::Move()

{

Body *New;

New=new(Body);//新的蛇身结点

Body *p;

p=head;

while(p!=NULL)

{

}

SetPos(Food_x,Food_y);

cout<<"*";

SetPos(p->x,p->y);

cout<<"*";

p=p->next;

Body *p;

p=head;

if((head->x)>=50||(head->x)<=1||(head->y)<=1||(head->y)>=25)//是否撞到边缘

return 1;

p=head->next;

while(p!=NULL)//是否撞到蛇身

{

}

return 0;

if((head->x==p->x)&&(head->y==p->y))

return 1;

p=p->next;

}

if(Direction==1)//确定新蛇头的坐标

{

}

if(Direction==2)

{

}

if(Direction==3)

{

}

if(Direction==4)

{

}

New->y=head->y;

New->next=head;

head=New;

New->y=head->y+1;

New->next=head;

head=New;

New->y=head->y;

New->next=head;

head=New;

New->y=head->y-1;

New->next=head;

head=New;

New->x=head->x;

New->x=head->x-1;

New->x=head->x;

New->x=head->x+1;

void Sneak::Gaming()

{

system("cls");//刷新屏幕

char x;

Body *p;

Map();//画界面的先

Paint();//再画蛇身

while(1)

{

if(_kbhit())//_kbhit()判断是否有键盘操作

{

x=_getch();//重缓冲区读出一个字符赋给x

if((x=='W'||x=='w')&&Direction!=3)//改变蛇的方向(不可以是反方向)

Direction=1;

Direction=3;

Direction=2;

if((x=='S'||x=='s')&&Direction!=1)

if((x=='A'||x=='a')&&Direction!=4)

}

}

if((x=='D'||x=='d')&&Direction!=2)

Direction=4;

_getch();

while(_kbhit())//读掉这之后所有的键盘输入

if(FoodExist==0)//如果食物被吃了或刚开始游戏,要生成新的食物

{

Food();

}

Move();//移动蛇

if(head->x==Food_x&&head->y==Food_y)//如果蛇吃到了食物

{

FoodExist=0;

Count++;//蛇身+1

SetPos(54,5);

if(Count%10==0)//每十个蛇身升一级

{

Speed++;

SetPos(54,7);

FoodExist=1;

cout<<"贪吃蛇长度:"<

cout<<"LEVEL:"<

}

if(Speed==10)//最高等级达成。退出游戏

}

Paint();//画新的蛇身

if(FoodExist==1)//如果没有吃到食物,需要删除蛇尾。

{

}

if(Over())//判断是否游戏结束

break;

Sleep(500-Speed*50);//等待,具体时间和等级有关

p=head;

while((p->next)->next!=NULL)

SetPos(p->next->x,p->next->y);

delete(p->next);

break;

p=p->next;

cout<<" ";

p->next=NULL;

system("cls");

if(Speed==10)//通关

{

SetPos(25,25);

cout<<"恭喜你,你已经通关了"<

system("pause");

}

}

else//失败

{

}

SetPos(25,10);

cout<<"gameover,最终长度为 "<

system("pause");

int main()

{

}

system("color 6a");

Sneak game;

system("cls");

cout<<"*****************************************************"<

cout<<"* 极品贪吃蛇小游戏 *"<

cout<<"*****************************************************"<

cout<<"* 说明: *"<

cout<<"* W,A,S,D控制移动 *"<

cout<<"* 每10节蛇身升一级,并提高速度,10级通关 *"<

cout<<"*****************************************************"<

cout<<"* 制作人12计科01班 魏梦阳 *"<

cout<<"********* 按任意键开始 **********************"<

();

return 0;

_getch();


本文标签: 食物 游戏 是否 判断 时间