首页 > 代码库 > 贪吃蛇
贪吃蛇
呵呵!!!
#include<iostream>#include<windows.h>#include<conio.h>#include<stdlib.h>#include<stdio.h>#include<time.h>#define N 20using namespace std;void mianPage(); //主界面void end(); // 退出界面void gotxy(int x,int y); //位置函数;void color(int a); //颜色函数void play();//主要操作过程void init();class snake{};void LoadData();void saveData();int Score;//存储分数void gotxy(int x,int y){ COORD pos; pos.X=x; pos.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}void color(int a){ SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);}void mainPage(){ system("cls"); char c; cout<<endl<<endl; cout<<endl; cout<<" **********************************************************"<<endl; cout<<" * *"<<endl; cout<<" * 1 开始游戏 *"<<endl; cout<<" * *"<<endl; cout<<" * 2 最高记录 *"<<endl; cout<<" * *"<<endl; cout<<" * 3 退出游戏 *"<<endl; cout<<" * *"<<endl; cout<<" **********************************************************"<<endl; cout<<" 请输入:"; c=getch(); switch(c) { case ‘1‘:play();break; case ‘2‘:LoadData();break; case ‘3‘:end();break; default:cout<<"Please input agin"; } mainPage();}void init(int food[2])//初始化框架{ system("cls"); char ch; int i,j; int wall[N+2][N+2]={{0}}; color(3); color(14); for(i=1;i<=N;i++) for(j=1;j<=N;j++) wall[i][j]=1; for(i=0;i<N+2;i++) { for(j=0;j<N+2;j++) { if(wall[i][j]) cout<<" "; else cout<<"#"; } cout<<endl; } gotxy(N+10,0); color(13); cout<<"欢迎来到贪吃蛇游戏 "; gotxy(N+10,2); cout<<"Score: "<<endl; gotxy(N+10,3); cout<<"你可以按任意键暂停!!!"; gotxy(N+10,4); cout<<"当然! 你可以按 1 返回,按 2 结束"; food[0]=rand()%N+1; food[1]=rand()%N+1; gotxy(food[0],food[1]); cout<<"*"<<endl; //Sleep(INFINITE);}void play(){ system("cls"); int ** snake=NULL; int node=3; //蛇的长度; int i,j; int food[2]; char a=‘o‘,b=1,c=0;//控制变量; int tail[2]; int score=0; srand((unsigned)time(NULL)); // srand((unsigned)time(0)); init(food); snake=(int**)realloc(snake,sizeof(int*)*node);// 改变snake所指内存区域的大小为node长度 for(i=0;i<node;i++) { snake[i]=(int*)malloc(sizeof(int)*2); } for(i=0;i<node;i++) { snake[i][0]=N/2; snake[i][1]=N/2+i; gotxy(snake[i][0],snake[i][1]); color(14); cout<<"*"; } while(2) { tail[0]=snake[node-1][0]; tail[1]=snake[node-1][1]; gotxy(tail[0],tail[1]); color(1); cout<<" "; for(i=node-1;i>0;i--)//蛇移动的关键步骤 { snake[i][0]=snake[i-1][0]; snake[i][1]=snake[i-1][1]; gotxy(snake[i][0],snake[i][1]); color(14); cout<<"*"<<endl; } if(kbhit()) { gotxy(0,N+3); color(11); a=getche(); c=b; } switch(a) { case ‘w‘:snake[0][1]--;break; case ‘s‘:snake[0][1]++;break; case ‘d‘:snake[0][0]++;break; case ‘a‘:snake[0][0]--;break; case ‘1‘:mainPage();break; case‘2‘:end();break; default :break; } gotxy(snake[0][0],snake[0][1]); color(11); cout<<"*"; Sleep(abs(200-0.5*score)); if(snake[0][0]==0||(snake[0][0]==N+1)||snake[0][1]==0||snake[0][1]==N+1) { //Sleep(INFINITE); gotxy(N/2,N/2); color(14); cout<<"GAME OVER !!!"; color(14); Sleep(2000); end(); } if(c==b) { for(j=1;j<node;j++) { if(snake[0][0]==snake[j][0]&&snake[0][1]==snake[j][1]) { gotxy(N/2,N/2); color(13); cout<<"你吃到你自己了!!!"<<endl; gotxy(N/2+2,N/2+1); cout<<"GAME OVER !!!"; color(14); Sleep(2000); end(); } } } if(snake[0][0]==food[0]&&snake[0][1]==food[1]) { node++; score++; Score=score; gotxy(N+16,2); cout<<score; snake=(int**)realloc(snake,sizeof(int)*node); snake[node-1]=(int*)malloc(sizeof(int)*2); food[0]=rand()%N+1; food[1]=rand()%N+1; gotxy(food[0],food[1]); color(14); cout<<"*"; } }}void LoadData(){ system("cls"); FILE *fp; int i; char s; i=Score; if((fp=fopen("E:\\C语言学习\\VC测试\\贪吃蛇,呵呵!!!\\贪吃蛇.text","r"))==NULL) { fopen("E:\\C语言学习\\VC测试\\贪吃蛇,呵呵!!!\\贪吃蛇.text","w"); //return ; }// if(i<S)i=S; color(14); fread(&i,sizeof(i),1,fp); cout<<endl; cout<<"\t亲!你最高的分为:"<<i; cout<<endl; cout<<"\t按1返回\n\n"; cout<<"\t按2退出\n\n"; s=getche(); switch(s) { case ‘1‘:mainPage();break; case ‘2‘: end();break; } fclose(fp);}void SaveData(){ FILE *fp; int i; i=Score; if((fp=fopen("E:\\C语言学习\\VC测试\\贪吃蛇,呵呵!!!\\贪吃蛇.text","w"))==NULL) { cout<<"can‘t open file!"<<endl; exit(0); } // if(i<S)i=S; color(14); fwrite(&i,sizeof(i),1,fp); fclose(fp);}void end(){ system("cls"); system("cls"); SaveData(); char c; cout<<endl<<endl; cout<<" **********************************************************"<<endl; cout<<" * *"<<endl; cout<<" * 亲,欢迎下次再来!!! *"<<endl; cout<<" * *"<<endl; cout<<" * **** **** *"<<endl; cout<<" * **** *"<<endl; cout<<" **********************************************************"<<endl; gotxy(12,9); c=getch(); exit(0);}int main(){ mainPage(); return 0;}
贪吃蛇
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。