ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:71.42KB ,
资源ID:4294267      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4294267.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(用c编写贪吃蛇全过程.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

用c编写贪吃蛇全过程.docx

1、用c编写贪吃蛇全过程C语言编写贪吃蛇 此贪吃蛇是我刚学习c语言的时候做的,很手生,写得也不好,而且bug比较多,但做为一般的毕业设计或者是课堂设计是够用了,而且因为不是很专业,但还是希望各位童鞋不要抄袭,毕竟知识是自己的,在看懂了的前提下,自己可以参考着写一遍,弄懂了才是自己的。废话不说了,大家都懂,现在进入正题。在vs2010环境下编绎通过,但不保证在其他平台上能通过。仅做为参考。 具体能实现的功能:方向控制,吃食物,食物有两种,有毒的,吃了会减少生命值,还有一种是无毒的,吃了会长身体,撞墙死亡,碰身体死亡,死亡重新开始游戏。 首先附上一张游戏截图,仅为初学者参考,高手可以点击右上角,谢谢!

2、全部代码为在三个文件里面,分别为header.h,src.c, main.c,下面分别发出代码及简单的注解:一header.h,这是存放的头文件以及函数声明,就不解释了,直接放代码;#include#include#include#include #include int xy250;int i;int food2;int pois25;int wall(void);int init(int len);/int way(int flag);int mov(int key);int print(int ret);int run(int ret);int foods(void);int grow(

3、void);int direction(void);int die(void);int or(void);int poi(void);int gotoxy(int x,int y);二、资源文件src.c,这里存放的是函数的实现方法:#includeheader.hint flag=0;int len=5;int key=0;char name=name;int core=0;int life=3;/初始化墙int wall(void) int i=0; int j=0; for(i=0;i30;i+) for(j=0;j0&i0&j29) printf( ); if(i=29) printf

4、(* ); /初始化蛇属性int init(int len) life=3; core=0; flag=0; len=5; key=0; gotoxy(8,15); printf(请输入你的大名,按Enter键开始游戏:); scanf(%s,&name); gotoxy(62,2); printf(-); gotoxy(62,4); printf(name:%s,name); gotoxy(8,15); printf( ); gotoxy(62,6); printf(方向控制说明:); gotoxy(62,7); printf(w:向上 s:向下); gotoxy(62,8); printf

5、(a:向左 d: 向右); gotoxy(62,10); printf(表示食物); gotoxy(62,11); printf(表示有毒); gotoxy(62,12); printf(分数:%d,core); gotoxy(62,14); printf(生命值:); for(i=0;i3;i+) printf(); xy00=22; xy10=22; for(i=1;ilen;i+) xy0i=xy0i-1-2; xy1i=xy1i-1; print(len); for(i=0;i0;i-) xy0i=xy0i-1; xy1i=xy1i-1; /打印蛇int print(int ret)

6、int i=0; for(i=0;iret;i+) if(i=0) gotoxy(xy00,xy10); printf(); else gotoxy(xy0i,xy1i); printf(); /定义窗口属性int gotoxy(int x,int y) COORD coord = x, y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); /蛇移动int mov(int k) switch(k) case 1: if(2 != flag ) run(len); xy00=xy00-2; flag=1; bre

