五子棋游戏实验报告
- 格式:docx
- 大小:21.59 KB
- 文档页数:17
五子棋游戏实验报告
课程名称计算机程序设计(VB)
学号______________________
姓名______________________
班级______________________
提交时间
五子棋软件设计
一、实验目的
1•通过五子棋软件设计或者自拟题目设计,巩固本课程所学的各个章节重点知识,自拟题目的同学需尽早向教师提岀自己的想法及设计方案。
2•通过开发一个较大的系统,增强软件开发能力。
3•通过调试系统,增强逻辑思维能力。
二、实验内容
1.基本要求:
(1)输入两个对手名字,然后进入游戏界面。
(2)用鼠标点击的方式在棋盘上摆放棋子,黑白交替。(棋盘15*15 )
(3)可以悔棋。
(4)五子连在一起的时候能判断胜利,并且显示出胜利者的名字。
(5)能够将棋局的结果保存,保存该棋局
结束的状态、对手名字、棋局名字(棋局名字在保存时由用户在相应的界面下添入)(此功能要求用数据库和文件两种技术实现)。
因为棋盘上空点居多,大部分点的信息为0,因此只需保存有棋子的点的信息
用文件技术进行棋局保存,思路相同。
(7)五子棋恢复棋局
思路:首先从数据库文件中找到要恢复棋局的数据(即曾经保存的数据),然后把这些数据赋值给内存中相应的数组或者变量中,按照这些数据重新绘制棋盘和棋子,即完成了对棋局的恢复。
窗体启动事件应该完成的事情:
组合框中应该显示曾经保存的棋局名。因为每次保存棋局时,都是将棋局所有棋子的记录添加在表的最
后,因此表中关于棋局名的记录只能是类似于aaabbbbccccc的形式,而不可能是abbcacc的形式,根据
这个特点编程序取出表中不同的棋局名。
具体算法:
用一个字符串变量strfile初始值为空,从表的顶端向下依次移动记录指针,如果当前记录的棋局名字段和strfile不相等,说明进入另一个棋局的记录中,将该棋局记录的棋局名赋值给strfile,并加入到组合
框中,一直到表中最后一个记录
因为要从数据库中取岀相关数据到a数组中,因此要将a数组所有数据清零。
要建立一个data控件,与数据库连接起来,而后识别棋局(即表中的棋局名字段与在列表框中选择的棋
局名比较),将数据库该棋局中所有信息都赋值给a数组及相关变量。
刚才仅仅是数据的恢复,即将数据库中已经保存过的数据恢复到内存中,下一步应该根据内存中的数据重新绘制棋盘以及棋子。
重新绘制棋盘是独立的一块功能,因此考虑用全局子过程来实现,该子过程定义在模块中。思路如下:
清屏一绘制棋盘一根据a数组中的每一项的两个下标来决定绘制棋子的位置,根据每一项的值是1还是
2来决定在该位置绘制何颜色的棋子。
决定该黑白方走的blackwhite变量当时没有保存,可以采用在数据库中保存的方式来解决,本例中解决方法是通过数黑白棋子个数来决定恢复棋局后该谁走的。
因此设置了一个变量做计数器,每走一步棋计数器的值加一。
用文件技术实现棋局恢复,思路相同。
(8)悔棋
悔一步棋:用几个变量来表示关于一步棋的几个信息,每次下子都将该子的信息赋值给那几个变量,悔
一步棋即将那几个变量所表示的点的a数组信息清零。而后调用paint ()过程重画。
以上是教师带着学生完成的软件功能。
遗留问题:保存棋手姓名和棋局名并在恢复棋局的时候显示。(需要同学们自己完成)思路:在数据表中多建立两个字段,分别表示两个棋手姓名,同其它数据的保存类似。
三、设计日期
十二月
四、完成日期
十二月
五、实验体会
其实,一开始学习vb我就对它不抱有一定的热情,可能是因为要用到计算机以及编程问题,当时一想到有代码,就会无比的苦恼,但是为了让这门课顺利通过,我还是怀着一颗必须要学的心情。起初,我对待这门新课程和其他课
这是我这两天在研究程序为什么这么写的原因时,才开始领悟到的。这一点老师也有可能说过。我在抛开老师所编写的五子棋的程序下,想通过自己的思考,把五子棋的思路捋顺,所以开始自己画结构图
(真正开始有这种想法的是在我看到老师给我们展示的他的往届同学做贪吃蛇的心得中,才发觉重要性)。一开始我花了一个很短的一段时间,画岀一个我自认为很满意思路图,但是当我在重新用一些数去实验,当我再对比我写的图与老师编写的程序有何不同的时候,就会发现,有很多漏洞。比如,我想到了有下棋,但没有想到下棋前要清屏,
防止程序之前有任何痕迹,防止岀错;还有我想到了下棋之后要判断赢棋,但是当我到赢棋的那一步思路,我才想到,要判断赢棋,就必须有五个相同颜色的子连一起,那么在这之前我就要加上关于数组的赋值,来代表每一种颜色的棋子,从而构造if条件语句,完成
应其目的等等。其实这些都不是我一开始做程序就想到的,只有当按照计划实施的过程中,才能验证思路的正确性,才能知道自己的思路与逻辑缺陷在哪里,从而弥补不足。这也是将自己的逻辑思维进一步完善的过程,也是老师想让我们得到的东西。
所以,通过这次的课程,我能体会到老师的良苦用心,也感谢老师一直不厌倦的一遍遍教我们,一遍遍告诉我们不愿意听的忠言。我会将我从这里学到的态度,以及做事的思维方式,运用到其他事情上,哪怕是一点点,也会让我的效率比以往更有提高。
六、全部界面和代码
Form 1
Private Sub Comma nd1_Click()
If Trim仃eext1.Text) = ""Or Trim(Text2.Text) = "" Then
MsgBox "请输入玩家姓名!"
End If
If Trim(Text1.Text) = Trim(Text2.Text) The n
MsgBox "不能输入相同姓名!“
Exit Sub
End If
b = Text1.Text
w = Text2.Text
Form2.Show
Un load Me
End Sub
Form 2
Dim m As In teger
Dim n As In teger