kaiyun官方注册
您所在的位置: 首页> 嵌入式技术> 设计应用> 基于VB2005的五子棋游戏设计
基于VB2005的五子棋游戏设计
来源:微型机与应用2014年第4期
陈伟康
(汕尾职业技术学院, 广东 汕尾516600)
摘要:参考社会上流行的五子棋游戏,使用VB2005进行程序模拟设计,用数组的变换实现查找功能,可增加学生学习编写程序的兴趣,提高《面向对象程序设计》课程教学的效果。
Abstract:
Key words :

摘 要:参考社会上流行的五子棋游戏,使用VB2005进行程序模拟设计,用数组的变换实现查找功能,可增加学生学习编写程序的兴趣,提高《面向对象程序设计》课程教学的效果。
关键词:五子棋游戏; VB2005;循环; 数组

随着微软公司的VS.net系列不断推出,VS.net在游戏编程方面的强大特性逐渐显露出来,强大功能使之非常适用于各类游戏的开发,本文介绍的是用VB2005模拟系统自带的扫雷游戏设计与实现。
1 Visual Studio.NET2005简介
Visual Basic.NET以Visual Studio.NET为基础,是Visual Studio.NET的主要组成部分。它虽然从Visual Basic 6.0发展而来,但并不是对Visual Basic 6.0的简单改良,而是从基础开始建立了一个新的平台。Visual Basic.NET是在现有Visual Basic 6.0基础之上的一次重大飞跃,它是一个全新的平台,而不是Visual Basic 6.0的一个升级版本。VB2005 是Visual Studio.NET 2005的其中一部分,主要是以VB2005编写程序的模式。
2 五子棋游戏的设计与实现
五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“连珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。
五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。
五子棋游戏是社会上流行的一个简单游戏,大多数的人都玩过,游戏的规则也是很多人都会,即在一个规定的二维数组中,横竖撇捺的5个连续一样就为胜利。使用VB2005设计与实现的该游戏既实现了游戏规则的自动设定,又实现了五子棋游戏的各项功能。
2.1 功能设计
五子棋游戏主要有以下功能模块:(1)级别/等级分管理:设置五子棋游戏的棋盘大小,根据游戏者自选等级(程序中暂时设置了3个等级:初级,棋盘的维数是10×10二维,计算机的自动计算水平简单,玩家能简单赢取胜利,以吸引玩家的注意与好奇;中级,棋盘的维数是20×20二维,计算机的自动计算水平有所提高,玩家不能简单赢取胜利,需要用一定的时间与计算才能取得胜利;高级,棋盘的维数是30×30二维,计算机的自动计算水平为最高,玩家需要用更多的时间与计算才能取得胜利),使得游戏更加公平合理。(2)游戏英雄榜:可以存储游戏者前10名成绩。(3)背景颜色:游戏者可以通过按钮选择喜欢的游戏背景颜色。(4)棋子与鼠标的背景选择与更改:选择玩家喜欢的棋子背景与鼠标图案,玩家可以选择先后下棋,以更好地吸引玩家进行游戏。(5)背景音乐:在五子棋游戏进行过程中还提供背景音乐,背景音乐可由游戏者设置。(6)帮助文档:为游戏者提供文档帮助信息,包括游戏简介、界面的使用、鼠标和键盘的操作、游戏规则、疑难问答、版本信息等。
2.2 界面设计
游戏界面采用VB.NET2005实现。以初级为例,棋盘为100个的一维数组,即有100个图片,在图1中变换为10×10二维数组。

2.3 主要算法设计
(1)分别随机生成100个一维数组picturebox控件,把一维数组转变成10×10二维数组摆放。在picturebox控件中默认显示为白色背景,如果用鼠标点击每个图片就会变成黑色的圆圈。主要的玩法是,查找周围横竖撇捺的连续相邻的5个位置的图片是否相同,如果相同则胜出,游戏结束。所以游戏的主要算法是实现了一个位置的周围横竖撇捺的连续相邻的5个位置的查找。如图2所示。

在一个二维的数组中,把横竖撇捺分为4种情况,横的时候是把所有的数组位置查找出来。例如以10×10的数组为例,把横的情况放入一个二维数组中进行判断,利用多重循环查找连续5个有相同的标记的就为胜出,就是在二维数组中的每一行进行判断,假设黑棋为1,白旗为0,只要判断1与0的个数即可,主要关键代码如下:
For i = 1 To 10 ′横竖的判断
For j = 1 To 6
For t = j To j + 4
p = p + pd(i, t) ′横进行判断的数组
p1 = p1 + pd(t, i) ′竖进行判断的数组
If p = 5 Or p1 = 5 Then
′判断是否5个连续相同
MsgBox("结束")
p = 0
p1 = 0
End If
Next
p = 0
p1 = 0
Next
Next
(2) 通过相同的方法判断出竖、撇和捺的情况,就可以判断胜负,主要的算法是用数组与数字替换方法,实现了对两个玩家的情况判断。在人机对决时,计算机玩家可以使用一个随机的生成落子的位置,在生成的位置时要分为难度不一等情况,还要在生成位置中判断是否存在有棋子,不能重复放入棋子,再使用一个计时器控件编写自动判断胜负情况。本程序在VB2005.NET中调试运行正常,很好地实现了五子棋的功能。
(3) 五子棋的难度等级是使用一个函数来完成的,如果出现而立三三、三四、四四等情况,就可认为胜出。本程序只是实现了3种情况,还有些情况没有完成。例如没有把程序改成网络版,现在只是单机版;在难度等级设计中的函数还不是很完善,在今后的编写中将继续完善本程序。
3 主要VB2005技术及编程
在五子棋游戏中应用到了很多的VB2005技术,使用一维数组变换生成二维数组的棋盘;利用树结构实现帮助文档;通过输入输出流读取叶节点文档;采用选项板实现版本信息;利用多媒体控件实现背景音乐等。使用到了图片的对应绑定显示、图标的变换、数组变换、游戏的提示、多媒体播放控件等。整个游戏综合性比较强,涉及到控件运用、算法应用、代码整理等内容,能够很好地运用VB2005设计程序,提高编程能力,增加学习者的兴趣。
让学生参考案例程序进行修改与扩展,起到了举一反三的效果,反复调试无错误的情况下,使用VB2005程序自带的打包安装工具进行打包,再让学生熟悉一个软件的正常安装与卸载测试;还有写出规范的Word文档程序设计说明书,提交为大作业;最后可以在课堂中集中演示作品并讲解,加强学生的记忆,更好地提高教学效果与教学质量。
本设计的程序还存在很多的不足,例如在计算速度上没能更好地提高效率,程序扩展案例不够丰富。但是在今后的教学中将不断完善本程序,使五子棋游戏程序成为一个更好的教学辅助工具,希望通过这个实例能够提高学生学习编写程序的兴趣,让更多的人学习与运用VB2005编程。
参考文献
[1] 靳广斌.Visual Basic 2005程序设计案例教程[M].北京:北京大学出版社,2008.
[2] Microsoft.VB.NET程序设计语言[M]. 北京:高等教育出版社,2004.
[3] 孔长征.VB.NET编程实例教程[M].北京:北京希望电子出版社,2002.
[4] 柯胜,孙进,邓志良. 基于Qt4的扫雷游戏的设计与实现[J].微型机与应用,2012,31(16):6-8.

此内容为AET网站原创,未经授权禁止转载。
Baidu
map