C语言版贪吃蛇代码.doc

上传人:小** 文档编号:4483415 上传时间:2021-09-25 格式:DOC 页数:9 大小:44KB
返回 下载 相关 举报
C语言版贪吃蛇代码.doc_第1页
第1页 / 共9页
C语言版贪吃蛇代码.doc_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《C语言版贪吃蛇代码.doc》由会员分享,可在线阅读,更多相关《C语言版贪吃蛇代码.doc(9页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、. .C语言版贪食蛇游戏源代码(我自己写的)热1已有 58 次阅读 2011-01-18 17:57#include #include #include #include #define UP 0#define DOWN 1#define LEFT 2#define RIGHT 3/宏定义,定义四个方向-0 1 2 3分别代表上下左右#define TURN_NUM 1000/可以保存的最多转弯次数,一条蛇同时最多只能有1000次的弯曲#define INIT_LENGTH 8#define UP_EDGE 0#define DOWN_EDGE 24#define LEFT_EDGE 0#de

2、fine RIGHT_EDGE 79/定义上下左右四个边界#define X 0/初始状态下蛇的身体坐标(LEFT_EDGE+X,UP_EDGE+Y)#define Y 0/决定初始状态下蛇的身体相对于游戏界面原点(LEFT_EDGE,UP_EDGE)的位置/*定义全局变量*/char buf1000=*;/决定初始的snake_length的值:必须与INIT_LENGTH保持同步char *snake=buf;/蛇的身体,最长有1000个环节char FOOD=$;/记录食物的形状int food_num=0;/记录已经吃下的食物数量int score=0;/记录当前的得分,由food_n

3、um决定int snake_length=INIT_LENGTH;/initializer is not a constant:strlen(snake);int cursor2=LEFT_EDGE+20+INIT_LENGTH,UP_EDGE+10;/记录当前光标所指位置int head2=LEFT_EDGE+20+INIT_LENGTH-1,UP_EDGE+10;/记录头部的坐标int tail2=0,0;/记录尾巴的坐标int old_tail2;/记录上一步尾巴所在位置int food2=0,0;/记录食物的坐标int init_position2=LEFT_EDGE+X,UP_EDG

4、E+Y;/蛇的初始位置int direction=RIGHT;/记录当前蛇的头部的运动方向int turn_pointTURN_NUM2;int head_turn_num=0;/记录头部的转弯次数int tail_turn_num=0;/记录尾巴的转弯次数int game_over=0;/判断游戏是否结束/*主方法*/void main() /函数声名 void gotoxy(int x,int y);/移动光标的位置 void cur_state();/测试游戏的当前状态参数 void print_introduction();/打印游戏规则 void init();/初始化游戏 void

5、 control();/接收键盘控制命令 void move();/控制身体的运动 void move_up();/向上运动 void move_down();/向下运动 void move_left();/向左运动 void move_right();/向右运动 void update_tail_position();/更新尾巴的坐标 void generate_food();/随机产生食物 void eat_food();/吃下食物 char ch; while(!game_over) print_introduction(); printf(tt按任意键开始游戏); getch(); s

6、ystem(cls); /cur_state(); init(); control(); system(cls); gotoxy(0,10); printf(tt您的当前得分是%dn,score); printf(tt这条蛇共转了%d次弯,它的身体长度是%dn,head_turn_num,strlen(snake); printf(tt游戏结束,您要再玩一局吗?(y/n); scanf(%c,&ch); getchar(); if(ch=y|ch=Y) continue; else system(cls); printf(nnnttt谢谢您的使用,再见!); _sleep(3000); gam

7、e_over=1; /*打印游戏规则*/void print_introduction() int i=0; int rule_num; char *rule4; rulei+=nnttt欢迎您来玩贪食蛇游戏n; rulei+=tt游戏规则如下:n; rulei+=tt1.按上下左右键控制蛇的运动方向n; rulei+=tt2.按Ctrl+C结束当前游戏n; rule_num=i; system(cls); for(i=0;i0;i-) putchar(snakei-1); /*接收键盘控制命令*/void control() char command;/存放接收到命令 while(1) co

8、mmand=getch(); if(command=-32) /F11,F12:-123,-122 command=getch(); if(command=H & (direction=LEFT | direction=RIGHT)/光标上移 direction=UP; turn_pointhead_turn_num%TURN_NUM0=head0; turn_pointhead_turn_num%TURN_NUM1=head1; head_turn_num+; else if(command=P & (direction=LEFT | direction=RIGHT)/光标下移 direct

9、ion=DOWN; turn_pointhead_turn_num%TURN_NUM0=head0; turn_pointhead_turn_num%TURN_NUM1=head1; head_turn_num+; else if(command=K & (direction=UP | direction=DOWN)/光标左移 direction=LEFT; turn_pointhead_turn_num%TURN_NUM0=head0; turn_pointhead_turn_num%TURN_NUM1=head1; head_turn_num+; else if(command=M & (

10、direction=UP | direction=DOWN)/光标右移 direction=RIGHT; turn_pointhead_turn_num%TURN_NUM0=head0; turn_pointhead_turn_num%TURN_NUM1=head1; head_turn_num+; else if(command=-122 | command=-123); else if(command=0) command=getch();/接收Fn的下一个字符 /F1F10:5968 else if(command=1&command=UP_EDGE) gotoxy(head0,head

11、1); putchar(*); gotoxy(head0,head1-1); putchar(snake0); gotoxy(tail0,tail1); /_sleep(1000);/查看尾部光标 putchar(0); update_tail_position(); head1-=1; cursor0=head0; cursor1=head1-1; gotoxy(cursor0,cursor1); else gotoxy(head0,head1); /*向下运动*/void move_down() if(cursor1=LEFT_EDGE) gotoxy(head0,head1); putc

12、har(*); gotoxy(head0-1,head1); putchar(snake0); gotoxy(tail0,tail1); /_sleep(1000);/查看尾部光标 putchar(0); update_tail_position(); head0-=1; cursor0=head0-1; cursor1=head1; gotoxy(cursor0,cursor1); else gotoxy(head0,head1); /*向右运动*/void move_right() if(cursor0=RIGHT_EDGE) gotoxy(head0,head1); putchar(*)

13、; putchar(snake0); gotoxy(tail0,tail1); /_sleep(1000);/查看尾部光标 putchar(0); update_tail_position(); head0+=1; cursor0=head0+1; cursor1=head1; gotoxy(cursor0,cursor1); else gotoxy(head0,head1); /*更新尾巴的坐标*/void update_tail_position() old_tail0=tail0; old_tail1=tail1;/保存上次尾巴的位置 if(tail0=food0 & tail1=foo

14、d1) gotoxy(tail0,tail1); putchar(FOOD); if(tail_turn_numhead_turn_num) if(tail0turn_pointtail_turn_num%TURN_NUM0) tail0-=1; else if(tail1turn_pointtail_turn_num%TURN_NUM1) tail1-=1; else if(tail0=turn_point(tail_turn_num-1)%TURN_NUM0 & tail1=turn_point(tail_turn_num-1)%TURN_NUM1) if(tail0turn_pointt

15、ail_turn_num%TURN_NUM0) tail0-=1; else if(tail1turn_pointtail_turn_num%TURN_NUM1) tail1-=1; if(tail0=turn_pointtail_turn_num%TURN_NUM0 & tail1=turn_pointtail_turn_num%TURN_NUM1) tail_turn_num+=1; else if(tail_turn_num=head_turn_num) if(tail0head0) tail0-=1; else if(tail1head1) tail1-=1; void generat

16、e_food() int i=0,j=0; do i=rand()%DOWN_EDGE; while(iDOWN_EDGE); do j=rand()%DOWN_EDGE; while(jRIGHT_EDGE); food0=i; food1=j; gotoxy(food0,food1);/抵达食物投放点 putchar(FOOD);/放置食物 gotoxy(cursor0,cursor1);/返回光标当前位置void eat_food() if(tail0=turn_point(tail_turn_num-1)%TURN_NUM0 & tail1=turn_point(tail_turn_num-1)%TURN_NUM1) tail_turn_num-=1; snakesnake_length+=snake1; tail0=old_tail0; tail1=old_tail1;/将尾巴回退到上一步所在的位置 gotoxy(tail0,tail1); putchar(snake1); food_num+; score=food_num; gotoxy(cursor0,cursor1);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com