当前位置:
文档之家› C语言程序课程设计:游戏.ppt
C语言程序课程设计:游戏.ppt
第22章 C语言程序课程设计:游戏
• 前面学习了很多C语言的基础知识,很多读者已经 对具体的应用稍有了解,但如何把一些零散的知 识点贯穿起来,形式一个完整的项目,是一种技 术上的突破。本章就通过几个好玩的游戏案例, 从C语言本身的开发过程入手,教读者把前面的知 识点再深入掌握一遍。
22.1 黑白棋
22.1.6 绘制棋盘
• 棋盘是进行黑白棋游戏的基础,所有棋子都要在此平台上 进行相应的操作,因此绘制8×8的棋盘要先于其他部分, 该部分调用绘图函数,根据坐标绘制网格并进行填充。绘 图结果如图22.1中所示,以下是绘制棋盘功能函数的具体 实现代码。
22.1.7 交替绘制黑白棋
• 当黑棋在棋盘中确定落子以后,那么在棋子出现 的初始位置应该马上显示白子;同理,当白棋在 棋盘中确定落子以后,在棋子出现的初始位置应 该马上出现黑子。程序中,棋子出现的初始位置 的坐标设为(-1,0)。此时需要注意,棋子在初 始位置时,只能往右移动,其他方向都不可移动。 显示初始位置棋子和其颜色的函数为 show_init(int pat);以下是可以移动的棋子出 现在初始位置,交替出现黑白子的功能函数的具 体实现代码。参数pat表明了棋子显示的颜色,当 pat为0时,棋子为黑色;当pat为1时,棋子为白 色。
22.1.4 程序初始化
• 程序初始化部分就是运行程序,开始进行黑白棋 游戏。同时初始化棋盘标志数组board_flag,此 数组为8行8列,记录棋盘每个方格的状态。其值 含义如表22-1所示。
22.1.5 初始化图形设备
• 初始化图形设备就是在屏幕上绘制程序运行的图 形界面,图形界面是程序可视化的基础,为此需 要调用系统函数initgrapቤተ መጻሕፍቲ ባይዱ(int far *gdriver, int far *gmode, char far *path)函数初始化图 形设备。函数的主要参数如下。 • *gdriver:图形驱动序号变量指针; • *gmode:图形驱动器模式序号变量指针; *pdriver:图形驱动程序所在目录路径;
22.2.2 输入输出样例
• 根据程序要求,图22-5所示为程序运行结果。操 作键盘,根据键盘左、右、上、下键来移动棋子。
22.2.3 程序分析
• 可以看出,这个程序依然是算法与图形图像处理的结合。不但要 求对程序设计中处理过程算法的掌握,而且更重要的是掌握图形 图像处理方面的只是。要成功的设计一款游戏,必须对这两个方 面的知识有很深入的了解。程序的整体设计思路如图22-6所示。
22.2 五子棋
• 五子棋是很多手机上都带的游戏,是很多人休闲 解压的一种方式,本节除介绍五子棋的玩法外, 还详细介绍了其开发过程。
22.2.1 程序功能要求
• 程序说明:五子棋是一款经典的益智类游戏,通 常是黑棋先行;五子棋专用盘为15×15方格 ,五 个子的连接方向为横、竖、斜,当任一方的五个 子在各个方向上连成一线,则该方获胜。 • 程序要求:按照程序说明编写五子棋程序,要求 可以进行双人之间的游戏。 • 程序输出:输出棋盘、棋子、并能够进行响应的 操作。
22.1.2 输入输出样例
• 黑白棋游戏就是要求在机器上实现黑白棋游戏的 功能,程序的输出图示如图22-1所示。
22.1.3 程序分析
• 参阅黑白棋游戏的规则,可以知道该游戏的核心是:当其中一方 的棋子夹住另一方的棋子后,被夹住的棋子要变色,如图22-2所 示,变色后如图22-3。被夹住的棋子可以是在水平、垂直、斜线 三个方向中的任意一个。为了便于理解本节的程序,下面介绍一 些程序中用到的主要功能函数。程序的整体设计思路如图22-4。
22.2.6 移动棋子模块
• 移动棋子需要注意棋子的一些状态,本节根据开 发过程来描述棋子的移动过程。 • 1.棋子的初始化 • 2.棋子移动及状态 • 3.被选择棋子的移动 • 4.移动当前棋子
22.2.7 程序胜负判定
• 程序在运行中要不断判定胜负,以决定程序的运 行或结束。以下是判断是否有相同颜色棋子五子 连成一线,如果是,返回1,否则返回0的具体实 现代码。 –22.2.8 小结 • 由于程序的设计和上一小节的基本相同,只是在 算法结构和控制方面有所差异。目前五子棋游戏 的玩家众多,此程序的操作采用键盘不大方便, 如果可以结合鼠标操作,则会更加便捷一些。另 外,界面部分的编写是一个程序的外衣,读者如 果感兴趣,可以从这两个方面入手,结合以前学 习的知识,进行程序的完善。
• 在本节中,按照程序的要求和黑白棋的游戏规则, 编制完成了黑白棋游戏。可以看出目前游戏执行 后,可以进行双人游戏,已经初步达到了程序设 计的目的和要求。但是程序缺少和电脑本身进行 游戏的功能,并且游戏界面比较粗糙,需要进行 更进一步的细化,有兴趣的读者可以参考图形图 像处理章节进行进一步的改进。从本节中,主要 是学习简单动绘制的实现、游戏过程的处理等方 面编程的思路和方法。
22.2.4 主函数程序设计
• 黑白棋游戏中主要针对两种类型棋子的操作,平台是图形式,因此要首先绘制基础平台,然后在此 基础上进行相关的操作。主函数通过调用其他模块来实现各部分功能,以下是程序的具体实现代码。
22.2.5 系统初始化
• 根据棋盘的格式和要求,通过下列函数来绘制棋 盘,绘制基本的图形界面,功能函数的具体实现 如下。
22.1.8
• • • •
游戏(同时判断是否有一方胜利)
游戏时移动棋子,需注意如下三点: 第一,只能在棋盘范围之内; 第二,移动到下一棋格后,回复当前棋格被占之前的状态; 第三,按Enter键,准备放置棋子时,需要判断当前位置是否符合放置棋 子的条件。此部分流程如图22-5所示。
22.1.9 小结
• 本节案例学习一个小游戏:黑白棋。从游戏开发 的功能需要求开始,然后让读者知道究竟设计成 一个什么样的结果,最后给出开发的代码。
22.1.1 程序功能要求
• 程序说明:黑白棋也叫苹果棋或翻转棋,它是一 款经典的策略性游戏。它使用8×8的棋盘,分别 由两人执黑子和白子轮流下棋,最后子多方为胜 方。游戏中只要用自己的两个棋子夹住对方的棋 子,便能使对方的棋子全部变色,变成自己的棋 子颜色。到一方或双方都无子可下的时候,统计 各方得分,保留棋子最多者就是胜者。 • 程序要求:根据黑白棋的规则,编制黑白棋游戏。 • 输出结果:绘制基础黑白棋面板,并能够进行游 戏操作。