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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

C语言设计拼图游戏.docx

1、C语言设计拼图游戏(郑重声明:本文绝对本人原创,XX)(免费提供给爱好C语言的朋友,希望志同道合的朋友们一起加油!)(运行环境Turbo C,下载的朋友把图形驱动路径改为自己驱动实际路径即可)(对本文有意见或建议者,请联系Q772833493)(本文流程图没画,函数功能没有介绍。但是代码不长,细细研究一下一定会弄明白)基于C语言的拼图游戏设计彭云毅,黄波(成都信息工程学院,四川,成都 610225)摘 要:近年来随着科技的飞速发展,C语言的应用正在不断深入。C语言目前是国际上比较流行的计算机高级编程语言之一,因其简洁、使用方便且具有强大的功能而受到编程人员的普遍青睐。它既适合作为系统描述语言,

2、也可用来编写系统软件,还可以用来编写应用软件和设计游戏等。本文着重分析C语言实现一个简单的拼图游戏,旨在介绍拼图游戏的实现方法。编程工具Turbo C。涉及内容:TC图形库的使用、随机数的产生、光标定位。关键词:C语言;拼图;Turbo C;图形库中图分类号:TP3 文献标识码:APuzzle Game based on the C Language Peng Yun-yi(Chengdu University of Information Technology, Sichuan Chengdu, China, 610225)Abstract:With the rapid developmen

3、t of science and technology in recent years,C language,applications are continuously in depth.C language is now more popular internationally in high-level computer programming language,one of its simplicity,easy to use and with powerful features favored by ordinary programmers.It is suitable as a sy

4、stem description language,can also be used to write system software,application software can also be used to write system software,application software can also be used to write and design games.This title focuses on the analysis of C language to achieve a simple jigsaw puzzle, puzzle game designed

5、to introduce realization method. Programming tool Turbo C. Content: use of the TC graphics library, random number generation, and positioning the cursor.Keywords:C language;Puzzle;Turbo C;graphics第一章 绪论1.1 设计的功能功能包括方向键控制方块移动、空格键重新开始、Esc键退出。1.2 游戏编程思想1.2.1 确定软件的功能玩家可以通过按键上、下、左、右实现数字换位,并且有记录移动次数功能,直到把

6、数字矩阵排列成为1 2 34 5 67 8 即为胜利。 “space”重新开局或“Esc”退出游戏。1.2.2 定义软件的核心数据结构全局变量puzz9为九宫格的10个数字;方格的移动就是一次次的刷新屏幕,puzzn为0的方格,既不打印充填矩形,也不打印数字(九宫格总有一个个空缺,我用0来标记);change(a,b)作用是交换puzz9数组元素的顺序,通过数组内元素的顺序变化来控制九宫格的打印情况。1.2.3 对整个软件进行功能模块化分 1.初始化:首先显示欢迎屏幕,然后按任意键(Esc除外)进入游戏初始化界面,此时puzz91,2,3,4,5,6,7,8,0,屏幕宫格顺序排列。 2.进入游

7、戏循环:在初始化界面按任意键进入游戏循环,此时宫格被随机打乱;这是可以按方向键控制方格移动;无效按键做忽略处理(如果空格已在最底端,则按up键时无效)。游戏是死循环,用while(1)实现; 3.判断是否胜利:游戏在循环中,每次执行一次按键操作,都会扫描一次当前数组是否与初始化时相符合,若相符,则游戏成功,在中间宫格上打印出一个红色五角星,上面打印文字“SUCCESSFUL!”。然后按任意键再次进入初始化界面,此时可以继续玩或者退出游戏。1.2.4 整个拼图游戏的功能介绍1.初始化屏幕。2.方向键控制宫格移动方向。3.计数。4.空格键复位游戏。5.Esc键退出游戏。第二章 游戏的总体设计2.1

8、 功能模块设计本程序包括4个模块,分别是初始化模块、按键模块、交换模块和图形打印模块。2.1.1 系统模块图2.1.2 任务执行流程图(N/A)2.2 数据结构设计2.2.1 设置全局变量 定义puzz9一维数组,记录九宫格的数据变化。 i 初始化界面的提示语,j 获取空格位置,k 移动次数。 space 空缺位置2.3 函数功能描述(N/A)第三章 拼图游戏的程序实现3.1 源码分析3.1.1程序预处理/*加载头文件*/#include#include#include#include#include/*定义全局变量*/int puzz9; / 九格游戏数组int i=0,j,k; / i 初

