C语言实现贪吃蛇游戏(单人版)_C 语言

来源:脚本之家  责任编辑:小易  

当然可以边游戏了,汉字可以用点阵显示,如果是windows c 的话显示汉字就更简单了!游戏窗体可以用windows c 编程实现!给你一个贪吃蛇的游戏吧,在tc 下编译成功!可以q聊:969370950includeincludeincludeincludedefine ESC 0x011bdefine LEFT 0x4b00define RIGHT 0x4d00define UP 0x4800define DOWN 0x5000define F5 0x3f00define S 0x1f73int score=0;unsigned level=0;void GAMEOVER(){char ch;while(1){clrscr();gotoxy(35,10);highvideo();cprintf("Game Over!\\n");cprintf("\\n\\n\\r You Score:%d",score);cprintf("\\n\\n\\r Press Q To Exit The Game!cprintf("\\n\\n\\r Press S To Start The Game Again!ch=getch();if(ch='q'|ch='Q')exit(0);if(ch='s'|ch='S'){DRAWGAME();GAMEPLAY();}}}int DRAWGAME(){int i;clrscr();textcolor(CYAN);for(i=1;i;i+){gotoxy(1,i);highvideo();cprintf("%c",5);gotoxy(60,i);highvideo();cprintf("%c",5);gotoxy(79,i);highvideo();cprintf("%c",5);}for(i=1;i;i+){gotoxy(i,1);highvideo();cprintf("%c",5);gotoxy(i,24);highvideo();cprintf("%c",5);}gotoxy(65,3);cprintf("Snake Game!gotoxy(63,7);cprintf("Made By ZhiPing");gotoxy(63,11);cprintf("QQ:1017257402");gotoxy(63,15);cprintf("Level:");gotoxy(63,18);cprintf("Score:");gotoxy(72,18);cprintf("%d",score);gotoxy(68,19);cprintf("%c",24);gotoxy(68,23);cprintf("%c",25);gotoxy(65,21);cprintf("%c",27);gotoxy(71,21);cprintf("%c",26);gotoxy(67,21);cprintf("Esc");}int GAMEPLAY(){int snakex[30],snakey[30],key,direction=4,food=0,foodx,foody,node=2,i;char ch;snakex[0]=2;snakex[1]=3;snakey[0]=12;snakey[1]=12;while(1){while!kbhit()){textcolor(YELLOW);if(food=0){randomize();foodx=rand()%59;foody=rand()%23;while(foodx)foodx+;while(foody)foody+;food=1;}for(i=0;i;i+){if(i>0)textcolor(i);gotoxy(snakex[i],snakey[i]);highvideo();cprintf("%c",2);textcolor(YELLOW);}delay(5000000000-level*1000);gotoxy(snakex[node-1],snakey[node-1]);cprintf("%c",32);gotoxy(foodx,foody);highvideo();cprintf("%c",3);for(i=node-1;i>0;i-){snakex[i]=snakex[i-1];snakey[i]=snakey[i-1];}if(direction=1)snakey[0]-;if(direction=2)snakey[0]+;if(direction=3)snakex[0]-;if(direction=4)snakex[0]+;for(i=4;i;i+)if(snakex[0]=snakex[i]&snakey[0]=snakey[i])GAMEOVER();if(snakex[0]=foodx&snakey[0]=foody){food=0;score+10;node+;if(node>30){level+;for(i=0;i;i+){gotoxy(snakex[i],snakey[i]);cprintf("%c",32);}node=2;}snakex[node-1]=snakex[node-2];snakey[node-1]=snakey[node-2];gotoxy(72,18);cprintf("%d",score);}gotoxy(72,15);highvideo();cprintf("%d",level);if(snakex[0]=1|snakex[0]=60){GAMEOVER();}if(snakey[0]=1|snakey[0]=24){GAMEOVER();}}key=bioskey(0);if(key=ESC){gotoxy(13,12);textcolor(GREEN);highvideo();cprintf("Are you sure to exit the game!(y/n?ch=getch();if(ch='y'|ch='Y')exit(0);else {gotoxy(13,12);cprintf("");}}if(key=LEFT&direction!4)direction=3;if(key=RIGHT&direction!3)direction=4;if(key=UP&direction!2)direction=1;if(key=DOWN&direction!1)direction=2;if(key=S){gotoxy(5,12);highvideo();cprintf("Please select the level you want to play(1~55):");scanf("%d",&level);gotoxy(5,12);cprintf("");}if(key=F5)getch();}}void GAMEHELP(){int i=1;textcolor(CYAN);highvideo();cprintf("Welcome To This Program,This Program is Called Snake Game!cprintf("\\n\\n\\rAnd As We Know This is A Very Old Game,But It Still Worths Playing!cprintf("\\n\\n\\rI Just Write It To Improve My Ability For The C Program!cprintf("\\n\\n\\rThe Operation Is As follows:");cprintf("\\n\\n\\rPress The Direction Key To control The Snake,And Press Esc To Exit The Game!cprintf("\\n\\n\\rAnd Press F5 To Pause The Game,And Anykey To Start!cprintf("\\n\\n\\rWhile You are playing the game,\\n\\n\\rYou can press S to select the game level you want to play!cprintf("\\n\\n\\rHope You Will Enjoy The Game!And If You Have Any New Ideas,\\n\\n\\rWilling To Hearing From You!Made By ZhiPing<QQ:969370950>");printf("\\n\\n\\rPress Anykey To Start The Game Now!Or after 30 seconds auto to run!while!kbhit()&i){gotoxy(40,23);textcolor(i);highvideo();cprintf("%d",i);sleep(1);i+;}}void main(){GAMEHELP();DRAWGAME();GAMEPLAY();}www.zgxue.com防采集请勿采集本网。

本文实例为大家分享了C语言实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下

用链表做 用数组作为地图 用数值表示墙或事物 没个结点都记录坐标值 移动时前一个结点的坐标作为后一个结点的坐标 移动时头结点判断要前进的下一个墙或自身就结束游戏 事物则在最后加一个结点

相比于第一个:贪吃蛇游戏,功能更加丰富

不要看重这些没意义的,你要是喜欢,甚至几个星期就可以学会图形开发,学会写贪吃蛇会写俄罗斯方块,个人感觉没了不起,底子深了,以后你看贪吃蛇代码还不是小菜么!加油!人家可能从游戏开发

#include"snake.h"//蛇的移动void move_snake();//画出蛇void draw_snake();//产生食物void creatfood();//判断蛇是否吃到食物void eatfood();//判断蛇是否死掉void SnakeState(); int main(){ //设置窗口大小 system("mode con cols=110 lines=31"); //设置标题 SetConsoleTitleA("贪吃蛇"); //播放bgm playmusic(); //初始化蛇begin: snake.CH = VK_RIGHT;//初始化方向 snake.len = 5; //初始化长度 snake.SPEED = 100;//初始化蛇的移动速度 snake.coord[1].x = SCREEN_WIDETH / 2;//初始化蛇头的坐标 snake.coord[1].y = SCREEN_HEIGHT / 2; snake.coord[2].x = SCREEN_WIDETH / 2-2;//初始化蛇头的坐标 snake.coord[2].y = SCREEN_HEIGHT / 2; snake.coord[3].x = SCREEN_WIDETH / 2-4;//初始化蛇头的坐标 snake.coord[3].y = SCREEN_HEIGHT / 2; //初始化食物状态 food.flag = 1;//1表示吃到食物 0表示没有吃到食物 //初始化食物状态 snake.flag = 1;//1活 0死 init_sence();//初始化游戏界面 while (1) { colormap(); gotoxy(0, 0); printf("■"); HuiFu(); setcolor(); draw_snake();//画蛇 Sleep(snake.SPEED);//蛇的移动速度 move_snake();//移动蛇 if(food.flag) creatfood();//产生食物 eatfood();//判断是否吃到食物 SnakeState();//判断蛇是否死亡 if (!snake.flag)break; } system("cls"); gotoxy(SCREEN_WIDETH/2, SCREEN_HEIGHT/2-4); printf(" GAME OVER!!!"); gotoxy(SCREEN_WIDETH / 2-6, SCREEN_HEIGHT / 2+2); printf("你的得分是:\t\t\t%d ",snake.len-1); gotoxy(SCREEN_WIDETH / 2-6, SCREEN_HEIGHT / 2+4); printf("我不服再来:\t\t\tCTRL "); gotoxy(SCREEN_WIDETH / 2-6, SCREEN_HEIGHT / 2+6); printf("算了垃圾游戏毁我青春:\t\tESC"); while (1) { if (GetAsyncKeyState(VK_CONTROL)) { system("cls"); goto begin; } else if (GetAsyncKeyState(VK_ESCAPE)) return 0; }} //蛇的移动void move_snake(){ //判断是否有按键操作 if (GetAsyncKeyState(up)) { if(snake.CH!=down)snake.CH = up; } else if (GetAsyncKeyState(down)) { if (snake.CH != up)snake.CH = down; } else if (GetAsyncKeyState(right)) { if (snake.CH != left)snake.CH = right; } else if (GetAsyncKeyState(left)) { if (snake.CH != right)snake.CH = left; } else if (GetAsyncKeyState(VK_F1)) { if(snake.SPEED>=50)snake.SPEED -= 10; } else if (GetAsyncKeyState(VK_F2)) { if (snake.SPEED <= 100)snake.SPEED += 10; } //游戏难度设置 if (snake.len >= 30 && snake.SPEED >= 10)snake.SPEED -= 2; //根据检测到的方向改变蛇头的位置 switch (snake.CH) { case right:snake.coord[1].x += 2; break; case left:snake.coord[1].x -= 2; break; case up:snake.coord[1].y -= 1; break; case down:snake.coord[1].y += 1; break; } } //画出蛇void draw_snake(){ //画出蛇头 gotoxy(snake.coord[1].x, snake.coord[1].y); printf("□"); //画出蛇身,直接一个for循环实现 for (int i = 2; i < snake.len; i++) { gotoxy(snake.coord[i].x, snake.coord[i].y); printf("□"); } //擦掉尾巴 HuiFu(); gotoxy(snake.coord[snake.len].x, snake.coord[snake.len].y); printf(" "); //遍历每一节蛇 for (int i = snake.len; i >1; i--) { snake.coord[i].x = snake.coord[i - 1].x; snake.coord[i].y = snake.coord[i - 1].y; } gotoxy(0, 0); printf("■"); gotoxy(85, 25); printf("得分:%d ", snake.len-1); gotoxy(85, 22); printf("速度:%dms/步 ", snake.SPEED); } //产生食物void creatfood(){ //随机种子生成 srand((unsigned)time(NULL)); if(food.flag) while (1) { food.x = rand() % 80; food.y = rand() % 30; if (food.x % 2 == 0 && food.x >= 2 && food.x <= 78 && food.y > 1 && food.y < 30) { int flag = 0; //判断产生的食物可不可能在蛇的身体上 for (int i = 1; i <= snake.len; i++) { if (snake.coord[i].x == food.x&&snake.coord[i].y == food.y) { flag = 1; break; } } if (flag)continue; //绘制食物 else { colorfood(); gotoxy(food.x, food.y); printf("⊙"); HuiFu(); food.flag = 0; break; } } } food.flag = 0;} //判断蛇是否吃到食物void eatfood(){ //只需要判断蛇头是否与食物重合 if (food.x == snake.coord[1].x&&food.y == snake.coord[1].y) { snake.len+=1; food.flag = 1; }} //判断蛇是否死掉void SnakeState(){ if (snake.coord[1].x < 2 || snake.coord[1].x>78 || snake.coord[1].y < 1 || snake.coord[1].y>29) snake.flag = 0; for (int i = 2; i <= snake.len; i++) { if (snake.coord[1].x == snake.coord[i].x&&snake.coord[1].y == snake.coord[i].y) snake.flag = 0; } }

很土很简单的实现方式 显示:在屏幕上的指定坐标打印一些断续的点(或其他字符),每个点之间用空格或者其他字符来分隔。移动:打印第一次后间隔一段时间,如0.5秒或1秒等,clrscr清屏,顺序移动

更多有趣的经典小游戏实现专题,分享给大家:

游戏速度自己调整*/ struct Food { int x;食物的横坐标*/ int y;食物的纵坐标*/ int yes;判断是否要出现食物的变量*/ }food;食物的结构体*/ struct Snake { int x〔N〕;int y〔N〕;int node;蛇的节数*/

C++经典小游戏汇总

思路上,就是你得把程序的当前运行状态保存成一个文件,下次读入这个文件,解析数据,重置游戏状态,就可以继续了。积分榜也一样,我稍微具体说一下:每一局结束后,把积分榜文件读出来,把当前

python经典小游戏汇总

python俄罗斯方块游戏集合

JavaScript经典游戏 玩不停

java经典小游戏汇总

javascript经典小游戏汇总

这要看你怎么编写的,用TC还是VC还是其它的。另外编写这种游戏用了多长时间,使用的方法(是否很优化),健壮性如何,代码的规范程度(甚至包括行数,用2000+的代码合用1000-的代码水平肯定不一样),等等。不能简单的将水平归类。说一个例子,我是本科才开始学计算机的。在大一下半学期,我们的C语言课设就让每个人编写一个小游戏,每个人被分配的游戏不同,难度比贪吃蛇差不多,稍简单有限(如四子棋、连连看)。用TC编写,DOS下运行,支持鼠标键盘。在学习VC时,让自己编写游戏,题材不限。此时有人写贪吃蛇、俄罗斯方块,我写的是拼版(可以选图形、块数、背景等,之后加入人工智能A*算法自动拼简单图形)。当时觉得比较有成就,不过现在(大四毕业)看来,代码很差,可读性不高,功能实现,但效率很低。再举个例子,当时我们没人需要用VC做扫雷,那时每个人都研究Windows的扫雷,力争和它一模一样,结果是没办法完全一样,因为水平有限,许多东西无法实现。所以说,但从成果上是无法准确定位水平的。不过能编出这种游戏了,比一般人还是要高一些~个人见解,仅供参考内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 贪吃蛇c语言代码实现(难度可选)
  • c语言贪吃蛇经典小游戏
  • c语言实现贪吃蛇游戏
  • c语言链表实现贪吃蛇游戏
  • c语言手把手教你实现贪吃蛇ai(上)
  • 70行c语言代码实现贪吃蛇
  • c语言结构数组实现贪吃蛇小游戏
  • c语言手把手教你实现贪吃蛇ai(下)
  • c语言手把手教你实现贪吃蛇ai(中)
  • c语言实现贪吃蛇游戏(命令行)
  • c++软件添加dump调试打印日志(推荐)
  • 用c++实现strcpy(),返回一个char*类型的深入分析
  • linux中使用c语言实现基于udp协议的socket通信示例
  • c语言冒泡排序法代码
  • c++begin和end运算符的返回迭代器的类型如何判断?
  • 汇编语言常见错误信息中文注解
  • c语言实现简易扑克牌游戏
  • c++设计模式之建造者模式(builder)
  • 基于c语言实现点菜系统
  • c语言实现任何文件的加密解密功能
  • 我已经能用C语言编像贪吃蛇之类的游戏了,请问我的水平现在怎么样?
  • C语言可以编写贪吃蛇游戏吗?
  • 求用c语言编写的贪吃蛇程序
  • 在dos环境下c语言编程编一个贪吃蛇游戏
  • 谁会贪吃蛇游戏用C语言编法的思路,还有给我发过来
  • 学linux下C语言一年多了,但是连贪吃蛇这样的游戏都还不会,这怎么办?
  • C语言小游戏贪吃蛇 如何实现显示那条蛇,并让它动起来? 大概说一下。(代码也行但不要全部的贪吃蛇代码)
  • 用C语言怎么做贪吃蛇游戏
  • 求教c语言在vs2010上写贪吃蛇怎么实现游戏的保存
  • 想用C语言实现贪吃蛇游戏,游戏开始之前需要注册一个账号或者登录一个账号,并记录下这个账号的最高成绩
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全c#教程vbvb.netc 语言java编程delphijavaandroidiosswiftscala易语言汇编语言其它相关首页c 语言贪吃蛇游戏c++经典小游戏汇总python经典小游戏汇总python俄罗斯方块游戏集合javascript经典游戏 玩不停java经典小游戏汇总贪吃蛇c语言代码实现(难度可选)c语言贪吃蛇经典小游戏c语言实现贪吃蛇游戏c语言链表实现贪吃蛇游戏c语言手把手教你实现贪吃蛇ai(上)70行c语言代码实现贪吃蛇c语言结构数组实现贪吃蛇小游戏c语言手把手教你实现贪吃蛇ai(下)c语言手把手教你实现贪吃蛇ai(中)c语言实现贪吃蛇游戏(命令行)c++软件添加dump调试打印日志(推荐)用c++实现strcpy(),返回一个char*类型的深入分析linux中使用c语言实现基于udp协议的socket通信示例c语言冒泡排序法代码c++begin和end运算符的返回迭代器的类型如何判断?汇编语言常见错误信息中文注解c语言实现简易扑克牌游戏c++设计模式之建造者模式(builder)基于c语言实现点菜系统c语言实现任何文件的加密解密功能c语言程序设计50例(经典收藏)c语言10个经典小程序c语言字符串操作总结大全(超详细c语言文件操作函数大全(超详细)c语言字符数组与字符串的使用详解c语言运算符优先级列表(超详细)c语言/c++中如何产生随机数c++中的string常用函数用法总结深入理解c++中public、protectedc++常用字符串分割方法实例汇总linux下c语言的几道经典面试题小结(分享)基于errno返回值的对应错误码的详细介绍c经典冒泡排序法实现代码mfc中radio button的用法详解c语言实现线索二叉树的定义与遍历示例c++实现线性代数矩阵行简化c++中mutable与volatile的深入理解c语言 不使用strcat函数实现连接两个字符c++中的重载、覆盖、隐藏介绍c语言实现牛顿迭代法解方程详解
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved