- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
五子棋游戏实验报告.doc
五子棋游戏实验报告
课程名称 计算机程序设计(VB)
学 号
姓 名
班 级
提交时间
五子棋软件设计
一、实验目的
1.通过五子棋软件设计或者自拟题目设计,巩固本课程所学的各个章节重点知识,自拟题目的同学需尽早向教师提出自己的想法及设计方案。
2.通过开发一个较大的系统,增强软件开发能力。
3.通过调试系统,增强逻辑思维能力。
二、实验内容
1.基本要求:
(1)输入两个对手名字,然后进入游戏界面。
(2)用鼠标点击的方式在棋盘上摆放棋子,黑白交替。(棋盘15*15)
(3)可以悔棋。
(4)五子连在一起的时候能判断胜利,并且显示出胜利者的名字。
(5)能够将棋局的结果保存,保存该棋局结束的状态、对手名字、 棋局名字(棋局名字在保存时由用户在相应的界面下添入)(此功能要求用数据库和文件两种技术实现)。
(6)棋局能够恢复,即重新打开,打开后出现棋局结束的状态、对手名字(此功能要求用数据库和文件两种技术实现)。
2.其它要求:
(1)界面友好、漂亮。
(2)程序尽可能无bug。
(3)程序健壮性强,基本上达到无论用户如何操作,软件都不出错,都有相应的处理方法。
3.设计步骤
(1)首先做界面
界面包括几个窗体,窗体上有相应的控件。
因为需要画棋盘,所以必须有图形容器,这里用picturebox框
第一个窗体是登陆界面,因为玩家姓名需要在程序中不断变换,因此需要将玩家名定义成两个变量,又因为这两个变量在几个窗体中都用到,所以在模块中定义为全局变量
当五子棋主界面启动之后,首先系统要自动绘制棋盘。
思路:用直线绘制棋盘----直线是由点绘制的---每个点都有坐标----改变坐标系为用户坐标系
用户坐标系的定义要在窗体启动时实现。
(2)坐标系的两个顶点坐标的确定?
考虑到五子棋15*15,确定棋盘坐标系顶点为(-8, 8),(8, -8)
(3)棋子的绘制与存储棋子的绘制用实心圆模式,颜色为黑色及白色两种。
棋子在内存中的存储方式:因为表示各个棋子的数据类型都相同,所以考虑用数组存储,因为棋盘是二维的,因此棋子用二维数组a存储。a(i,j)表示用户坐标(i,j)的棋子状态,0表示此处无棋子,1表示此处为黑子,2表示此处为白子,下棋初始时,棋盘所有位置的初始状态都为0
(4)下棋子的步骤鼠标点击棋盘交叉点附近的位置,系统应实现自动识别鼠标点击位置附近的交叉点
解决方法:坐标系的变换已经将棋盘交叉点坐标整数化,因此系统所需要实现的功能即是将鼠标所点击的位置坐标化为整数即可,例如将(6.2, -5.3)变成(6, -5)。在交叉点上交替下黑白棋子。
解决方法:定义一个逻辑数据类型变量blackwhite,该变量的值为真时下黑子,为假时下白子,每下一个棋子,该变量的值都要取反(NOT)。
判断赢棋每次下子时都必须进行赢棋判断,判断的依据是5个子按照横线、竖线或斜线连成一行。
解决方法:2层循环。
当有一方胜利时,棋局结束,此时在棋盘上继续点击,将不再下棋。
解决方法:设置一个逻辑变量wuziqi,其值为真时说明棋局没有结束,可以在棋盘上放棋子,该值为假时,说明该棋局结束,不能放棋子。
(6)五子棋保存棋局
思路:保存棋局的功能即把内存中与棋局相关的数据(棋局名称、棋子位置、棋子颜色、棋局状态(即棋局是否结束))存入外存中,以便以后能够恢复棋局。保存的实现用两种技术实现:文件和数据库。
采用数据库技术实现棋局保存:
数据库设计:
数据表字段:棋局名、x坐标、y坐标、该点状态值、下棋状态。
每条记录表示棋盘上一个存储的点的信息。
要实现用数据库保存数据,就必须使程序连接到数据库上,这里用的是data控件,通过在程序中对data控件属性的设置来连接数据库、数据表。
首先判断如果输入的棋局名和当前记录的棋局名相等,说明表中有输入棋局名对应的棋局信息,将其删除,判断过程是将用户输入的棋局名(字符串)从记录集(即表)的棋局字段顶端至下逐一比较
在表的最后,也就是最后一条记录后加上新保存棋局的各条记录
因为棋盘上空点居多,大部分点的信息为0,因此只需保存有棋子的点的信息
用文件技术进行棋局保存,思路相同。
(7)五子棋恢复棋局
思路:首先从数据库文件中找到要恢复棋局的数据(即曾经保存的数据),然后把这些数据赋值给内存中相应的数组或者变量中,按照这些数据重新绘制棋盘和棋子,即完成了对棋局的恢复。
窗体启动事件应该完成的事情:
组合框中应该显示曾经保存的棋局名。因为每次保存棋局时,都是将棋局所有棋子的记录添加在表的最后,因此表中关于棋局名的记录只能是类似于aaabbbbc
文档评论(0)