vb黑白棋游戏课程设计报告.docx
- 文档编号:16168921
- 上传时间:2023-07-11
- 格式:DOCX
- 页数:10
- 大小:75.90KB
vb黑白棋游戏课程设计报告.docx
《vb黑白棋游戏课程设计报告.docx》由会员分享,可在线阅读,更多相关《vb黑白棋游戏课程设计报告.docx(10页珍藏版)》请在冰点文库上搜索。
vb黑白棋游戏课程设计报告
计算机实习报告
姓名:
班级:
学号:
系部:
专业方向:
指导老师:
电子科技学院
2006年9月18
一:
选题需求分析
题目要求:
设计一个图形工作方式下的10*10黑白棋棋盘,模仿两个棋手对弈的过程,并报告最终输赢结果。
题目分析:
设计黑白棋为人机对弈,人执白旗,计算机执黑棋,轮流走棋,人所执白棋落定后,计算机(执黑棋)选择最优摆子点摆子,每方都试图在游戏结束前让自己棋子的数目多于对方,棋子多者胜。
据选题要求将棋盘设计为10*10格,初始状态在棋盘中央交叉排放黑白旗各两枚,为统计棋子个数,有一个棋子记一分,人执白棋,计算机执黑棋,且白棋先走。
下棋时,棋子的位置必须是以自己的棋子能包围住对手一个或多个棋子,被包围的对手棋子将变成自己的棋子。
包围的方向可以使上下左右斜线共8个方向,只要能连成一条线即可。
当一方摆子,但没有可以包围对手棋子的位置时,该方必须听步,通过放弃一子让对手走棋,直到该方可以走子为止。
当棋盘上有一方的棋子为0(也就是被对方吃完)或下满100格,游戏结束,旗子少者输。
二:
程序设计
1:
设计思路
从程序界面,考虑此为一个二维平面图,所以可以用数组形式表示棋盘上的位置。
则该程序接收到棋手按键操作,既棋手放子,就判定是不是有效位置,也就是能不能包围住对方棋子,如果能,便对棋子所在的位置往上下,左右,左上,左下,右上,右下8个方向寻找被包围住的所有棋子(必须是连续的,中间不能有空格),将这些被包围住的对手棋子都变成自己的棋子。
当白棋落定后,计算机(执黑棋)选择最优摆子点摆子并吃掉白子即将其变为黑子。
如果没有这样的位置可以落子,则停步,让对方走棋,重复上述步骤,直到游戏结束。
然后对当前棋盘中的黑白棋个数进行统计并输出结果。
如果想提前终止游戏,可以提前按退出。
2.设计流程图
3.设计流程及测试结果
(1)定义变量
定义使用到的常数、全局变量等。
如游戏的时间、状态、黑白棋子的个数等。
(2)Form_Load()设置游戏的初始界面
首先设置窗口的位置,检测程序是否正在运行以防止多次打开程序。
再设置‘后退’按键不可按,‘放弃一子’键不可按,且黑白英雄榜不可见。
最后调用drawnewqp画棋盘表格。
即可得到游戏初始界面如下所示:
在游戏一栏中包含开始游戏、载入游戏、保存游戏、退出及黑白棋英雄榜几个按钮。
在帮助一栏中有游戏规则及关于按钮。
(3)drawnewqp()画棋盘表格
设置棋盘的可用的区域,剩余区域用于显示时间、坐标、黑白棋计数显示、提示棋手所执棋子为白色以及工具栏(包括游戏开始、载入、推出、放弃棋子、后退和游戏规则等)。
然后画10*10的表格线,再设置线条宽度等。
如上图所示。
(4)窗体的设置
窗体的设置中包含了游戏窗体以及黑白英雄榜中各个按钮控件的设置在属性窗口中可设置它们的属性。
设计出的窗体如下图所示:
(4)开始新游戏()
在窗口工具栏的游戏中按下开始游戏键,游戏开始,此时在棋盘中央交叉处已排放黑白棋子各两枚,则显示‘白棋先有2子’及‘黑棋现有2子’且可以计数,时间开始计时,坐标值随鼠标移动而改变,‘放弃一子’键可按。
该函数在调用时都将清空棋盘以及将游戏时间清零,这样在按下开始游戏键后游戏自动进入新一局。
开始时的界面如下所示:
(5)放子()
1〉首先判断是否可以放子:
从上下、左右、左上、左下、右上、右下8个方向判断是否可以放子。
放置棋子的位置必须是以自己的棋子能包围住对手一个或多个棋子,包围的方向可以使上下左右斜线共8个方向,只要能连成一条线即可满足要求。
若放子位置有棋则无效。
2〉调用qp_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)用于提示棋手鼠标所在处是否可以放子,如果鼠标所在区域可以放子,则鼠标为“十字”图标,否则为“禁止”图标。
3〉若有多处可以放子,则可选最优位置放子;如若整个棋盘有空格但不符合放子要求,即无棋可走,则需放弃此步,让对方下棋。
(6)翻转棋子()
当一方棋子落定后,就要分别往8个方向判断是否包围住对方棋子,如果是,则改变棋子颜色,也就是棋盘上黑白棋子的个数要发生变化。
i代表行,j代表列,对于10*10的棋盘,它们的值为0-9,如果j<8,往右边判断,从当前位置开始,用循环语句判断判断右边是否有一个或连续多个对手的棋子,遇到自己的棋子或空格则结束循环,如果循环结束不是遇到空白,且列坐标小于10,则说明这些位置的棋子是被自己包围的对手棋子,将它们吃掉,也就是改变为自己的棋子,同样的方法向左、上、下等8个方向进行判断。
(7)黑子随即下子并吃掉白子()
由于设置由计算机执黑子,则应先对黑子可以放子的地方划分等级,等级高的位置优先走。
共将其分为15个等级:
0级:
不能放子
1级:
2级:
四个角的旁边一格
3级:
四条边框的旁边一格
4级:
只能吃一个方向的子,且吃了别人后,容易被别人吃回去
5级:
只能吃一个方向的子,但不容易被别人吃回去
6级:
能吃二个方向的子
7级:
能吃三个方向的子
8级:
能吃四个方向的子
9级:
能吃五个方向的子
10级:
能吃六个方向的子
11级:
能吃七个方向的子
12级:
能吃八个方向的子
13级:
14级:
棋盘的四边
15级:
棋盘的四个角
计算机根据优先级别择优下子后自动将所包围的棋子变为黑棋。
(8)ended()判断输赢
当格子已占满100格或一方棋子个数为0,则游戏结束:
1〉若白棋棋子个数少于黑棋,则会显示窗口(如下所示),提示‘你输了’以及‘再来一盘’。
若选择‘是’,则开始新游戏;选择‘否’,则结束游戏,所有都窗口关闭。
2>若黑棋与白棋个数相同,则为平局,则会显示如下窗口,提示该局为平局,且会提示你是否再来一局,按下‘是’,则开始新游戏;按下‘否’,则结束游戏,所有窗口关闭。
3〉若白棋多于黑棋棋子数,则棋手赢。
此时将调用mn英雄榜_Click(),如果棋手成绩能够上榜,即能进入前三名,则会出现如下界面,时间停止计时,‘游戏’键及‘放弃一子’键不可按,界面也将提示你输入姓名,刷新界面且列出你的名次:
而若不能够进入前三名,但白棋多于黑棋数,则会出现以下界面,显示你的用时,且提示棋手胜利并问你是否再来一局。
三:
调试分析
本次实验用VisualBasic程序设计语言进行编译,在实验过程中遇到的问题如下:
1〉:
需要设计10*10格的棋盘,但棋盘设计时得到11个棋格?
答:
界面在显示坐标时是由(1,1)到(10,10),但由于考虑界面为二维平面图,所以用数组形式表示棋盘上的位置,则数组下标应由(0,0)开始到(9,9)结束才能得到10*10的棋盘表格。
2〉:
在设置窗体中的控件时,控件不可移?
答:
设置控件位置时可以在属性窗口中修改,也可直接将其移动到所需位置。
出现控件不可移时可查看工具栏中格式选项中的‘锁定控件’是否被锁定,若被锁定,解除锁定即可。
3〉:
打开界面直接运行时,窗体显示的棋盘棋格数不标准,只有在点击工程窗体后,再启动,才能得到正常10*10棋盘表格?
答:
这应属于窗口属性问题。
10*10棋盘在改变原窗体大小后得到,而原窗体不能适应改变后的大小,导致直接运行时窗口属性不正确。
重设原窗体属性大小使之适应现行窗口大小即可。
但在本次试验中,未能找到对原窗体属性进行设置的属性栏,所以未能将其改正。
该程序是用于人机对弈,计算机依据所设优先级别选择有限级别最高的位置放子,所以当人了解这一规律即可赢过计算机。
且该程序不分难度,所以可改进该程序,设置难度级别,已过级形式或棋手自选难度级别形式出现会提高游戏趣味性。
而难度级别的设置可通过两种方法实现:
(1)通过改变计算机优先级别的设置来降低难度;
(2)通过先定下子的位置来提高难度。
或者限制‘后退’键的使用次数来提高难度。
四:
使用说明
本次实习是使用面向对象设计环境,用面向对象的程序设计语言VisualBasic制作的黑白棋小游戏,实现人机对弈。
具体操作为:
按下‘启动’键运行程序,则会出现游戏初始界面,在工具栏的游戏选项中点击‘开始游戏’,此时棋盘界面中央交叉处已有黑白棋各两个,且开始计时,这样即可开始与计算机下棋。
下棋过程中允许‘放弃一子’或‘后退’。
帮助选项中有游戏规则可供棋手参考。
若想结束游戏,可以在游戏选项中选择‘退出’从而结束游戏。
在一局结束后,会显示棋手成绩并提示棋手是否再来一盘,再依据棋手选择情况结束游戏或者开始新一局。
五:
实习总结
本次计算机实习主要是通过对所给选题进行设计来提高编程能力。
选题由老师给定。
由于选题难度较高,所以参考资料以帮助完成实验。
本次选题要求设计一个10*10的黑白棋游戏,由于需要在图形工作方式下进行,所以选用VB语言进行编译。
由于以前未使用过VB语言,所以使用时由很多不明了的地方。
但通过查阅书籍对VB语言有了一定的了解:
用VB编程时,首先创建项目,然后设计界面,在此可添加需要的按钮控件,在属性窗口中可以设置其属性,最后就是添加代码,在代码窗口可以添加窗体、按钮等的代码。
在这些工作完成后即可运行程序,如果出错,计算机将提示编译有错,且在出错语句标识为黄色,则在工具栏中点击调试选项中的逐句调试或逐过程调试,再出错语句处按下F1,则计算机将提示你为何出错,帮助你改正错误。
在VB应用程序的工具栏中各选项都可以利用来帮助你完成实验。
如视图选项中的各个窗口都可显示,从而使你能得到需要的信息。
工程选项中可以添加窗体或者模块等。
总之,通过这次实习学到了很多新知识,如用程序设计语言VisualBasic编制程序及网络搜索等。
提高了编程能力和主动思考的能力。
同时也对计算机的应用有了更深一步的了解。
欢迎下载,资料仅供参考!
!
!
资料仅供参考!
!
!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vb 白棋 游戏 课程设计 报告