C语言程序课程设计:游戏.ppt

上传人:坚持 文档编号:3564969 上传时间:2019-06-06 格式:PPT 页数:41 大小:230KB
下载 相关 举报
C语言程序课程设计:游戏.ppt_第1页
第1页 / 共41页
C语言程序课程设计:游戏.ppt_第2页
第2页 / 共41页
C语言程序课程设计:游戏.ppt_第3页
第3页 / 共41页
C语言程序课程设计:游戏.ppt_第4页
第4页 / 共41页
C语言程序课程设计:游戏.ppt_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、第22章 C语言程序课程设计:游戏,前面学习了很多C语言的基础知识,很多读者已经对具体的应用稍有了解,但如何把一些零散的知识点贯穿起来,形式一个完整的项目,是一种技术上的突破。本章就通过几个好玩的游戏案例,从C语言本身的开发过程入手,教读者把前面的知识点再深入掌握一遍。,22.1 黑白棋,本节案例学习一个小游戏:黑白棋。从游戏开发的功能需要求开始,然后让读者知道究竟设计成一个什么样的结果,最后给出开发的代码。,22.1.1 程序功能要求,程序说明:黑白棋也叫苹果棋或翻转棋,它是一款经典的策略性游戏。它使用88的棋盘,分别由两人执黑子和白子轮流下棋,最后子多方为胜方。游戏中只要用自己的两个棋子夹

2、住对方的棋子,便能使对方的棋子全部变色,变成自己的棋子颜色。到一方或双方都无子可下的时候,统计各方得分,保留棋子最多者就是胜者。程序要求:根据黑白棋的规则,编制黑白棋游戏。输出结果:绘制基础黑白棋面板,并能够进行游戏操作。,22.1.2 输入输出样例,黑白棋游戏就是要求在机器上实现黑白棋游戏的功能,程序的输出图示如图22-1所示。,22.1.3 程序分析,参阅黑白棋游戏的规则,可以知道该游戏的核心是:当其中一方的棋子夹住另一方的棋子后,被夹住的棋子要变色,如图22-2所示,变色后如图22-3。被夹住的棋子可以是在水平、垂直、斜线三个方向中的任意一个。为了便于理解本节的程序,下面介绍一些程序中用

3、到的主要功能函数。程序的整体设计思路如图22-4。,22.1.4 程序初始化,程序初始化部分就是运行程序,开始进行黑白棋游戏。同时初始化棋盘标志数组board_flag,此数组为8行8列,记录棋盘每个方格的状态。其值含义如表22-1所示。,22.1.5 初始化图形设备,初始化图形设备就是在屏幕上绘制程序运行的图形界面,图形界面是程序可视化的基础,为此需要调用系统函数initgraph(int far *gdriver, int far *gmode, char far *path)函数初始化图形设备。函数的主要参数如下。*gdriver:图形驱动序号变量指针;*gmode:图形驱动器模式序号变

4、量指针;*pdriver:图形驱动程序所在目录路径;,22.1.6 绘制棋盘,棋盘是进行黑白棋游戏的基础,所有棋子都要在此平台上进行相应的操作,因此绘制88的棋盘要先于其他部分,该部分调用绘图函数,根据坐标绘制网格并进行填充。绘图结果如图22.1中所示,以下是绘制棋盘功能函数的具体实现代码。,22.1.7 交替绘制黑白棋,当黑棋在棋盘中确定落子以后,那么在棋子出现的初始位置应该马上显示白子;同理,当白棋在棋盘中确定落子以后,在棋子出现的初始位置应该马上出现黑子。程序中,棋子出现的初始位置的坐标设为(-1,0)。此时需要注意,棋子在初始位置时,只能往右移动,其他方向都不可移动。显示初始位置棋子和

5、其颜色的函数为show_init(int pat);以下是可以移动的棋子出现在初始位置,交替出现黑白子的功能函数的具体实现代码。参数pat表明了棋子显示的颜色,当pat为0时,棋子为黑色;当pat为1时,棋子为白色。,22.1.8 游戏(同时判断是否有一方胜利),游戏时移动棋子,需注意如下三点:第一,只能在棋盘范围之内;第二,移动到下一棋格后,回复当前棋格被占之前的状态;第三,按Enter键,准备放置棋子时,需要判断当前位置是否符合放置棋子的条件。此部分流程如图22-5所示。,22.1.9 小结,在本节中,按照程序的要求和黑白棋的游戏规则,编制完成了黑白棋游戏。可以看出目前游戏执行后,可以进行