9、始化界面的提示语,j 获取空格位置,k 移动次数int space; / 空缺位置/*自定义函数原型*/void interface() / 界面,包括打印充填矩形和数字void change(int a,int b) / 交换void press() / 按键void start() / 初始化和判断是否胜利屏幕默认分辨率 640*4803.1.2初始化模块void start() / 初始化和判断是否胜利 int a,b,c; int star22=300,120,320,160,360,160,320,200,340,240,300,200,260,240,280,200,240,160

10、,280,160,300,120; k=0; for(a=0;a8;a+) puzza=a+1; puzz8=0; interface(); for(c=0;c100;c+) / 随机打乱顺序 a=rand()%9; b=(a+2)%8; / 关于有无解问题,搞不清楚,引用的 change(a,b); while(1) interface(); for(a=0;a8;a+) if(puzza!=a+1) break; if(a=8) drawpoly(11,star); / 五角星 setcolor(1); / 文本“SUCCESSFUL”颜色 setfillstyle(1,4); / 五角星

11、填充色 floodfill(300,150,15); / 五角星内一点 outtextxy(260,180,SUCCESSFUL!); getch(); start(); for(j=0;j=8;j+) if (puzzj=0) break; space=j; press(); 3.1.3画图模块void interface() / 界面,包括打印充填矩形和数字 clearviewport(); / 清楚屏幕图形 setbkcolor(6); / 设置背景色 setfillstyle(2,2); / 矩形块颜色 if(puzz0!=0) bar(160,60,240,140); if(puzz

12、1!=0) bar(260,60,340,140); if(puzz2!=0) bar(360,60,440,140); if(puzz3!=0) bar(160,160,240,240); if(puzz4!=0) bar(260,160,340,240); if(puzz5!=0) bar(360,160,440,240); if(puzz6!=0) bar(160,260,240,340); if(puzz7!=0) bar(260,260,340,340); if(puzz8!=0) bar(360,260,440,340); gotoxy(25,7); if(puzz0!=0) pr

13、intf(%d,puzz0); gotoxy(38,7); if(puzz1!=0) printf(%d,puzz1); gotoxy(50,7); if(puzz2!=0) printf(%d,puzz2); gotoxy(25,13); if(puzz3!=0) printf(%d,puzz3); gotoxy(38,13); if(puzz4!=0) printf(%d,puzz4); gotoxy(50,13); if(puzz5!=0) printf(%d,puzz5); gotoxy(25,19); if(puzz6!=0) printf(%d,puzz6); gotoxy(38,

14、19); if(puzz7!=0) printf(%d,puzz7); gotoxy(50,19); if(puzz8!=0) printf(%d,puzz8); if(i=0) printf(nnnnnttPress any key to dare ); getch(); gotoxy(60,4); / 打印移动次数 printf(%d th,k); i+=1; return; 3.1.5主函数int main() int gdriver=VGA,gmode=VGAHI; initgraph(&gdriver,&gmode,c:tc30BGI); srand(unsigned)time(NU

15、LL); / 播种子 clearviewport(); / 清屏 printf(nnttt/n); printf(n); printf(ttttPUZZLE GAMEn); printf(n); printf(ttt/n); printf(nnnnnntPress any key to start game); printf(nntPress Esc to exitnnt); if(getch()=27) clrscr(); clearviewport(); printf(nnnttt/n); printf(nttttSee you next timen); printf(nttt/n); p

16、rintf(nnnnntttPress any key to exit ); getch(); closegraph(); return 0; start(); return 0;3.2运行结果分析3.2.1进入游戏界面欢迎屏幕:初始化界面:随机打乱顺序:移动过程中计数功能:3.2.2游戏成功第四章 总结本文介绍了一种用C语言编写九宫格拼图小游戏的方法。其中用到了 Turbo C的图形库,画了一些简单几何图形,从而完成了可视化的小游戏界面。作者论文格式仿照XX文库.基于C语言推箱子游戏设计2;设计程序参考XX文库.最经典的C语言拼图小游戏源代码3。本文与参考资料的原理是完全不同的:参考资料的界

