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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

贪吃蛇C语言图形化编程文档格式.docx

1、 void LaserDisplay() /显示镭射状态的格子 IMAGE image(10,10); SetWorkingImage(&image); DWORD* pMem = GetImageBuffer(& for(int i = 0; i 10 * 10; i+) pMemi = BGR(RGB(0, 0, i * 256 / (10*10) ); SetWorkingImage(NULL); putimage(m_x,m_y,& short ReturnFull() /返回格子状态 return m_full; Cell() /构造函数 m_x = 0,m_y = 0,m_full

2、 = 0; m_color = BLACK;private: short m_x; /格子的左上角X坐标 short m_y; /格子的左上角Y坐标 short m_full; /0为空,1为阻挡,2为食物 COLORREF m_color; /格子颜色;/游戏区类,编写有关游戏区的一些操作class GameArea /游戏区域 Cell m_game6060; /定义游戏区域(由360个格子组成) friend void MessageDispose(); bool CreatFood() /产生随机食物 srand(time(NULL); /初始化随机数种子 m_random1 = ra

3、nd()%58+1; /随机生成一个0 - 58的整数 m_random2 = rand()%58+1; /随机一个0 - 58的整数 if(m_gamem_random2m_random2.m_full = 0) /检查生成的食物坐标是否在障碍上 m_gamem_random1m_random2.display(GREEN); m_gamem_random1m_random2.m_full = 2; return true; /如果随机的食物正好出现在蛇身上,则进入下面的循环寻找可以生成食物的地方 for(m_random1 = 1;m_random1 59;m_random1+) for(

4、m_random2 = 1;m_random2 m_random2+) if(m_gamem_random2m_random2.m_full = 0) m_gamem_random1m_random2.display(GREEN); m_gamem_random1m_random2.m_full = 2; return true; /如果没有找到可以生成食物的地方,则通关 return false; /返回false即表示通关 void DelFood() /删除食物 m_gamem_random1m_random2.m_full = 0; /设置为0即代表格子属性为空 void Change

5、Color(int flag1,int flag2,COLORREF color) /设置指定格子的颜色 m_gameflag1flag2.display(color); void Init() /初始化GAME区域 int flag1,flag2; /标识变量 BeginBatchDraw(); /开始批量绘图 setfillstyle(BLACK); /设置当前颜色 bar(0,0,600,600); /画无边框填充矩形(在这里的用途是用黑色清空游戏区域) for(flag1 = 0;flag1 60;flag1+) for(flag2 = 0;flag2 next;now-next !=

6、 NULL;now = now-next) free(now-prior); head = (struct node*)malloc(sizeof(struct node); /为蛇头分配内存 head-prior = NULL;m_x = 300;m_y = 300; now = (struct node*)malloc(sizeof(struct node);next = now; now-prior = head;next = NULL;m_y = 290; last = now; toward = DOWN; void SnakeAdd() now = head; /当前指向蛇头pri

7、or = (struct node*)malloc(sizeof(struct node); /为新增的结点分配内存 now = now-prior; /让当前指向新分配的结点 /置空当前结点的前趋next = head; /让当前结点的后继指向蛇头 switch(toward) /根据当前蛇头方向确定新增部分的坐标 case UP: now-m_x = head-m_x;m_y = head-m_y -10; break; case DOWN:m_y + 10; case LEFT:m_x - 10;m_y; case RIGHT:m_x + 10; head = now; /设置当前结点为

8、蛇头 void SnakeDel() /释放蛇尾结点(删除蛇尾) last = last- free(last-next); last- void SnakeMove() /蛇身移动一格 SnakeAdd(); /增加蛇头 SnakeDel(); /删除蛇尾 struct node /蛇身链表 int m_x; int m_y; struct node *next; /下个结点 struct node *prior; /上个结点 ; struct node *head; struct node *last; struct node *now;/游戏类,用来初始化游戏的参数,及实现其他游戏操作c

9、lass Game void Init() closegraph(); initgraph(800,600); setbkmode(TRANSPARENT); /设置输出文字背景为透明 LOGFONT f; getfont(&f); / 获取当前字体设置 f.lfHeight = 50; / 设置字体高度为 48(包含行距) _tcscpy(f.lfFaceName, _T(黑体); / 设置字体为“黑体” f.lfQuality = ANTIALIASED_QUALITY; / 设置输出效果为抗锯齿 setfont(& / 设置字体样式 void FailGame() /游戏失败显示的画面

10、setcolor(RED); setfont(70, 0, _T(微软雅黑 outtextxy(150, 265, _T(YOU LOSE! void WinGame() /游戏胜利时显示的画面YOU WIN! FlushBatchDraw(); Sleep(10000); exit(0);/管理区类,定义管理区域的相关操作class ManageArea void TimeAdd(double add) /增加时间(可在类外直接调用实现动态刷新时间) m_time += add; DisplayTime(); void ScoreAdd(short add) /增加分数(可在类外直接调用实现

11、动态刷新分数) m_score += add; DisplayScore(); void DisplayPause() /显示暂停或者开始 _stprintf(m_str_score, _T(%d), m_score); setfont(25, 0, _T( setcolor(BLUE); if(m_pause) outtextxy(625, 490, _T(开始(P键) else暂停(P键) void Init() /初始化管理界面 m_time = 0.0; m_score = 0; m_pause = false; /格式化转换类型 _stprintf(m_str_time, _T(%.

12、1lf), m_time); m_bgcolor = BLACK; bar(601,0,800,600); setfont(60, 0, _T( setcolor(GREEN); outtextxy(625, 30, _T(贪吃蛇 setfont(30, 0, _T( setcolor(RGB(128,0,255); outtextxy(625, 140, _T(制作:初恋年代 outtextxy(625, 390, _T(时间: outtextxy(625, 420, _T(分数: outtextxy(625, 460, _T(重新游戏(R键) outtextxy(625, 520, _T(

13、直接退出(ESC键) outtextxy(680, 420, m_str_score); outtextxy(680, 390, m_str_time); void DisplayTime() /显示当前耗时 setfillstyle(m_bgcolor); bar(680,390,800,415); outtextxy(680,390,m_str_time); void DisplayScore() /显示当前分数 bar(680,420,800,445); outtextxy(680,420,m_str_score); double m_time; short m_score; bool

14、m_pause; TCHAR m_str_leave2, m_str_time33, m_str_score5; COLORREF m_bgcolor;/声明游戏需要的类Game game; /用于初始化游戏、设置游戏相关参数GameArea a; /用于初始化游戏区域,设置,改变游戏区域相关参数ManageArea manager; /用于初始化管理区域,设置管理区相关参数Snake s; /用于初始化蛇,数据化蛇,操作蛇/游戏的消息控制,流程控制函数void MessageDispose() /消息处理函数 char c; s.now = NULL; bool Keepdown = fal

15、se; while(true) Keepdown = false; /是否持续按W A S D 中的一个按键 if(kbhit() switch(c = getch() /处理按键消息(W A S D) case w:W if(s.toward = UP)Keepdown = true; else if(s.toward != DOWN&s.toward != UP)s.toward = UP; break;sS if(s.toward = DOWN)Keepdown = true;= UP&= DOWN)s.toward = DOWN;aA if(s.toward = LEFT)Keepdo

16、wn = true;= RIGHT&= LEFT)s.toward = LEFT;dD if(s.toward = RIGHT)Keepdown = true;= LEFT&= RIGHT)s.toward = RIGHT; case 27: closegraph(); exit(0);pP manager.m_pause = !manager.m_pause; /设置暂停或开始 manager.DisplayPause(); /显示暂停或开始rR ReInit(); if(true = manager.m_pause) /如果暂停,直接进行下次循环 continue; switch(a.m_games.head-m_x/10s.head-m_y/10.ReturnFull() /检测蛇头遇到的情况 case 2: /遇到食物,蛇身加长 a.ChangeColor(s.head-m_x/10,s.head-m_y/10,BLUE); s.SnakeAdd(); /蛇增长 a.DelFood(); /删除食物 if(a.CreatFood() = false) /创建新食物,并检查是否通关 game.WinGame(); /游戏通关(当地图没地方创建食物时) manager.ScoreA

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

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