您的位置 首页 > 数码极客

‘贪吃蛇程序’贪吃蛇程序设计流程图…

贪吃蛇(也叫做贪食蛇)游戏是一款休闲益智类游戏,有PC和手机等多平台版本。既简单又耐玩。该游戏通过控制蛇头方向吃蛋,从而使得蛇变得越来越长。

我们的今天的目标就是:用C语言来实现一个贪吃蛇项目,也不用太复杂,初学者能看懂就行!

贪吃蛇小程序,主要采用C语言描述,采用数组进行数据存储的图形化操作界面,会涉及一点点C++ 知识(特别少的一点点),但是有C语言基础就够用了,编译器:VS2019,会涉及部分库函数的安装及使用,不过也很简单啦!

效果展示:

看到了这个效果之后,那我们就动手来实现吧!

希望大家都能轻松实现这个项目!另外涉及到的#include <gra;需要额外安装图形库插件easyX哦~

代码如下:

#include <gra; #include <; #include <conio.h> #include <; #include <; #include "; int score = 0; int gamespeed = 100; //蛇运行速度 static void Init(void); /*图形驱动*/ static void close(void); /*图形结束*/ static void Game_interface(void); /*游戏界面*/ static void GameOver(void); /*结束游戏*/ static void GamePlay(void); /*游戏过程*/ static void PrScore(void); /*输出成绩*/ /*主函数*/ int main(void) { Init(); Game_interface(); GamePlay(); Close(); return 0; } /*图形驱动*/ static void Init(void) { int gd=9,gm=2; initgraph(&gd,&gm," "); cleardevice(); } /* 开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙 */ static void Game_interface(void) { int i; setcolor(LIGHTCYAN); /*setbkcolor(LIGHTGREEN);*/ setlinestyle(PS_SOLID,0,1); /*设置线型*/ for(i=50;i<=600;i+=10) /*画边框*/ { rectangle(i,40,i+10,49); /*上边框*/ rectangle(i,451,i+10,460); /*下边框*/ } for(i=40;i<=450;i+=10) { rectangle(50,i,59,i+10); /*左边框*/ rectangle(601,i,610,i+10); /*右边框*/ } } /* 游戏主函数 */ static void GamePlay(void) { int i; srand(time(NULL)); /*随机数发生器*/ = 1; /*1表示需要出现新食物,0表示已经存在食物*/ = 0; /*活着*/ = 1; /*方向往右*/ [0] = 100; [0] = 100; [1] = 110; [1] = 100; = 2; /*节数*/ PrScore(); /*输出得分*/ while(1) /*可以重复玩游戏,压ESC键结束*/ { while( !kbhit() ) /*在没有按键的情况下,蛇自己移动*/ { if( == 1) /*需要出现新食物*/ { = rand()%400 + 60; = rand()%350 + 60; while(%10 != 0) /*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/ ++; while(%10 != 0) ++; = 0; /*画面上有食物了*/ } if( == 0) /*画面上有食物了就要显示*/ { setcolor(GREEN); rectangle(,, + 10, - 10); } for(i=-1;i>0;i--) /*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/ { [i] = [i-1]; [i] = [i-1]; } /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/ switch() { case 1: [0] += 10; break; case 2: [0] -= 10; break; case 3: [0] -= 10; break; case 4: [0] += 10; break; } /* 从蛇的第四节开始判断是否撞到自己 */ for(i=3;i<;i++) { if(([i] == [0]) && ([i] == [0])) { GameOver(); /*显示失败*/ = 1; break; } } if(([0] < 55) || ([0] > 595) || ([0] < 55) || ([0] > 455)) /*蛇是否撞到墙壁*/ { GameOver(); /*本次游戏结束*/ = 1; /*蛇死*/ } if( == 1) /*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/ break; if(([0] == ) && ([0] == )) /*吃到食物以后*/ { setcolor(BLACK); /*把画面上的食物东西去掉*/ rectangle(,,+10,-10); [] = -20; [] = -20; /* 新的一节先放在看不见的位置,下次循环就取前一节的位置 */ ++; /*蛇的身体长一节*/ = 1; /*画面上需要出现新的食物*/ score += 10; PrScore(); /*输出新得分*/ } setcolor(RED); /*画出蛇*/ for(i=0;i<;i++) rectangle([i],[i],[i]+10,[i]-10); Sleep(gamespeed); setcolor(BLACK); /*用黑色去除蛇的的最后一节*/ rectangle([-1],[-1], [-1]+10,[-1]-10); } /*endwhile(!kbhit)*/ if( == 1) /*如果蛇死就跳出循环*/ break; key=getch(); /*接收按键*/ if (key == ESC) break; /*按ESC键退出*/ switch(key) { case UP: if( != 4) /*判断是否往相反的方向移动*/ = 3; break; case RIGHT: if( != 2) = 1; break; case LEFT: if( != 1) = 2; break; case DOWN: if( != 3) = 4; break; } }/*endwhile(1)*/ } /*游戏结束*/ static void GameOver(void) { cleardevice(); PrScore(); setcolor(RED); setfont(56,0,"黑体"); outtextxy(200,200,"GAME OVER"); getch(); } /*输出成绩*/ static void PrScore(void) { char str[10]; setfillstyle(YELLOW); bar(50,15,220,35); setcolor(BROWN); setfont(16,0,"宋体"); sprintf(str,"score:%d",score); outtextxy(55,16,str); } static void Close(void) { closegraph(); } ​ #ifndef SNAKE_H #define SNAKE_H #define LEFT 'a' #define RIGHT 'd' #define DOWN 's' #define UP 'w' #define ESC 27 #define N 200 /*蛇的最大长度*/ char key; /*控制按键*/ struct Food { int x; /*食物的横坐标*/ int y; /*食物的纵坐标*/ int yes; /*判断是否要出现食物的变量*/ }food; /*食物的结构体*/ struct Snake { int x[N]; int y[N]; int node; /*蛇的节数*/ int direction; /*蛇移动方向*/ int life; /* 蛇的生命,0活着,1死亡*/ }snake; #endif​

此外,我也给大家分享我收集的其他资源,从最零基础开始的教程到C语言C++项目案例,帮助大家在学习C语言的道路上披荆斩棘!

编程学习书籍分享:

编程学习视频分享:

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)最重要的是你可以在群里面交流提问编程问题哦!

对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“贪吃蛇程序,贪吃蛇程序设计流程图,贪吃蛇程序代码c语言,贪吃蛇程序代码”边界阅读