C语言编程小游戏毕业论文李俊佶_第1页
C语言编程小游戏毕业论文李俊佶_第2页
C语言编程小游戏毕业论文李俊佶_第3页
C语言编程小游戏毕业论文李俊佶_第4页
C语言编程小游戏毕业论文李俊佶_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

密 级 公 开 本科生毕业(学位)论文基于 C语言的小游戏设计李俊佶(2009061322)指导教师姓名: 叶晶晶职 称:单 位: 物理与电子科学系专 业 名 称: 电子信息工程论文提交日期: 2012 年 月 日 论文答辩日期: 2012 年 月 日学位授予单位: 黔南民族师范学院答辩委员会主席:论 文 评 阅 人:20 年 月 日基于 C 语言的小游戏设计-十字消方块李俊佶(2009061322)(黔南民族师范学院物理与电子科学系,贵州,都匀,558000)摘要:本文研究的主要内容是在具备 C 语言知识的前提下,如何 应 用 C 语言编写一个完整的小游戏,以达到让自身所学知识得到充分运用和发挥的目的。在此,通过使用 C 语言编写了一个名为“十字消方块” 的新颖小游戏,完整的展现了一个小游戏项目开发的全过程。 编程过程中每一个 编程技巧的运用都是对编程者 逻辑思维能力和综合应用能力的考验。关键词:C 语言;小游戏;十字消方块;项目开发;WIN-TCBased on the C language little game design-Cross away squareLi jun-ji(2009061322)(Physicaland electronic Science, Qiannan Normal College for Nationalities, Duyun 558000, Guizhou)Anstract:This paper studies the main content is the C language knowledge with the premise of how to use C language to write a complete litter game,in order to achieve their owm knowledge for the purpose of fully use .Here ,througn the use of C language to write a called”cross away square”nocel litter game,complete showed a small game project development process.In the process of programming every programming use the skills of programming is logical thinking anility and comprehensive application anility test.Keywords:C; game; cross away square; development; WIN-TC1 引 言游戏的设计与开发可以利用多种方法,java、C/C+、Flash、 VB 等语言都可开发出不同类型的游戏软件。这些方法都有其优点,通常根据具体情况进行选择。在众多语言和方法中,C 语言兼具一般高级语言和低级语言优点,编写游戏程序具有非常鲜明特点。使用 C 语言编写游戏程序,可以接触到更为底层的编程知识,对于学习计算机语言有很大好处。C 语言是 Combined Language(组合语言)的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。1978 年后,C 语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力。本着研究学习的心态,以 C 语言编写一个小游戏程序,深入到图形编程和文件应用的实际操作中,达到务实基础,挑战自我的目的。下面,我将一步步的带领大家看到“十字消方块”游戏开发的全过程。2.前期准备及需求分析2.1 游戏介绍“十字消方块”的灵感来自我闲暇时在 3366 小游戏网站内见到的一款竞技类小游戏。顾名思义,这款小游戏是以方向键控制游戏标准放到合适位置,在十字线区域能连接到两个或者两个以上纹理相同的方块就能消除得分。玩家在时间的限制下需要迅速找到可以消除的方块并准确消除,若错误将扣除时间。看似简单,却有一定的难度。常玩这一类小游戏可以锻炼人的观察力、反应力和手眼协调能力,开发大脑潜能。十字消方块趣味性强,老少皆宜,且同类游戏在各小游戏网站都很有人气,相信它同样能得到大家的喜爱。2.2 编程语言C 语言C 语言兼有高级语言与低级语言的优点,具有强大的编程运算能力。首先,C 是一种结构化语言,程序层次清晰,便于使用、维护以及调试;第二,C 语言运算符和数据结构丰富,能用来实现各种复杂数据结构的运算;第三,程序书写形式自由、灵活方便,允许程序编写者有较大的发挥空间;第四,引入了指针概念,使程序效率更高;第五,C 语言程序执行效率高,一般只比汇编程序生成的目标代码效率低 10 20%;另外,C 语言还具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。总而言之,用 C 语言来编写一个小游戏绰绰有余,绝对可以让编程者想要的任何游戏功能实现。2.3 编译环境Win-TcWIN-TC 是一个 TC2 WINDOWS 平台开发工具,由 “TC256 专题站“与 “唯 C 世界“联合发布。该软件使用 TC2 为内核,提供 WINDOWS 平台的开发界面,因此也就支持 WINDOWS 平台下的功能,例如剪切、复制、粘贴和查找替换等。而且在功能上也有它的独特特色例如语法加亮、C 内嵌汇编、自定义扩展库的支持等。2.3 .1 使用 Win-Tc 的理由由于“十字消方块” 是用纯 C 语言编写, vc+有它自己的图形编译库,在游戏中用到的和这两个头文件在 vc+中并不存在,故此该游戏的程序不能在 vc+中编译完成。然而 Turbo C 2.0 是基于 MS-DOS 的,存在诸如不支持鼠标操作、字体大小不能调整、文本复制步骤繁琐、必须另外启动 UCDOS 等中文环境才能支持中文输入输出等缺点,而这些缺陷于开发活动有着不少的影响。故此,相对来说 WIN-TC 无疑是最适合作为该游戏开发的编译软件。2.3 .2Win-Tc 的使用1在网络上下载 WIN-TC 编译软件,安装在电脑中后打开。可看到如下运行画面:图 1:WINTC 运行画面2.点击文件,找到后缀为.c 的游戏程序文件,点击选取后打开。3.在软件运行画面的右上角,找到如下图所示的两个按钮,依次点击,确定,可运行游戏程序。观察结果。图 2:软件中的编译与执行按钮4.注意:当程序使用了头文件中库函数时,就需要 bgi 文件才能正常显示,wintc 中有提供,但是如果在图形界面初始化时没有注明其路径时,必须将 bgi 文件与工程文件放在同一目录下。2.4 游戏需求分析1.项目描述要求用 C 语言开发一个游戏 “十字消方块” 。游戏规则为: 按方向键移动光标至一个无方块位置,以该光标位置看,在一个十字形区域中,若离光标位置最近的四个方块至少有其二相等,则可按 SPACE 键进行连线消除得分,一次性消除的方块越多得分越多。若按键后不能消除为错误操作,将扣除游戏时间。时间结束,游戏结束。2.界面(1)start 界面该界面用画图的方式对游戏方法及其规则进行了说明,按任意键后开始游戏。(2)游戏界面程序用一个初始化函数来初始化游戏界面,棋盘为 15 行,15 列,共有 112 块方块。上方为进度条,下方为游戏提示信息。(3)游戏结束界面用户成功完成游戏或时间结束后,在界面正中显示“your sroce:xxxx” 。 (xxxx 为游戏得分)另外,用户在游戏过程中按 ESC 显示“gameover!”退出游戏。3.功能(1)游戏操作按方向键 移动光标至合适位置,按 SPACE 键进行连线消除得分。(2)游戏结束共有 3 种结束方式:时间结束:当时间进度条走完时,游戏结束,并显示得分。方块结束:在所有方块均不能消除时,游戏结束,并显示得分。强行结束:按 ESC 结束程序,并显示“gameover!”后退出。(3)进度条显示当前剩余时间自动获取系统时间,更新进度条时,设置为某个百分比,用背景色进行填充,以达到减少时间的目的。4环境(1)硬件环境:处理器,内存,磁盘,显示器(2)软件环境:必须使用 wintc 或 turbo c 软件编译游戏3 编程实现3.1 重要的文件、函数和变量说明3.1.1文件graphics.h 文件是 tc 中的图形库,游戏界面中的图形绘制都是利用这个头文件中所包含的函数来完成的。3.1.2 函数介绍1.bioskey 函数该函数是 bios.h 头文件中接口函数,函数的功能是在游戏过程中提取键值。2.initgraph 函数和 closegraph 函数initgraph 函数的功能是初始化图形系统。声明这个函数是使用 graphics.h 文件中画图函数的必要条件。而 closegraph 函 数 的 功 能 是 关 闭 图 形 系 统3. outtextxy 函 数该 函 数 的 功 能 是 在 屏 幕 上 指 定 的 位 置 输 出 一 串 字 符 。 游 戏 中 可 见 的 提 示 信 息 均 由 这 个 函数 来 实 现 。4.setcolor 函数该函数的功能是设置当前画笔的颜色,游戏界面绘制的图形输出的文字字符的颜色都是用这个函数来控制。它的参数 color 为不同值时表示不同的颜色,如下表所示:表 1:color 参数说明参数 说明 参数 说明0 BLACK 黑 1 BLUE 兰2 GREEN 绿 3 CYAN 青4 RED 红 5 MAGENTA 洋红6 BROWN 棕 7 LIGHTGRAY 淡灰8 DARKGRAY 深灰 9 LIGHTBLUE 淡兰10 LIGHTGREEN 淡绿 11 LIGHTCYAN 淡青12 LIGHTRED 淡红 13 LIGHTMAGENTA 淡洋红14 YELLOW 黄 15 WHITE 白5. srand 函数与 random 函数random 函数是随 机 数 发 生 器 , 功能是产 生 一 个 规 定 数 以 内 的 随 机 数 。 它 能 帮 助 我 在 游 戏中 绘 制 出 随 机 的 游 戏 方 块 , 实 现 游 戏 关 卡 的 多 样 化 。 而 srand 函 数 是 随 机 数 发 生 器 的 初 始化 函 数6. gettime 该函数的功能是取得系统时间,由此设置出了游戏的时间系统。 7.getch 函 数该 函 数 的 功 能 是 从 控 制 台 无 回 显 示 地 取 一 个 字 符 。 游 戏 程 序 需 要 在 结 尾 加 上 这 个 函 数 ,才 能 观 看 到 运 行 结 果 。3.1.3 重要变量说明1.枚 举 类 型 变 量 KEYCODES它 枚 举 了 游 戏 所 用 到 按 键 的 物 理 地 址 , 是 游 戏 者 与 游 戏 之 间 联 系 的 关 键 。enum KEYCODESK_ESC =0x011b,K_UP =0x4800,K_LEFT =0x4b00,K_DOWN =0x5000,K_RIGHT =0x4d00,K_SPACE =0x3920,;2. 三 维 数 组 Board在绘制游戏界面的过程中,需要对界面上每一个坐标是否有游戏方块的情况做标记,于是就需要定义一个三维数组 Board 并在初始化游戏时赋值来达到这个目的。在 Boardxy0中 存 放 的 值 为 0, 则 表 示 坐 标 (x,y)上 没 有 方 块 。 为 1, 则 表 示 有 方 块 。在 Boardxy1中 则 存 放 了 方 块 的 键 , 表 示 了 该 方 块 的 类 型 。 该 值 在 游 戏 用 来 判 断 游 戏操 作 是 否 得 分 。3.结 构 体 变 量 CELL变 量 CELL 存 储 的 是 方 块 的 逻 辑 坐 标 , 游 戏 初 始 化 和 进 行 中 都 常 调 用 他 。3.2 主要功能实现3.2.1 主函数程 序 运 行 时 , 首 先 从 main 函 数 处 开 始 游 戏 流 程 , 流 程 中 调 用 了 几 个 自 定 义 函 数 。 按 照先 后 顺 序 分 别 为 : 游 戏 提 示 画 面 函 数 start, 游 戏 界 面 初 始 化 函 数 InitGame, 表 示 剩 余 时间 的 进 度 条 初 始 化 函 数 InitProgressBar, 游 戏 进 行 函 数 PlayGame 和 结 束 游 戏 QuitGame函 数 。 建 立 起 一 个 完 整 清 晰 的 流 程 模 式 。主 流 程 图 下 图 所 示 :Start()开始InitGame(“);InitProgressBar();QuitGame();PlayGame();结束图 3:main 函数流程图3.2.2 游戏开始界面初始化在 执 行 主 函 数 main 时 , 首 先 调 用 的 是 start 函 数 。 该 函 数 在 游 戏 开 始 前 执 行 , 对 游 戏规 则 进 行 了 画 图 说 明 (相 当 于 游 戏 帮 助 )。 在 start 中 , 首 先 进 行 了 图 形 系 统 的 初 始 化 , 然后 使 用 了 setfillstyle 函 数 为 图 形 输 出 设 置 当 前 文 本 的 属 性 , 再 使 用 outtextxy 函 数 和rectangle 等 函 数 分 别 在 指 定 位 置 画 出 特 定 的 字 符 和 图 案 。3.2.3 游戏界面初始化start 函 数 执 行 完 毕 后 , 将 对 游 戏 界 面 进 行 初 始 化 , 包 括 时 间 、 游 戏 方 块 的 初 始 化 , 而 进度 条 初 始 化 较 为 复 杂 , 另 定 义 一 个 InitProgressBar 函 数 为 其 初 始 化 。 在 InitGame 函 数 中 ,先 用 memset 函 数 对 三 位 数 组 Board 所 代 表 的 空 间 全 部 清 零 , 防 止 原 内 存 空 间 内 的 数 据 对 其造 成 影 响 。 而 后 又 使

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论