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();
版权声明:本文标题:贪吃蛇游戏代码C 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1704433910h459691.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论