当前位置:文档之家› 程序设计实习

程序设计实习


实现的原理
• 填入棋子
– 利用随机数表示棋子的颜色和填入的位置 – 除游戏开始的第一轮外,每次填入棋子都必
须填入到空的棋格中 – 在表示棋盘的数表中进行比照,确定生成的
随机数是适当的
实现的原理
• 选取
– 对游戏者的操作进行相应,对当前的棋子或 棋格进行某种视觉效果上的改变,反映操作 的效果
– 判断选取的棋子和将要移动到的位置
判断有无路经 – 在“液体渗流法”判断的基础上选择一条路

“液体渗流法”说明
• 从出发点开始,如液体渗流般将所有可 能构成路径的点加入队列
• 若入队列的点中包含结束点,则可判断 两点间存在路径,反之则不存在
• 在加入到队列的点中,由结束点出发, 找到一条路径到出发点
* 点入队列时需进行标记 * 若不显示移动过程,只需判断有无路径
– 实现整个棋盘及在棋盘上的任意位置的显示
关键技术验证
• 棋子颜色的决定和填入位置的选择(随 机数的生成和使用)
– 如何生成随机数? – 棋子颜色、填入位置的生成如何影响游戏的
难度? – 如何生成符合要求(分布和范围)的随机数?
关键技术验证
• 棋子移动时路径的判断与选择
– 经典的路径算法 – 对于 five_or_more,提出“液体渗流法”,
游戏模式问题
• 何谓游戏?
– 天线宝宝 – 汉诺塔 – 猫和老鼠
• 怎样的对象在怎样的情景下认为什么样 的一个事物能带来乐趣
游戏模式
• 游戏模式设计是游戏开发的至关重要的 开始步骤
• 游戏模式确定之后,游戏的开发才成为 了一个技术层面的问题
游戏模式举例
• 角色扮演 • 即时战略 • 模拟类 • 射击类 • 网络游戏 • 程序员的游戏
程序骨架部分:生成棋 盘、棋子;处理游戏 者的操作指令;将游 戏的过程交由图形交 互部分显示出来
程序的关键技术点
• 图形交互部分和程序骨架部分间的交互 接口
• 特定图形库的显示方法 • 棋子颜色的决定和填入位置的选择(随
机数的生成和使用) • 棋子移动时路径的判断与选择 * 移动设备上的开发与部署 * 网络对战游戏的扩展
绘制色块
获取操作指令
生成随机数
移动
five_or_ more处理
路径判断和确定
四方向上的处理
模块说明
• 绘制色块
– 棋盘、棋子均可以用一个色块来显示 – 不同图形库,具体方法有所不同 – 考虑提供绘制单个色块和同时绘制整个棋盘
两种接口 – 交互问题
程序示例
• //game_test_002/f_test_2.cpp,just to test fill a single square • //2006.04.09 • #include <stdio.h> • #include <stdlib.h> • #include <windows.h>
关键技术验证
• 移动设备上的开发与部署
– 移动设备的硬件限制 – 特定的使用方式 – J2ME平台的探讨
关键技术验证
• 网络对战游戏的扩展
– 游戏对抗性的产生(谁能玩更长的时间) – 为同一个游戏的多个游戏者显示游戏的画面 – 判断游戏者的胜负
程序的功能模块划分
主控模块
图形交互部分
程序骨架部分
选取的对象如何处理?
实现的原理
• 路径查找
– 选取的棋子,通常就是将要被移动的 – 选取的棋格,通常就是棋子将要移动到的位
置 – 选取的棋子能不能移动到所选取的位置上?
• 经典的算法 • “液体流渗法”
液体流渗法
实现的原理
• five_or_more消除
– 按所有可能出现的位置去查找five_or_more 并消除
游戏规则的时序描述
游戏开始 填入棋子
有空格 Y
N
游戏结束
N Five_or_more
Y 消除
移动棋子
N Five_or_more
Y 消除
实现的原理
• 使用二维数表表示棋盘
• 棋盘上的棋子,则用数表中的内容来表 示
实现的原理
• 显示
– 每次对整个棋盘重新绘制 – 每次只重绘发生变化的部分
在何时重绘?
• int main(void)
•{

HANDLE hout;

CONSOLE_SCREEN_BUFFER_INFO binfo;
five_or_more的游戏模式问题
• 游戏规则:
– n*n的一个棋盘,将在其上填入不同颜色的棋子 – 每次填入三个棋子(游戏开始的第一回合填入伍个),
游戏者可在棋子填入后移动一个棋子 – 移动棋子时,棋子只能以未填入棋子的棋格作为路
径。若同样颜色的五个或以上棋子连成一线,则将 其消去,游戏者再次获得移动棋子的机会 – 游戏在棋盘无空间容纳新棋子填入时中止,将游戏 进行较长时间者为优胜
– 将“five_or_more”消去,空出其原先所位于 的棋格
游戏规则详述
• 填入新的棋子
– 每次游戏者移动棋子后,将向棋盘中的空白 位置随机填入3个新棋子
游戏规则详述
• 计分
– 根据游戏者使游戏持续的时间,及过程中消 去的“精彩”程度,为游戏者计分
游戏规则详述
• 游戏终止
– 棋盘中无空格填入新的一批棋子,游戏终止 – 或游戏者请求终止
关键技术验证
• 图形交互部分和程序骨架部分间的交互 接口
– 采用二维数组表示棋盘是一个自然的选择 – 不同颜色的棋子及其填入棋盘,在程序骨架
部分反映为一系列随机数填入数组,图形交 互部分则将数组中的变化形象的表示出来
关键技术验证
• 特定图形库的显示方法
– 示例程序中使用的是定义在windows.h中的 库函数
我们所关注的five_or_more最可能出现的位 置在哪里?
在所有可能的位置查找
最可能出现的位置
• 刚进行移动的棋子落 脚的位置
• 的说明
图形交互部分 程序骨架部分
图形交互部分:显示模 式设计所提到的棋盘、 棋子、移动;接收来 自游戏者的操作指令
游戏规则详述 Y
• 坐标系
X
游戏规则详述
• 游戏开始
– 空的棋盘上将被随机填入5个棋子
游戏规则详述
• 棋子的移动
– 在每一轮新的棋子填入棋盘后,游戏者可移 动一个棋子
– 棋子的移动只能通过未填入棋子的棋格进行 – 移动棋子时,先选中一个棋子,然后指定想
要将其移动到的位置
游戏规则详述
• 消去
– 连成一线的五个或五个以上同颜色的棋子称 为一个“five_or_more”
相关主题