6、双人游戏,已经初步达到了程序设计的目的和要求。但是程序缺少和电脑本身进行游戏的功能,并且游戏界面比较粗糙,需要进行更进一步的细化,有兴趣的读者可以参考图形图像处理章节进行进一步的改进。从本节中,主要是学习简单动绘制的实现、游戏过程的处理等方面编程的思路和方法。,22.2 五子棋,五子棋是很多手机上都带的游戏,是很多人休闲解压的一种方式,本节除介绍五子棋的玩法外,还详细介绍了其开发过程。,22.2.1 程序功能要求,程序说明:五子棋是一款经典的益智类游戏,通常是黑棋先行;五子棋专用盘为1515方格 ,五个子的连接方向为横、竖、斜,当任一方的五个子在各个方向上连成一线,则该方获胜。程序要求:按照程

7、序说明编写五子棋程序,要求可以进行双人之间的游戏。程序输出:输出棋盘、棋子、并能够进行响应的操作。,22.2.2 输入输出样例,根据程序要求,图22-5所示为程序运行结果。操作键盘,根据键盘左、右、上、下键来移动棋子。,22.2.3 程序分析,可以看出,这个程序依然是算法与图形图像处理的结合。不但要求对程序设计中处理过程算法的掌握,而且更重要的是掌握图形图像处理方面的只是。要成功的设计一款游戏,必须对这两个方面的知识有很深入的了解。程序的整体设计思路如图22-6所示。,22.2.4 主函数程序设计,黑白棋游戏中主要针对两种类型棋子的操作,平台是图形式,因此要首先绘制基础平台,然后在此基础上进行

8、相关的操作。主函数通过调用其他模块来实现各部分功能,以下是程序的具体实现代码。,22.2.5 系统初始化,根据棋盘的格式和要求,通过下列函数来绘制棋盘,绘制基本的图形界面,功能函数的具体实现如下。,22.2.6 移动棋子模块,移动棋子需要注意棋子的一些状态,本节根据开发过程来描述棋子的移动过程。1棋子的初始化2棋子移动及状态3被选择棋子的移动4移动当前棋子,22.2.7 程序胜负判定,程序在运行中要不断判定胜负,以决定程序的运行或结束。以下是判断是否有相同颜色棋子五子连成一线,如果是,返回1,否则返回0的具体实现代码。22.2.8 小结由于程序的设计和上一小节的基本相同,只是在算法结构和控制方

9、面有所差异。目前五子棋游戏的玩家众多,此程序的操作采用键盘不大方便,如果可以结合鼠标操作,则会更加便捷一些。另外,界面部分的编写是一个程序的外衣,读者如果感兴趣,可以从这两个方面入手,结合以前学习的知识,进行程序的完善。,22.3 扫雷游戏,扫雷游戏最早出现在Window操作系统上,随着Windows的流行,这个小游戏也越来越受全球人民的欢迎,也有很多不同语言的游戏开发版本,本节介绍如何用C开发扫雷游戏。,22.3.1 程序功能要求,程序说明:扫雷游戏是Windows自带的一款非常经典的游戏,相信很多读者并不陌生。在本小节中,要参考Windows中的扫雷游戏,采用TC来开发自己的扫雷程序。程序

10、要求:(1)在界面上绘制1010的棋盘,每次开始游戏后,都在随即位置,产生不大于15个的雷;(2)按A、a键,进行扫雷操作;(3)按Q、q键,表示无法判断此处是否有雷,在其上标志“?”;(4)按W、w键,在当前位置标记“”,表示确认此处有雷;(5)按D、d键,如果当前位置已经被挖开,且周围标记“”(有雷)符合其数字,则挖开周围未挖的方格;(6)每次找到一个地雷,棋盘上方显示的雷数减1;输出结果:输出游戏界面,并能够进行扫雷游戏;,22.3.2 输入输出样例,按照程序要求,编写的程序在运行后的结果如图22-8所示。,22.3.3 程序分析,从程序的要求可以看出,这是一个将图形图像处理方法和技术与

11、键盘操作、数据处理算法相结合的综合程序。如果已经掌握了上面所说的内容,那么不但能够完成扫雷游戏,而且还能编写出更加华丽的外观。根据游戏规则,程序的整体设计思路如图22-9所示。,22.3.4 程序设计,挖雷游戏是算法与图形图像处理的结合,在每一个位置不但需要判断当前状态还要考虑其周围的资源,同时处理要显示的图形和状态。在此章程序中,必须注意算法和程序的完整性。1主函数功能模块2参数初始化,22.3.5 初始化图形设备,本节介绍图盘的一个开发过程,包括棋盘的绘制和方格的绘制。1棋盘绘制模块2小方格绘制模块3绘制图标,22.3.6 事件处理模块,当用户操作雷块时,有一些操作发生,本节介绍这些事件的

