贪吃蛇基础·框架版(简单)开头有原码

更新不易,麻烦多多点赞,欢迎你的提问,感谢你的转发,

最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!!

喵喵喵,你对我真的很重要。

额,我有点晕了,今天先上框架版,晚上在进行优化,这个代码有点多,还跳来跳去,有F1和F2为实现,重新玩一次效果不佳,咬到自己那里的调用也有问题。

这是贪吃蛇的第一版,后期将会升级,希望可以弄懂每一步,而不是抄代码。

目录

原码,仅供侦错

首先的首先,这次我编译器是下面这个(需要安装包,请私信Q一下小喵),养成一个好习惯。

窗口设置

地图绘制

蛇结点创建

食物创建

键盘事件侦听

蛇的移动

​编辑

 屏幕提示

 结束页面

匹诺曹

结束页面实现及其子函数实现

开始页面

头文件

全局变量

函数声明

主函数

(水字数)贪吃蛇的游戏介绍

背景设定

操作指南

游戏特色

游戏评价


原码,仅供侦错

#include
#include
#include//要使用windows的api ,lrq 
//因为要用到随机数函数,所以要调用time.h文件
#include 
#include//用来接收键盘的输入输出 
//
//预定义
#define  U 1
#define  D 2
#define  L 3
#define  R 4
//U上 D下 L左 R右 
/
//定义全局变量 
typedef struct snake
{int x;int y;struct snake* next;
}snake;snake *head;//指向蛇头的指针
snake *food;//创建的食物 
snake *q;//用来遍历蛇的结点的 int status;int add=10; //每个食物的得分 
int sumScore=0;//总得分 
int highScore=0;//最高分 //三种结束状态变量
//1,撞墙    2,自己咬到自己了    3,主动退出 
int endGameStatus=0; //函数声明
void createMap();
//坐标转换
void gotoXY(int a,int b); 
//颜色更换
int color(int x);
//创建蛇
void initSnake(); 
//创建食物
void createFood(); 
//侦听键盘事件
void keyboardControl(); 
//让蛇动起来
int snakeMove();
//撞墙停止
int cantCrossWall();
//自己咬到自己
int biteSelf();
//主页面上小提示
void screenTips();
//结束页面 
void endGame();
//匹诺曹绘制
void LostDraw();
void File_In(); 
void File_Out();
void choose();
void printsnake();
void welcometoGame();/*字符拼成英文图案
*/
void printsnake()
{color(2);printf("                                                                                         \n");printf("                       __________       ___                                              \n");printf("                      /          \\     / \\ \\    |____      __\\__                     \n");printf("                     /  ________  \\   / ___ \\  _/ __     | |   /                       \n");printf("                     |  |      |__|     _/_   |_|  /    [|] |/                           \n");printf("                     |  |              | | |      /     _|_ \\__/                        \n");printf("                     \\  \\_______        / \\      |___/        ____                    \n");printf("                      \\         \\    ____ ____      ____   __ |  |  ___   ______       \n");printf("                       \\_______  \\   |  |/    \\    /    \\_/ / |  | /  /  /      \\   \n");printf("                               \\  \\  |    ___  \\  / ____   /  |  |/  /  /  ____  \\   \n");printf("                     __        |  |  |   /   \\  \\ | |  |  /   |     /  |  /____\\  |   \n");printf("                    \\  \\_______|  |  |  |    |  | | |__|  |   |     \\  |  ________/   \n");printf("                     \\            /  |  |    |  |  \\       \\  |  |\\  \\  \\  \\____  \n");printf("                      \\__________/   |__|    |__|   \\___/\\__\\ |__| \\__\\  \\______/ \n");}
void welcometoGame()
{int n=0;int i=0;int j=0;gotoXY(43,18);color(11);printf("贪 吃 蛇 游 戏");color(14);for(i=20;i<=26;i++){for(j=27;j<=74;j++){gotoXY(j,i);if(i==20 ||i==26){printf("-");}else if(j==27||j==74){printf("|");}} }gotoXY(36,22);color(10);printf("1.开始游戏");gotoXY(50,22);color(10);printf("2.游戏说明");gotoXY(36,24);color(10);printf("3.退出游戏");gotoXY(28,27);color(3);printf("请选择[1 2 3]:[ ]\b\b");//\b是退格使光标处于两个中括号之间color(14);scanf("%d",&n);switch(n){case 1:system("cls");File_Out();sumScore=0;createMap();screenTips();initSnake();createFood();keyboardControl();break;case 2://游戏说明界面 break;case 3:exit(0); break;default:break;} }void endGame()
{//清屏操作 system("cls");LostDraw();if(endGameStatus==1){//TODOgotoXY(35,9);color(7);printf("对不起,你撞墙了!游戏结束"); }else if(endGameStatus==2){//TODOgotoXY(35,9);color(7);printf("对不起,你咬到自己了!游戏结束"); }else if(endGameStatus==3){//TODOgotoXY(35,9);color(7);printf("游戏结束!"); } gotoXY(43,12);printf("你的得分是:%d分",sumScore);//判断得分是否需要存储if(sumScore>=highScore){color(10);gotoXY(33,16);printf("创纪录了,最高分被你刷新了!"); //最高分存入文件当中 File_In();} else{gotoXY(33,16);printf("继续努力吧~你离最高分还差:%d",highScore-sumScore);} //调用选择选项choose(); }void choose()
{int n=0;gotoXY(30,23);color(12);printf("重玩一局[1]");gotoXY(50,23);printf("溜了溜了[2]");gotoXY(43,25);printf("选择:");scanf("%d",&n);switch(n){case 1:system("cls");printsnake();//开始界面welcometoGame(); break;case 2:exit(0);break;default:gotoXY(35,27);color(12);printf("你输入的有误,请重新输入");break; } 
} //文件读写
void File_In()
{//定义文件指针 FILE *fp;//指针关联文件 fp=fopen("save.txt","w+");//通过文件指针向文件写入内容 fprintf(fp,"%d",sumScore);//关闭文件 fclose(fp);
}void File_Out()
{FILE *pp;pp=fopen("save.txt","a+");fscanf(pp,"%d",&highScore);fclose(pp);}void LostDraw() {/*失败界面*/system("cls");int i;gotoXY(45, 1);color(6);printf(" |-----|   ");		//匹诺曹的帽子gotoXY(45, 2);color(6);printf(" |     |   ");gotoXY(43, 3);color(6);printf("-------------");gotoXY(44, 4);color(14);printf("(");gotoXY(47, 4);color(15);printf(" > <");				//眼睛gotoXY(54, 4);color(14);printf(")");gotoXY(17, 5);color(11);printf("+------------------------");	//上边框gotoXY(35, 5);color(14);printf("oOOo");gotoXY(39, 5);color(11);printf("----------");					//上边框gotoXY(48, 5);color(14);printf("| |");				//鼻子gotoXY(48, 6);color(14);printf("|_|");gotoXY(51, 5);color(11);printf("----------");					//上边框gotoXY(61, 5);color(14);printf("oOOo");gotoXY(65, 5);color(11);printf("-----------------+");			//上边框for (i = 6; i <= 19; i++) {				//竖边框gotoXY(17, i);printf("|");gotoXY(82, i);printf("|");}gotoXY(17, 20);printf("+------------------------------------------");	//下边框gotoXY(60, 20);color(11);printf("----------------------+");						//下边框}void screenTips(){color(11);gotoXY(64,4);printf("☆最高记录是:%d☆",highScore);color(14);gotoXY(64,6);printf("当前得分:%d",sumScore);gotoXY(73,11);printf("小提示");gotoXY(60,13);color(6);printf("§--------------------§");gotoXY(60,26);color(6);printf("§--------------------§");gotoXY(64,14);color(3);printf("每个食物得分:%d分",add);gotoXY(64,16);printf("不能撞墙,不能咬到自己");gotoXY(64,18);printf("用上,下,左,右箭头分别控制方向");	gotoXY(64,20);printf("F1键加速,F2键减速");gotoXY(64,22);printf("空格键暂停游戏");gotoXY(64,24);printf("Esc键退出游戏");} int biteSelf()
{snake *self;//这里不涉及内存分配,它只是涉及只向的内容的变化self=head->next;while(self!=NULL){//TODO if(self->x==head->x&&self->y==head->y){return 1;} self = self->next;}return 0;
}int cantCrossWall(){if(head->x==0||head->x==56||head->y==0||head->y==26){system("cls");gotoXY(30,6);printf("撞墙了");return 1;}return 0;
} int snakeMove()
{snake *newNode;newNode = (snake*)malloc(sizeof(snake));if(status==U){newNode->x=head->x;newNode->y=head->y-1;}if (status == D) {newNode->x = head->x;newNode->y = head->y + 1;}if (status == L) {newNode->x = head->x - 2;newNode->y = head->y;}if (status == R) {//TODOnewNode->x = head->x + 2;newNode->y = head->y;}newNode->next=head;//将新的结点赋值给head head=newNode;if(cantCrossWall()){status = 0;endGame();return 3;} //判断新的结点是否有食物q=head;if(newNode->x==food->x&&newNode->y==food->y){while(q!=NULL){//TODOgotoXY(q->x,q->y);color(14);printf("◆");q=q->next;}//吃掉食物过后总分要加上单个食物的分值 sumScore+=add;//调用一次screenTips(); //食物被吃掉了,再创建一个createFood(); } else{while(q->next->next!=NULL){//TODOgotoXY(q->x,q->y);color(14);printf("◆");q=q->next;}//把倒数第一个变成原来的地图形状gotoXY(q->next->x,q->next->y);color(3);printf("■");//释放内存和指针free(q->next);q->next=NULL; }if(biteSelf()==1){endGame(); return 2; }return 0;
}void keyboardControl()
{status =R;//默认向右走 *while(1){//TODO//侦听所有键盘事件状态 if(GetAsyncKeyState(VK_UP)&&status !=D){//需要一个变量,来接收是哪个键按下去了 status =U; }else if(GetAsyncKeyState(VK_DOWN)&&status !=U){status=D;}else if(GetAsyncKeyState(VK_LEFT)&&status !=R){status=L;}else if(GetAsyncKeyState(VK_RIGHT)&&status !=L){status=R;}//空格键游戏暂停,蛇停止运动if(GetAsyncKeyState(VK_SPACE)){//TODO//第一次按空格键,进程挂起, while(1){Sleep(300);//第二次空格键,进程退出 if(GetAsyncKeyState(VK_SPACE)){break;}}//按下ESC键,游戏结束 } else if(GetAsyncKeyState(VK_ESCAPE)){endGameStatus=3;endGame();break; }Sleep(300);//让蛇动起来 if(snakeMove()!=0){break;}}
}void createFood()
{snake* food1;food1=(snake*)malloc(sizeof(snake)); //加上随机数种子,防止伪随机srand((unsigned)time(NULL)); food1->x=rand()%53+2;//2.54没听懂?问问//【2~54】while(food1->x%2!=0){//TODOfood1->x=rand()%53+2;}food1->y=rand()%23+1;//?2.58//food1->next=NULL;?q=head;while(q->next!=NULL){if(q->x==food1->x&&q->y==food1->y){free(food1);createFood();//如果和蛇身重合了,就再次创建食物 }q=q->next; }//把食物打出来gotoXY(food1->x,food1->y);color(10);printf("●");food=food1;
}void initSnake()
{int i=1;color(15);snake *ss;//结点 //分配内存空间,使用头插法(单链表),以设定的x,y位置开始插入ss =(snake*)malloc(sizeof(snake));//?ss->x=24;ss->y=5;ss->next=NULL; //利用头插法,插入剩下的四个结点 for(i=1;i<=4;i++){head=(snake*)malloc(sizeof(snake));head->next=ss;head->x=24+i*2;head->y=5;ss=head;//将蛇头变成蛇尾,然后重复循环 }//打印蛇身while(ss!=NULL){//TODOgotoXY(ss->x,ss->y);printf("◆");ss=ss->next;} 
}int color(int x)
{//更改待打印颜色属性 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x); return 0;
} void gotoXY(int a,int b)
{COORD c;//生成c的实例 c.X=a;c.Y=b;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c); 
}
//函数定义/函数实现void createMap(){int i,j;color(6);//0~255 //两个for填边框的色 for(i=0;i<58;i+=2){gotoXY(i,0);printf("□");gotoXY(i,26);printf("□");}for(i=1;i<26;i++){gotoXY(0,i);printf("□");gotoXY(56,i);printf("□");}//填中间的色 color(3); for(i=2;i<56;i+=2){for(j=1;j<26;j++){gotoXY(i,j);printf("■");} }} int main()
{//设置控制台的宽高 system("mode con cols=110 lines=30");printsnake();welcometoGame();while(1){} return 0;
}

首先的首先,这次我编译器是下面这个(需要安装包,请私信Q一下小喵),养成一个好习惯。

 好习惯:

一切以整体原代码为准,图片介绍仅供参考。没完成一步,建议编译一下,进行阶段性测试,这是一个非常实用的习惯,可以把bug缩小到子程序的范围,保证800来行代码的完成效率,谢谢。

小喵觉得图片能更加直观的展示代码(颜色有直观的区别),便于侦错,但csdn系统希望小喵有更完善的描述,所有小喵会附上局部代码,仅供侦错,难免重复,麻烦谅解,水一水字数了。


窗口设置


地图绘制

局部代码(仅供侦错)

void gotoXY(int a,int b)
{COORD c;//生成c的实例 c.X=a;c.Y=b;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c); 
}
//函数定义/函数实现void createMap(){int i,j;color(6);//0~255 //两个for填边框的色 for(i=0;i<58;i+=2){gotoXY(i,0);printf("□");gotoXY(i,26);printf("□");}for(i=1;i<26;i++){gotoXY(0,i);printf("□");gotoXY(56,i);printf("□");}//填中间的色 color(3); for(i=2;i<56;i+=2){for(j=1;j<26;j++){gotoXY(i,j);printf("■");} }} 

写一个颜色变换的函数

进行阶段性测试

说明其中的函数


蛇结点创建

void initSnake()
{int i=1;color(15);snake *ss;//结点 //分配内存空间,使用头插法(单链表),以设定的x,y位置开始插入ss =(snake*)malloc(sizeof(snake));//?ss->x=24;ss->y=5;ss->next=NULL; //利用头插法,插入剩下的四个结点 for(i=1;i<=4;i++){head=(snake*)malloc(sizeof(snake));head->next=ss;head->x=24+i*2;head->y=5;ss=head;//将蛇头变成蛇尾,然后重复循环 }//打印蛇身while(ss!=NULL){//TODOgotoXY(ss->x,ss->y);printf("◆");ss=ss->next;} 
}


食物创建

void createFood()
{snake* food1;food1=(snake*)malloc(sizeof(snake)); //加上随机数种子,防止伪随机srand((unsigned)time(NULL)); food1->x=rand()%53+2;//2.54没听懂?问问//【2~54】while(food1->x%2!=0){//TODOfood1->x=rand()%53+2;}food1->y=rand()%23+1;//?2.58//food1->next=NULL;?q=head;while(q->next!=NULL){if(q->x==food1->x&&q->y==food1->y){free(food1);createFood();//如果和蛇身重合了,就再次创建食物 }q=q->next; }//把食物打出来gotoXY(food1->x,food1->y);color(10);printf("●");food=food1;
}


键盘事件侦听

void keyboardControl()
{status =R;//默认向右走 while(1){//TODO//侦听所有键盘事件状态 if(GetAsyncKeyState(VK_UP)&&status !=D){//需要一个变量,来接收是哪个键按下去了 status =U; }else if(GetAsyncKeyState(VK_DOWN)&&status !=U){status=D;}else if(GetAsyncKeyState(VK_LEFT)&&status !=R){status=L;}else if(GetAsyncKeyState(VK_RIGHT)&&status !=L){status=R;}Sleep(500);//让蛇动起来 snakeMove(); }
}

蛇的移动

  

//让蛇动起来
void snakeMove();void snakeMove()
{snake *newNode;newNode = (snake*)malloc(sizeof(snake));if(status==U){newNode->x=head->x;newNode->y=head->y-1;}if (status == D) {newNode->x = head->x;newNode->y = head->y + 1;}if (status == L) {newNode->x = head->x - 2;newNode->y = head->y;}if (status == R) {//TODOnewNode->x = head->x + 2;newNode->y = head->y;}newNode->next=head;//将新的结点赋值给head head=newNode;//判断新的结点是否有食物q=head;if(newNode->x==food->x&&newNode->y==food->y){while(q!=NULL){//TODOgotoXY(q->x,q->y);color(14);printf("◆");q=q->next;}//食物被吃掉了,再创建一个createFood(); } else{while(q->next->next!=NULL){//TODOgotoXY(q->x,q->y);color(14);printf("◆");q=q->next;}//把倒数第一个变成原来的地图形状gotoXY(q->next->x,q->next->y);color(3);printf("■");//释放内存和指针free(q->next);q->next=NULL; }}

 蛇是可以动起来了,但蛇撞墙后出bug,要进行进一步修改

 屏幕提示

全局变量:

 子程序

//主页面上小提示
void screenTips();void screenTips(){color(11);gotoXY(64,4);printf("☆最高记录是:53☆");color(14);gotoXY(64,6);printf("当前得分:20");gotoXY(73,11);printf("小提示");gotoXY(60,13);color(6);printf("§--------------------§");gotoXY(60,26);color(6);printf("§--------------------§");gotoXY(64,14);color(3);printf("每个食物得分:%d分",add);gotoXY(64,16);printf("不能撞墙,不能咬到自己");gotoXY(64,18);printf("用上,下,左,右箭头分别控制方向");	gotoXY(64,20);printf("F1键加速,F2键减速");gotoXY(64,22);printf("空格键暂停游戏");gotoXY(64,24);printf("Esc键退出游戏");} 

 结束页面

匹诺曹

void LostDraw() {/*失败界面*/system("cls");int i;gotoXY(45, 1);color(6);printf(" |-----|   ");		//匹诺曹的帽子gotoXY(45, 2);color(6);printf(" |     |   ");gotoXY(43, 3);color(6);printf("-------------");gotoXY(44, 4);color(14);printf("(");gotoXY(47, 4);color(15);printf(" > <");				//眼睛gotoXY(54, 4);color(14);printf(")");gotoXY(17, 5);color(11);printf("+------------------------");	//上边框gotoXY(35, 5);color(14);printf("oOOo");gotoXY(39, 5);color(11);printf("----------");					//上边框gotoXY(48, 5);color(14);printf("| |");				//鼻子gotoXY(48, 6);color(14);printf("|_|");gotoXY(51, 5);color(11);printf("----------");					//上边框gotoXY(61, 5);color(14);printf("oOOo");gotoXY(65, 5);color(11);printf("-----------------+");			//上边框for (i = 6; i <= 19; i++) {				//竖边框gotoXY(17, i);printf("|");gotoXY(82, i);printf("|");}gotoXY(17, 20);printf("+------------------------------------------");	//下边框gotoXY(60, 20);color(11);printf("----------------------+");						//下边框}

结束页面实现及其子函数实现

void endGame()
{//清屏操作 system("cls");LostDraw();if(endGameStatus==1){//TODOgotoXY(35,9);color(7);printf("对不起,你撞墙了!游戏结束"); }else if(endGameStatus==2){//TODOgotoXY(35,9);color(7);printf("对不起,你咬到自己了!游戏结束"); }else if(endGameStatus==3){//TODOgotoXY(35,9);color(7);printf("游戏结束!"); } gotoXY(43,12);printf("你的得分是:%d分",sumScore);//判断得分是否需要存储if(sumScore>=highScore){color(10);gotoXY(33,16);printf("创纪录了,最高分被你刷新了!"); //最高分存入文件当中 File_In();} else{gotoXY(33,16);printf("继续努力吧~你离最高分还差:%d",highScore-sumScore);} //调用选择选项choose(); }void choose()
{int n=0;gotoXY(30,23);color(12);printf("重玩一局[1]");gotoXY(50,23);printf("溜了溜了[2]");gotoXY(43,25);printf("选择:");scanf("%d",&n);switch(n){case 1:system("cls");printsnake();//开始界面welcometoGame(); break;case 2:exit(0);break;default:gotoXY(35,27);color(12);printf("你输入的有误,请重新输入");break; } 
} //文件读写
void File_In()
{//定义文件指针 FILE *fp;//指针关联文件 fp=fopen("save.txt","w+");//通过文件指针向文件写入内容 fprintf(fp,"%d",sumScore);//关闭文件 fclose(fp);
}void File_Out()
{FILE *pp;pp=fopen("save.txt","a+");fscanf(pp,"%d",&highScore);fclose(pp);}

开始页面

/*字符拼成英文图案
*/
void printsnake()
{color(2);printf("                                                                                         \n");printf("                       __________       ___                                              \n");printf("                      /          \\     / \\ \\    |____      __\\__                     \n");printf("                     /  ________  \\   / ___ \\  _/ __     | |   /                       \n");printf("                     |  |      |__|     _/_   |_|  /    [|] |/                           \n");printf("                     |  |              | | |      /     _|_ \\__/                        \n");printf("                     \\  \\_______        / \\      |___/        ____                    \n");printf("                      \\         \\    ____ ____      ____   __ |  |  ___   ______       \n");printf("                       \\_______  \\   |  |/    \\    /    \\_/ / |  | /  /  /      \\   \n");printf("                               \\  \\  |    ___  \\  / ____   /  |  |/  /  /  ____  \\   \n");printf("                     __        |  |  |   /   \\  \\ | |  |  /   |     /  |  /____\\  |   \n");printf("                    \\  \\_______|  |  |  |    |  | | |__|  |   |     \\  |  ________/   \n");printf("                     \\            /  |  |    |  |  \\       \\  |  |\\  \\  \\  \\____  \n");printf("                      \\__________/   |__|    |__|   \\___/\\__\\ |__| \\__\\  \\______/ \n");}
void welcometoGame()
{int n=0;int i=0;int j=0;gotoXY(43,18);color(11);printf("贪 吃 蛇 游 戏");color(14);for(i=20;i<=26;i++){for(j=27;j<=74;j++){gotoXY(j,i);if(i==20 ||i==26){printf("-");}else if(j==27||j==74){printf("|");}} }gotoXY(36,22);color(10);printf("1.开始游戏");gotoXY(50,22);color(10);printf("2.游戏说明");gotoXY(36,24);color(10);printf("3.退出游戏");gotoXY(28,27);color(3);printf("请选择[1 2 3]:[ ]\b\b");//\b是退格使光标处于两个中括号之间color(14);scanf("%d",&n);switch(n){case 1:system("cls");File_Out();sumScore=0;createMap();screenTips();initSnake();createFood();keyboardControl();break;case 2://游戏说明界面 break;case 3:exit(0); break;default:break;} }

头文件

#include
#include
#include//要使用windows的api ,lrq 
//因为要用到随机数函数,所以要调用time.h文件
#include 
#include//用来接收键盘的输入输出 
//
//预定义
#define  U 1
#define  D 2
#define  L 3
#define  R 4
//U上 D下 L左 R右 

全局变量

//定义全局变量 
typedef struct snake
{int x;int y;struct snake* next;
}snake;snake *head;//指向蛇头的指针
snake *food;//创建的食物 
snake *q;//用来遍历蛇的结点的 int status;int add=10; //每个食物的得分 
int sumScore=0;//总得分 
int highScore=0;//最高分 //三种结束状态变量
//1,撞墙    2,自己咬到自己了    3,主动退出 
int endGameStatus=0; 

函数声明

//函数声明
void createMap();
//坐标转换
void gotoXY(int a,int b); 
//颜色更换
int color(int x);
//创建蛇
void initSnake(); 
//创建食物
void createFood(); 
//侦听键盘事件
void keyboardControl(); 
//让蛇动起来
int snakeMove();
//撞墙停止
int cantCrossWall();
//自己咬到自己
int biteSelf();
//主页面上小提示
void screenTips();
//结束页面 
void endGame();
//匹诺曹绘制
void LostDraw();
void File_In(); 
void File_Out();
void choose();
void printsnake();
void welcometoGame();

主函数

int main()
{//设置控制台的宽高 system("mode con cols=110 lines=30");printsnake();welcometoGame();while(1){} return 0;
}

(水字数)贪吃蛇的游戏介绍

背景设定

编辑 播报

贪食蛇游戏图面(19张)

1976年,Gremlin平台推出了一款经典街机游戏Blockade。游戏中,两名玩家分别控制一个角色在屏幕上移动,所经之处砌起围栏。角色只能向左、右方向90度转弯,游戏目标保证让对方先撞上屏幕或围栏。 听起来有点复杂,其实就是下面这个样子:

基本上就是两条每走一步都会长大的贪吃蛇比谁后完蛋,玩家要做的就是避免撞上障碍物和越来越长的身体。更多照片、视频可以看 GamesDBase 的介绍。

Blockade 很受欢迎,类似的游戏先后出现在 Atari 2600、TRS-80、苹果 2 等早期游戏机、计算机上。但真正让这种游戏形式红遍全球的还是21年后随诺基亚手机走向世界的贪吃蛇游戏——Snake。

操作指南

编辑 播报

玩家使用方向键操控一条长长的蛇不断吞下豆子,同时蛇身随着吞下的豆子不断变长,当蛇头撞到蛇身或障壁时游戏结束。贪吃蛇最初为人们所知的是诺基亚手机附带的一个小游戏,它伴随着诺基亚手机走向世界。现在的贪吃蛇出现了许多衍生版本,并被移植到各种平台上。

游戏特色

编辑 播报

贪吃蛇原型游戏图片

贪食蛇游戏操作简单,可玩性比较高。这个游戏难度最大的不是蛇长得很长的时候,而是开始。那个时候蛇身很短,看上去难度不大,却最容易死掉,因为把玩一条小短蛇让人容易走神,失去耐心。由于难度小,你会不知不觉加快调整方向的速度,在游走自如的时候蛇身逐渐加长了,而玩家却没有意识到危险,在最得意洋洋的一刻突然死亡。

贪食蛇的另一个危险期在于游戏开始几十秒之后。由于玩家的注意力高度集中,精神紧张,此时局面稍好,就会不由自主地想放松一下,结果手指一松劲,贪食蛇就死了。所以贪食蛇可以算作一个敏捷型的小游戏。

游戏评价

编辑 播报

贪吃蛇游戏画面

和别的游戏不同,贪食蛇是一个悲剧性的游戏。许多电子游戏都是以操作者的胜利而告终,而贪食蛇的结局却是死亡。不管玩得多么纯熟,技术多么高超,你最终听到的都是贪食蛇的一声惨叫。当手机上的小蛇越长越长,积分越来越高的时候,死亡也就越来越近。那时候忙的不是为了吃豆子长身体,而是为了避免撞墙。你会发现你穷于应付,四处奔忙。贪食蛇最要命的就在一个“贪”字上。

要死,要死,要死,我现在就剩一口气了,啊————。

本来想边敲边写的,可是代码跳来跳去,我的灵魂已经跑出来了,明天再梳理一遍,这一篇博客是16个40分钟的成果,我想一篇博客讲完,脑壳有点疼。希望明天梳理会好用些,今天我已经吐血了。

更新不易,麻烦多多点赞,欢迎你的提问,感谢你的转发,

最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!!

喵喵喵,你对我真的很重要。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部