17、面用定位光标和打印特殊字符组成了非常简洁的界面;由于作者对C尚不够深入,能力尚不强大,无法理解参考资料具体实现宫格移动的方法,所以作者最后决定采用调用图形库绘图的方法实现游戏界面。作者从参考资料得到一个思路和引用一个算法:思路是通过交换数组元素的位置来控制可视化界面的图形打印;引用这个算法是为了解决随机打乱顺序后没有解的问题。心得体会:C语言已经结课,可是书本上讲的只是一些基础,关于光标定位和图形界面问题未曾涉及。学完之后不免有困惑:C语言还能干什么?作者通过从网络上搜集的大量资料,加上自己的探索,终于做出了拼图游戏,这也证明了C语言可以制作小游戏!遗憾:关于随机交换出现无解情况的的问题,是个

18、数学问题,网上介绍甚少,作者未能理解问题原因,所以直接引用了参考资料的一个算法解决此问题。参考文献1 谭浩强.C程序设计(第三版)2 XX文库.基于C语言推箱子游戏设计3 XX文库.最经典的C语言拼图小游戏源代码源代码:#include#include#include#include#include int puzz9; / 九格游戏数组 int i=0,j,k; / i 初始化界面的提示语,j 获取空格位置,k 移动次数 int space; / 空缺位置 void interface() / 界面,包括打印充填矩形和数字 clearviewport(); / 清楚屏幕图形 setbkcol

19、or(6); / 设置背景色 setfillstyle(2,2); / 矩形块颜色 if(puzz0!=0) bar(160,60,240,140); if(puzz1!=0) bar(260,60,340,140); if(puzz2!=0) bar(360,60,440,140); if(puzz3!=0) bar(160,160,240,240); if(puzz4!=0) bar(260,160,340,240); if(puzz5!=0) bar(360,160,440,240); if(puzz6!=0) bar(160,260,240,340); if(puzz7!=0) bar

20、(260,260,340,340); if(puzz8!=0) bar(360,260,440,340); gotoxy(25,7); if(puzz0!=0) printf(%d,puzz0); gotoxy(38,7); if(puzz1!=0) printf(%d,puzz1); gotoxy(50,7); if(puzz2!=0) printf(%d,puzz2); gotoxy(25,13); if(puzz3!=0) printf(%d,puzz3); gotoxy(38,13); if(puzz4!=0) printf(%d,puzz4); gotoxy(50,13); if(p

21、uzz5!=0) printf(%d,puzz5); gotoxy(25,19); if(puzz6!=0) printf(%d,puzz6); gotoxy(38,19); if(puzz7!=0) printf(%d,puzz7); gotoxy(50,19); if(puzz8!=0) printf(%d,puzz8); if(i=0) printf(nnnnnttPress any key to dare ); getch(); gotoxy(60,4); / 打印移动次数 printf(%d th,k); i+=1; return; void change(int a,int b)

22、/ 交换 int t; t=puzza; puzza=puzzb; puzzb=t; return; void press() / 按键 void start(); char key=0; key=getch(); switch(key) case 80: / 上 if(space=3) change(space,space-3); k+; break; case 72: / 下 if(space=5) change(space,space+3); k+; break; case 77: / 左 if(space%3!=0) change(space,space-1); k+; break;

23、case 75: / 右 if(space%3!=2) change(space,space+1); k+; break; case 32: / 空格键重新开始 i=0; start(); case 27: clrscr(); clearviewport(); printf(nnnttt/n); printf(nttttSee you next timen); printf(nttt/n); printf(nnnnntttPress any key to exit ); getch(); closegraph(); exit(1); return; void start() / 初始化和判断是

24、否胜利 int a,b,c; int star22=300,120,320,160,360,160,320,200,340,240,300,200,260,240,280,200,240,160,280,160,300,120; k=0; i=0; for(a=0;a8;a+) puzza=a+1; puzz8=0; interface(); for(c=0;c100;c+) / 随机打乱顺序 a=rand()%9; b=(a+2)%8; / 关于有无解问题,搞不清楚,引用的 change(a,b); while(1) interface(); for(a=0;a8;a+) if(puzza!

25、=a+1) break; if(a=8) setcolor(4); / 五角星边框 drawpoly(11,star); / 五角星 setfillstyle(1,4); / 五角星填充 floodfill(300,150,4); / 五角星内一点 setcolor(1); / 文本“SUCCESSFUL” outtextxy(260,180,SUCCESSFUL!); getch(); start(); for(j=0;j=8;j+) if (puzzj=0) break; space=j; press(); int main() int gdriver=VGA,gmode=VGAHI; initgraph(&gdriver,&gmode,c:tc30BGI); srand(unsigned)time(NULL); / 播种子 clearviewport(); / 清屏 printf(nnttt/n); printf(n); printf(ttttPUZZLE

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

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