12、处理。1随机雷发生模块2按键处理模块3方格状态处理模块,22.3.7 游戏处理部分,当用户挖雷后,需要判断是否是雷区。本节介绍这些判断的操作。1挖雷处理模块2状态处理模块3程序判定模块,22.3.8 小结,通过上面的程序实现了TC下的扫雷游戏,可以采用键盘进行操作,达到了程序的功能要求。但是也可以看出,程序的界面比较粗糙,而且采用键盘操作非常的不放便,并且目前的程序只实现了1010的游戏,还不够完善。借助之前学习到的知识,可以进行不断的完善。首先是界面的改良,其次是鼠标操作的加入。相信有兴趣的同学,一定能够实现拥有自己独特风格的扫雷游戏。,22.4 速算24,游戏是所有喜欢的一种放松运行,在茶

13、馆休息时,很多人喜欢玩纸牌,而常见的一种玩法就是速算24。本节介绍这种游戏的玩法和开发过程。,22.4.1 程序功能要求,程序说明:“速算24”游戏的玩法是:随意抽出4张扑克牌,快速的采用加、减、乘、除以及括号将它们连接起来,连接后的公式计算结果应为24。速算24可以非常好的锻炼口算的速度和水平,因此得到了大范围的推广。在这小节中,将用TC编程实现一个“速算24”的游戏。程序要求:每次随即产生不同的数字,要求快速的输入正确的计算公式;程序输出:输出一个界面,显示不同的数字扑克,并能够输入计算公式,进行相应的计算。,22.4.2 输入输出样例,程序运行结果如图22-10所示;如果输入表达式计算正

14、确,输出如图22-11所示;如果输入表达式计算错误,输出如图22-12所示。,22.4.3 程序分析,按照程序的要求,可以看出,程序是图形图像处理方法和公式的分解与计算以及按键操作融合为了一体。程序的整体设计思路如图22-13所示。,22.4.4 程序设计,扑克牌的数字和颜色选择主要通过随机算法来生成,而公式的计算则是参考公式提取算法来进行。因此这个小节的程序相对简单。根据流程图,编写各个模块函数,以下是速算24游戏的具体实现代码。,22.4.5 扑克牌处理部分,玩过联众的人都知道,发牌都是自动发牌,就是通过程序来控制的。1发牌模块函数2牌色与花色的随机选择模块3绘制扑克部分功能,22.4.6

15、 程序运算部分,以下是判断4张扑克牌经过运算后是否可能等于24功能函数的具体实现代码。,22.4.7 小结,因为算式的计算在前面就已经学习过,所以程序的难点在于判断4张扑克牌经过输入的运算公式计算后,运算的结果是否可能等于24,即is_right()函数的编写。这里将前面学过的知识再次进行了复习,温故知新,是进一步的学好C语言良好途径。,22.5 病毒检测与消除,前面都是小游戏的介绍,玩游戏的机器非常容易中毒,很多病毒也跟随着游戏下载而自动下载下来。本节通过一段简单的代码,学习如何用C语言实现病毒的检测。,22.5.1 程序功能要求,程序说明:病毒的检测和消除是一门非常专业的知识,作为学习,这

16、里提供了1741病毒的检测和消除过程。之所以被称为1741病毒,是因为该病毒长1741字节。当运行病毒文件时,它便驻留在内存高端,占用2K字节,并且修改INT 21H中断向量,使之指向病毒体。所以,只要操作系统调入.EXE和.COM文件,在执行前都将通过病毒体而且被加以改造:在文件尾挂上一段病毒程序,并修改.EXE文件的文件长度、初始化IP值、代码段偏移量三项;对于.COM文件,则修改文件的头三个字节。程序要求:编写1741病毒的检测和消除程序;程序输出:检测出病毒后,进行病毒的清除操作;,22.5.2 程序分析,常见的病毒检测软件程序,除了对内存中驻留的病毒进行检测外,还可以扫描整个系统进行

17、病毒的删除。文中的病毒程序是相对比较简单的程序,为了不使程序复杂化,简化了病毒得检测程序。只通过目录扫描,遍历目录下所有的文件来进行病毒的查找。程序的整体设计思路入图22-1-1所示。,22.5.3 程序设计,对于病毒的检测,主要是通过对所有在目录中的文件进行逐个扫描,判定扫描的文件是否是病毒。以下是扫描1741病毒的具体实现代码,主要通过该病毒的特征进行判断。1目录搜索模块2病毒处理模块3病毒处理模块,22.5.4 小结,病毒的检测和消除是非常复杂的,本节只是一个非常简单的实例。特别在网络得以迅速普及的今天,病毒的扩散非常迅速,为人们造成了很多不必要的损失。抵御病毒入侵已经成为了一个很重要的程序应用,但是这方面的人才却极为紧缺。学好这一个小节,希望对读者能有一些启发。通过全书这5个例子的学习,希望读者能掌握C语言开发实际项目的原理和过程。,

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

当前位置:首页 > 重点行业资料库 > 医药卫生

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。