7、ak; case 2: if(1 != flag) run(len); xy00=xy00+2; flag=2; break; case 3: if(4 != flag) run(len); xy10=xy10-1; flag=3; break; case 4: if(3 != flag) run(len); xy10=xy10+1; flag=4; break; /生成食物int foods(void) food0=2*(rand()%(28)+1); food1=rand()%(28)+1; gotoxy(food0,food1); printf();/蛇吃食物并成长int grow(vo

8、id) if(xy00=food0&xy10=food1) len+; foods(); core=core+100; gotoxy(62,12); printf(分数:%d,core); return len;/根据键值获取蛇的移动方向int direction(void) if(_kbhit() key=_getch(); if(a=key & flag!=2) flag=1; else if(d=key & flag!=1) flag=2; else if(w=key & flag!=4) flag=3; else if(s=key & flag!=3) flag=4; return f

9、lag;/撞强和碰尾死亡方式int die(void) if(xy00=0 | xy00=58 |xy10=0 |xy10=29) return -1; for(i=1;ilen;i+) if(xy00=xy0i & xy10=xy1i) return -2; /死亡后由玩家决定是否继续游戏int or(void) int key; while(1) if(_kbhit() key=_getch(); if(y=key) return 1; if(n=key) return 2; /吃有毒的食物,生命减少至0;int poi(void) for(i=0;i5;i+) if(xy00=pois0

10、i & xy10=pois1i) life-; if(life=0) gotoxy(62,14); printf( ); gotoxy(62,14); printf(生命值:); return -3; gotoxy(62,14); printf( ); gotoxy(62,14); printf(生命值:); for(i=1;i=life;i+) printf(); pois0i=2*(rand()%(28)+1); pois1i=rand()%(28)+1; gotoxy(pois0i,pois1i); printf(); 三、主函数main.c文件#includeheader.hint m

11、ain(void) int len=5; int i; int flag=2; int kill; int ret; int ret2; system(COLOR 0C);/窗口颜色 system(MODE CON: COLS=99 LINES=30);/窗口宽度和高度 in: len=5; flag=2;/初始化移动方向 kill=1; ret=0; ret2=0; gotoxy(0,0);/光标移动到坐标(0,0)的位置 wall();/打印围墙 /初始化蛇 init(5);/初始化蛇 /测试语句 / gotoxy(58,29); / printf(这); foods();/调用生成食物的

12、函数,生成一个食物 while(1) gotoxy(xy0len-1,xy1len-1); printf( );/蛇移动时,蛇尾前移时擦去原蛇尾 mov(flag);/控制蛇移动方向 len=grow();/蛇生长,并返回蛇的长度 ret2=poi();/蛇吃到有毒的食物,如果生命值为0,刚死亡 if(ret2=-3) goto out3; flag=direction();/根据键值,得到蛇移动方向 kill=die();/蛇死亡判断,撞墙和碰尾死亡; print(len);/打印当前长度的蛇 if(-1=kill) goto out1;/撞墙死亡 if(-2=kill) goto out2

13、;/碰尾死亡 Sleep(300-5*len);/简单延时 out1: gotoxy(15,15); printf(恭喜你撞墙而死!按y重新开始,按n结束游戏);in2: ret=or();/死亡后由玩家决定是否继续游戏,按y继续游戏,按n退出游戏 if(1=ret)/复活后游戏,把蛇身置空 for(i=0;i50;i+) xy0i=NULL; xy1i=NULL; goto in;/回到游戏开始的地方,开始游戏 if(2=ret) goto _out;/退出游戏 while(1);out2: gotoxy(15,15); printf(恭喜你碰尾而死!按y重新开始,按n结束游戏); goto

14、 in2;out3: gotoxy(15,15); printf(恭喜你中毒而死!按y重新开始,按n结束游戏); goto in2; while(1);_out: return -1;别外附上一些必要的关键代码:#include #include void gotoxy(int x, int y)/光标跳转 COORD coord = x, y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);/随机生成坐标rand()%(ORDINATE_2-ORDINATE_1)/窗口属性设置system(COLOR 09)

15、; system(MODE CON: COLS=99 LINES=27);/得到键盘输入/key = _getch();if (_kbhit()/有输入/是否按下按键,并弹起以及附上控制台的关键代码:#include stdio.h#include Windows.hint main() HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); / 获取控制台句柄 SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED); / 设置为红色 printf(把这句话颜色变成红

16、色n); SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);/ 设置为黄色 printf(把这句话颜色变成黄色n);0.设置控制台输出行数和列数system(mode con:cols=100 lines=20000);1.改变整个控制台的颜色用 system(color 0A);其中color后面的0是背景色代号,A是前景色代号。各颜色代码如下:0=黑色1=蓝色2=绿色3=湖蓝色4=红色5=紫色6=黄色7=白色8=灰色9=淡蓝色A=淡绿色B=淡浅绿色C=淡红色D=

17、淡紫色E=淡黄色F=亮白色2.改变下一个输出或者输入字体和背景的颜色采用SetConsoleTextAttribute函数,如White on Black:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);Red on Black:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |

18、FOREGROUND_RED);Green on Black:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN);Yellow on Black:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED | FOREGROUND_GREEN);Blue on Black:SetConsoleTextAttribute(GetStd

19、Handle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_BLUE);Magenta on Black:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED | FOREGROUND_BLUE);Cyan on Black:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GRE

20、EN | FOREGROUND_BLUE);Black on Gray:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |BACKGROUND_INTENSITY);Black on White:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_B

21、LUE);Red on White:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED);等等。需要引入头文件:windows.h函数原型:BOOL SetConsoleTextAttribute( HANDLE hConsoleOutput, WORD wAttributes );wAttributes 的取值

22、含义对应如下:Attribute MeaningFOREGROUND_BLUE Text color contains blue.FOREGROUND_GREEN Text color contains green.FOREGROUND_RED Text color contains red.FOREGROUND_INTENSITY Text color is intensified.BACKGROUND_BLUE Background color contains blue.BACKGROUND_GREEN Background color contains green.BACKGROUND

23、_RED Background color contains red.BACKGROUND_INTENSITY Background color is intensified.COMMON_LVB_LEADING_BYTE Leading byte.COMMON_LVB_TRAILING_BYTE Trailing byte.COMMON_LVB_GRID_HORIZONTAL Top horizontal.COMMON_LVB_GRID_LVERTICAL Left vertical.COMMON_LVB_GRID_RVERTICAL Right vertical.COMMON_LVB_REVERSE_VIDEO Reverse foreground and background attributes.COMMON_LVB_UNDERSCORE Underscore.如有侵权请联系告知删除,感谢你们的配合!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1