1、 计算机计算机实习报告实习报告 姓名: 班级: 学号: 系部: 专业方向: 指导老师 : 电子科技学院 2006 年 9 月 18 一一: 选题需求分析选题需求分析 题目要求:题目要求:设计一个图形工作方式下的 10*10 黑白棋棋盘,模仿两个棋手 对弈的过程,并报告最终输赢结果。 题目分析:题目分析:设计黑白棋为人机对弈,人执白旗,计算机执黑棋,轮流走棋, 人所执白棋落定后,计算机(执黑棋)选择最优摆子点摆子,每方都试图在游戏 结束前让自己棋子的数目多于对方,棋子多者胜。 据选题要求将棋盘设计为 10*10 格,初始状态在棋盘中央交叉排放黑白旗各 两枚,为统计棋子个数,有一个棋子记一分,人执
2、白棋,计算机执黑棋,且白棋 先走。下棋时,棋子的位置必须是以自己的棋子能包围住对手一个或多个棋子, 被包围的对手棋子将变成自己的棋子。 包围的方向可以使上下左右斜线共 8 个方 向,只要能连成一条线即可。当一方摆子,但没有可以包围对手棋子的位置时, 该方必须听步,通过放弃一子让对手走棋,直到该方可以走子为止。当棋盘上有 一方的棋子为 0(也就是被对方吃完)或下满 100 格,游戏结束,旗子少者输。 二:程序设计二:程序设计 1 1:设计思路:设计思路 从程序界面,考虑此为一个二维平面图,所以可以用数组形式表示棋盘上 的位置。则该程序接收到棋手按键操作,既棋手放子,就判定是不是有效位置, 也就是
3、能不能包围住对方棋子,如果能,便对棋子所在的位置往上下,左右,左 上,左下,右上,右下 8 个方向寻找被包围住的所有棋子(必须是连续的,中间 不能有空格) ,将这些被包围住的对手棋子都变成自己的棋子。当白棋落定后, 计算机(执黑棋)选择最优摆子点摆子并吃掉白子即将其变为黑子。如果没有这 样的位置可以落子,则停步,让对方走棋,重复上述步骤,直到游戏结束。然后 对当前棋盘中的黑白棋个数进行统计并输出结果。 如果想提前终止游戏,可以提 前按退出。 2. 2.设计流程图设计流程图 开始开始 初始化棋盘初始化棋盘 判断是否是放判断是否是放 白子白子 8个方向判个方向判 断是否可以断是否可以 放子放子 放
4、子放子 是否可以是否可以 放黑子放黑子 放弃一子放弃一子 翻子翻子 选定落子点选定落子点 放白子放白子 游戏是否结束游戏是否结束 即判断一方棋子是即判断一方棋子是 否全被吃完或妻子否全被吃完或妻子 下满下满100格格 黑棋棋子数黑棋棋子数 多于白棋棋多于白棋棋 子数子数 你输了你输了 黑棋棋子数黑棋棋子数 等于白棋棋等于白棋棋 子数子数 平局平局 黑棋棋子少于黑棋棋子少于 白棋棋子白棋棋子 能否进入前能否进入前 三名三名 上英雄榜上英雄榜 输入你的名字输入你的名字 你赢了你赢了 开始游戏开始游戏 是否选择后是否选择后 退退 统计时间统计时间 否否 否否 放黑子放黑子 是是 否否 是是 统计黑白
5、棋子统计黑白棋子 数数 是是 结束结束 否否 是是 否否否否 是是 是是 否否 否否 是否再来一盘是否再来一盘 是是 是是 按优先级别放按优先级别放 子子 选选 择择 放放 弃弃 一一 子子 否否 是是 3 3. .设计设计流程流程及测试结果及测试结果 (1 1) 定义变量定义变量 定义使用到的常数、全局变量等。如游戏的时间、状态、黑白棋子的 个数等。 (2 2) Form_LoadForm_Load()设置游戏的初始界面()设置游戏的初始界面 首先设置窗口的位置,检测程序是否正在运行以防止多次打开程序。 再设置后退按键不可按, 放弃一子键不可按,且黑白英雄榜不可见。 最后调用 drawnew
6、qp 画棋盘表格。即可得到游戏初始界面如下所示: 在游戏一栏中包含开始游戏、载入游戏、保存游戏、退出及黑白棋英 雄榜几个按钮。在帮助一栏中有游戏规则及关于按钮。 (3 3)drawnewqp()drawnewqp()画棋盘表格画棋盘表格 设置棋盘的可用的区域,剩余区域用于显示时间、坐标、黑白棋计数 显示、提示棋手所执棋子为白色以及工具栏(包括游戏开始、载入、推出、放弃 棋子、后退和游戏规则等) 。然后画 10*10 的表格线,再设置线条宽度等。如上 图所示。 (4 4)窗体的设置)窗体的设置 窗体的设置中包含了游戏窗体以及黑白英雄榜中各个按钮控件的设置 在属性窗口中可设置它们的属性。设计出的窗体如下图所示: (4 4)开始新游戏()开始新游戏() 在窗口工具栏的游戏中按下开始游戏键,游戏开始,此时在棋盘中央 交叉处已排放黑白棋子各两枚,则显示白棋先有 2 子及黑棋现有 2 子且 可以计数,时间开始计时,坐标值随鼠标移动而改变, 放弃一子键可按。该 函数在