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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

C语言控制台版贪吃蛇文档格式.docx

1、#define J_RIGHT 0xE04D#define J_UP 0xE048#define J_DOWN 0xE050#define J_PGUP 0xE049#define J_DELETE 0xE053#define J_END 0xE04F#define J_PGDW 0xE051#define S_TIME 230#define CALTIME(x) (S_TIME-(x)*22)/*-*/* LOCAL FUNCTION DECLARE */void ShowBye (void);void ShowPause (void);void print_explian (void);v

2、oid gotoxy (int x, int y);void draw_map (Psnake *head);void draw_snake (Psnake *head);void EmptySnake (Psnake *head);void draw_food (Coordinate *food);void HasKey (Dir *direction, int * pause);void IniHead (Psnake * head, Psnake *tail);void IniCoord (Psnake * head, int x, int y);void IniSnake (Psnak

3、e * head, Psnake *tail, int n);void DelTail (Psnake *head, Psnake * tail, int x, int y);int Menu();int SetDifficulty(int *diff);int jkGetKey(void);int setCursorVisible(int b);int IniFood (Psnake *head, Coordinate *food);int InSnake (Psnake *head, int x, int y);int MoveSnake (Psnake *head, Psnake *ta

4、il, Dir * direction, Coordinate *food, int *leng);int IsOver (Psnake *head, int x, int y);int HitSelf (Psnake *head, int x, int y);int ShowOver (int *score);函数接口实现#include stdlib.hwindows.hconio.hassert.htime.h#include snake.h/直接移动光标到X,Y 坐标上。windows api实现void gotoxy(int x,int y) COORD pos; pos.X = x

5、; pos.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);/获取按键信息int jkGetKey(void) int rk = 0; int k = getch(); if (k = J_FUNC_KEY) k = getch(); rk = 0xFF00 | k; return rk; if (k = J_CTRL_KEY) rk = 0xE000 | k; rk = 0x0000 | k;/绘制地图 void draw_map (Psnake *head) int i; system (cls);

6、for (i = min_x; i coord.x, pnode-coord.y);# pnode = pnode-next;/绘制食物void draw_food (Coordinate *food) gotoxy (food-x, food-y); printf (%c,3);int Menu()/这里是菜单选择的界面 int choose = 1, ischoose = 1; int diff = 1, i;/display menu interface system(/clear screen首先清屏 printf(*n Start game.n Choose Difficulty.n

7、 Quit.n n Warning:Please select English input method.nn do for(i=1;i1) choose -; break; case J_DOWN: if (choose 1) (*diff) -; if (*diff next = NULL; pnode-next = newsnake; pnode = newsnake; *tail = pnode;/初始化坐标地址void IniCoord (Psnake * head, int x, int y)coord.x = x-;coord.y = y;/初始化食物int IniFood (P

8、snake *head, Coordinate *food) srand (unsigned)time (NULL); food-x = rand () % (max_x -2) + 1;y = rand () % (max_y -2) + 1; while (InSnake (head, food-y); return TRUE;/判断食物是否生成在 蛇身体上int InSnake (Psnake *head, int x, int y) if (pnode-coord.x = x & pnode-coord.y = y) return TRUE; return FALSE;/移动蛇int

9、MoveSnake (Psnake *head, Psnake *tail, Dir * direction, Coordinate *food, int *leng) Snake * pnode = *head; int x = pnode-coord.x; int y = pnode-coord.y; int being_food = TRUE; switch (*direction) case U: y-; case D: y+; case L: x-; case R: x+; default: if (food-x = x & food-y = y) /判断是否是食物 newsnake

10、 = (Snake *) malloc (sizeof (Snake); assert (newsnake !next = *head;coord.x = x; *head = newsnake; being_food = FALSE; (*leng)+; if (IsOver(head, x, y)/判断是否死亡 return OVER; if (being_food) DelTail (head, tail, x, y); /未吃到食物时 return being_food;/跟新尾部坐标 擦除尾部,移到下一坐标 造成视觉移动void DelTail (Psnake *head, Psna

11、ke * tail, int x, int y) gotoxy (*tail)-coord.x, (*tail)- while (pnode-next != *tail) (*tail)- *head = *tail; *tail = pnode;/判断游戏结束int IsOver (Psnake *head, int x, int y) if (x = min_x | x = max_x | y = min_y | y = max_y | HitSelf (head, x, y) = 1) return TRUE;/判断是否吃到自己,返回 结果int HitSelf (Psnake *hea

12、d, int x, int y) Snake *pnode = (*head)-/打印说明void print_explian(void)/说明 gotoxy (61, 5);Level : gotoxy (61, 8);Score: gotoxy (61, 15);欢迎来到贪吃蛇游戏! gotoxy (61, 16);按空格键暂停! gotoxy (61, 17);祝你好运 !/释放内存void EmptySnake (Psnake *head) Snake *psave; while (*head) psave = (*head)- free (*head); *head = psave;

13、void ShowPause()/显示暂停的界面 char key; gotoxy(0, max_y / 2-6); * * * * * * * * * * * * * * * *n * * * * * * * * n * * * * * * * * * * * * * * * * * * *n * * * * * * * n * * * * * * * * * * * * * * *nnn Please press SPACE to continue. while(key = jkGetKey() /只当按下回车键时退出循环返回游戏 if(key = J_SPACE) break;/消除光标

14、, 直接COPY的int setCursorVisible(int b) HANDLE hd = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_CURSOR_INFO ccInfo; GetConsoleCursorInfo(hd, &ccInfo); ccInfo.bVisible = !b; return SetConsoleCursorInfo(hd, &/判断是否按键void HasKey (Dir *direction, int * pause) if (kbhit() switch (jkGetKey() case J_UP : if (*dir

15、ection != D) *direction = U; break;= U) *direction = D; case J_RIGHT: if (*direction != L) *direction = R; case J_LEFT := R) *direction = L; case J_SPACE: *pause = 1; ; /初始化head, tailvoid IniHead (Psnake * head, Psnake *tail) *head = (Snake *) malloc (sizeof (Snake); assert (*head ! (*head)- *tail = (Snake *) malloc (sizeof (Snake); assert (*tail !/显示结果int ShowOver (int *score) int key; gotoxy (16, max_y/2 -3);= gotoxy (16, max_y/2 -2); GAME OVER gotoxy (16, max_y/2 -1); gotoxy (16, max_y/2 +1); YOU GOT SCORE: %u, *score); Sleep (2000); gotoxy (16, max_y/

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

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