赞
踩
最近暑假外面很热,但是宅在家里总不能没事干吧?为了解闷,就写了一篇文章来解闷。
我们先定义一下文字的颜色的函数:
- //更改颜色
- int color(int c)
- {
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c);//更改文字颜色
- return 0;
- }
然后,让光标移到指定位置,(因为我有强迫症,不喜欢光标乱飞),我使用了WindowsAPI的结构。定位代码函数如下:
- //将光标移动到指定位置
- void gotoxy(HANDLE hout,int x,int y){
- //COORD是WindowsAPI中定义的一种结构,表示一个字符在控制台屏幕上的坐标
- COORD pos;
- pos.X=x;
- pos.Y=y;
- //SetConsoleCursorPosition是API中定位光标位置的函数。
- SetConsoleCursorPosition(hout,pos);
- }
之后,就可以开始创建一个贪吃蛇的开始界面了。
贪吃蛇总要有一个像样一点的界面吧,因为本作者是小学生,还不会用图形化库,所以我用了一个简单的字符输出来进行简单的界面创建。
- void cover (HANDLE hout);
- void explation(HANDLE hout)
- {
- int i,j=1;
- system("cls");
- color(13);
- gotoxy(hout,44,3);
- cout << "游戏说明";
- color(2);
- for(i=6;i<=22;i++)
- {
- for(j=20;j<=75;j++)
- {
- gotoxy(hout,j,i);
- if(i==6||i==22)cout << "=" ;
- else if(j==20||j==75)cout << "||";
- }
- }//游戏说明显示
- color(3);
- gotoxy(hout,25,8);
- cout << "1、不能穿墙,不能咬到自己" ;
- color(10);
- gotoxy(hout,25,11);
- cout << "2、用 ↑(W) ↓(S) ←(A) →(D)分别控制蛇的移动";
- color(14);
- gotoxy(hout,25,14);
- cout << "3、按任意键(除去ESC)暂停游戏,方向键继续";
- color(11);
- gotoxy(hout,25,17);
- cout << "4、ESC:自爆,游戏结束";
- color(4);
- getch();//按任意键返回主界面
- system("cls");
- cover (hout);
- }
-
-
- //游戏封面:蛇的形状
- void cover (HANDLE hout){
- gotoxy(hout,35,1);
- color(6);
- printf("/^\\/^\\");
-
- gotoxy(hout,34,2);
- printf("|_| o|");
-
- gotoxy(hout,33,2);
- color(2);
- printf("_");
-
- gotoxy(hout,25,3);
- color(12);
- printf("\\/");
-
- gotoxy(hout,31,3);
- color(2);
- printf("/");
-
- gotoxy(hout,37,3);
- color(6);
- printf("\\_/");
-
- gotoxy(hout,41,3);
- color(10);
- printf(" \\");
-
- gotoxy(hout,26,4);
- color(12);
- printf("\\____");
-
- gotoxy(hout,32,4);
- printf("_________");
-
- gotoxy(hout,31,4);
- color(2);
- printf("|");
-
- gotoxy(hout,43,4);
- color(10);
- printf("\\");
-
- gotoxy(hout,32,5);
- color(2);
- printf("\\_______");
-
- gotoxy(hout,44,5);
- color(10);
- printf("\\");
-
- gotoxy(hout,39,6);
- printf("| | \\");
-
- gotoxy(hout,38,7);
- printf("/ / \\");
-
- gotoxy(hout,37,8);
- printf("/ / \\ \\");
-
- gotoxy(hout,35,9);
- printf("/ / \\ \\");
-
- gotoxy(hout,34,10);
- printf(" / / \\ \\");
-
- gotoxy(hout,33,11);
- printf("/ / _----_ \\ \\");
-
- gotoxy(hout,32,12);
- printf("/ / _-~ ~-_ | |");
-
- gotoxy(hout,31,13);
- printf("( ( _-~ _--_ ~-_ _/ |");
-
- gotoxy(hout,32,14);
- printf("\\ ~-____-~ _-~ ~-_ ~-_-~ /");
-
- gotoxy(hout,33,15);
- printf("~-_ _-~ ~-_ _-~");
-
- gotoxy(hout,35,16);
- printf("~--____-~ ~-___-~");
-
- color(9);
- gotoxy(hout,43,18);
- color(11);
- cout << "贪吃蛇大作战";
- color(14);
- for(i=20;i<=26;i++){
- for(j=27;j<=74;j++)
- {
- gotoxy(hout,j,i);
- if(i==20||i==26)
- {
- cout << "-";
- }
- else if(j==27||j==74)
- {
- cout << "|";
- }
- }
- }
- color(12);//游戏选项,需要输入的内容
- gotoxy(hout,35,22);
- cout << "1.开始游戏";
- gotoxy(hout,55,22);
- cout << "2.游戏说明";
- gotoxy(hout,35,24);
- cout << "3.退出游戏";
- color(9);
- gotoxy(hout,framex+wide*2,framey+19);
- cout << "姓名:石佳成"; //可以改为你的姓名
- gotoxy(hout,framex+wide*2,framey+21);
- cout << "来自:悠悠点心圆科技集团";
- gotoxy(hout,framex+wide*2,framey+23);
- cout << "完成时间:2023年8月3日";//可以更改为现在创作时间
- gotoxy(hout,29,27);
- color(3);
- printf("做出你的选择:");
- color(14);
- int n;
- scanf("%d",&n);
- switch(n){
- case 1:
- system("cls");//清屏
- break;
- case 2:
- explation(hout);//开始游戏
- break;
- case 3:
- exit(0);//退出程序
- break;
- }
- }
如上代码块,我将游戏封面设为像cout一样的输出,这样会简单一点。顺便告诉你一下,“exit(0)”这个语句能退出程序,我不知道为什么,因为是在网上找的退出程序代码。有哪位大佬帮我解释解释一下?
我们先把这个蛇的结构体解决了。
- //定义蛇的结构体
- struct Snake{
- int x[100];
- int y[100];
- int speed;
- int length;
- int count;
- int tm1;//开始时间
- int tm2;//持续时间
- };
定义好了蛇,总觉得要一点什么东西。哦,还要一些食物,食物是需要移到随机位置,然后再判断有没有出界或者是在蛇身上,否则重新生成,我现在只定义一个事物的函数,以便以后使用。
- //定义食物的结构体
- struct Food{
- int x;
- int y;
- };
在游戏中,为了防止忘记键盘操作的方式,我在游戏界面又加了一点键盘使用说明。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。