当前栏目>>广元气象>>气象科普>>科普文摘
 

围棋程序的vb源代码

发布时间:2012/8/18 21:10:09

信息来源:ag亚洲集团官网|官方网站  

论文大概:
关键词:围棋 递归
序言:
围棋棋盘程序
摘要:
文章重点阐述了围棋中判断死活功能和提子功能部分的设计和实现,通过递归法实现围棋中死棋(0气块)的判断以及提子算法。另外还介绍了一些围棋对弈中的规则以及其他一些围棋编程算法,通过与这些算法的对比,体现了用不同的方法所实现的功能在不同领域的应用。
在本程序中,完成了围棋对弈中对死棋的判断和提去的功能实现,对本人来讲实现此系统的功能收获很大,学到了以前不曾学过的东西,也巩固了以前学过的知识。这将为我以后从事此方面的工作奠定了结实的基础。
本文主要阐述了如何设计和实现可以在单片机上运行的围棋棋盘算法,对实现双人对弈中的死活算法做了详细说明,对系统所要求的运行环境、基本技术也作了简要论述。
围棋棋盘程序
3 Abstract
This essay introduces how to design a process to calculate the steps of the game of “go” on SCM. It explains how to do the calculation in the battle of two to prove who wins the game. And it briefly states the necessary processing environment of the system and the basic techniques needed. The recursive method used to judge whether the black/white pieces are still alive or not and the way to calculate how many black/white pieces can be removed are the focus of the essay. Besides, some rules of this game and some other processes to calculate the result of the game are also included here, with the hope of making some comparison between these different processes.
Keywords: VHDL(Very High Speed Integrated Circuit Hardware Description Language); ASIC(Application Specific IC); PLD(Programmable Logic Device); CPLD(Complex Programmable Logic Device); FPGA(Field Programmable Gate Array); MAX+PLUSII(Multiple Array Matrix And Programmable Logic User Systems)
(围棋) I-go (递归)the recursive method 算法 ……
4 目录
摘 要 II
Abstract II
目录 III
第一章 前言 0
1.1 编写目的 0
1.2 项目背景 0
第二章 可行性研究 2
2.1 基本要求 2
2.1.1 功能 2
2.1.2 性能 2
2.1.3 处理流程 2
2.1.4 完成期限 3
2.2 具备的条件 3
2.2.1 硬件和软件环境方面的条件 3
2.2.2 软件方面的技术介绍 3
2.3 小结 3
第三章 系统的总体结构和模块结构设计 4
3.1 系统的总体结构图 4
3.2 系统的总体布局 5
3.3 功能的模块设计 5
3.3.1 外围模块的设计 5
3.3.2 系统的功能控制模块 5
3.3.3 系统设定模块 5
3.3.4 系统帮助模块 6
3.4 系统连接的基本方框图 6
第四章 开发工具和软件运行环境 6
4.1 系统的开发工具 6
4.2 软件运行环境 6
第五章 系统设计的基本原理和功能框图 6
5.1 系统设计的基本原理 6
5.2 系统的功能框图 6
第六章 系统的实现 7
6.1 用户界面的设计 7
6.4 使用的主要技术 8
第七章 代码的设计 9
7.1 代码设计的结构 9
7.2 部分自定义函数的功能介绍及详细代码 9
7.3 部分源程序代码 10
第八章 程序编制时遇到的问题 10
8.1 在程序编制过程中遇到的一系列问题和解决的方法 10
8.2 在程序调式中进行排错和纠错解决问题 11
第九章 总结 14
总结 14
参考文献 16
5 第一章 前言
5.1 1.1 编写目的
随着社会的迅速发展,人民的物质生活水平不断提高,人们也有更多的时间安排在娱乐上面,另外随着电子工业的迅速发展,手机游戏、掌上游戏、电视游戏的不断的普及,游戏的种类也在不断增加,人们越来越希望能用自己简易的设备玩转更多的游戏。然而一般的单片机的运算能力和存储能力都是有限的,如果要在单片机上实现诸如围棋对弈这样的游戏,则必须要有一个可行的算法来支持,这个算法能足以让运算能力和存储能力有限的单片机在人们可以接受的时间内完成各种功能。
正因为在这方面有比较高的应用需求,所以寻找一种高效简单的算法来实现围棋对弈是非常必要的,但是目前人们关于围棋对弈算法的重点基本集中在人工智能方面,力求寻找到人机对弈的优异算法,而这些研究都是针对功能强劲的计算机所展开的,在单片机上实现则是不太现实的事情,所以寻找一个简短而高效的算法是非常有必要的。5.2 1.2 项目背景
此项目名称为:围棋棋盘程序
该程序主要功能是用VB实现围棋对弈中死活判断和提子的功能,程序主要包括VB界面设计,围棋死活判断以及提子的算法设计与实现。
围棋程序的编制被称作人工智能的“试金石”,是人工智能技术的一大难题。计算机运用于棋类方面几乎与计算机的诞生的历史一样长。这方面内容主要属于人工智能技术。人工智能作为一门科学首先是在五十年代提出的,随即便运用于棋类,由于技术的进步,计算机速度的提高,算法的不断发展,目前电脑国际象棋的水平已极高,然而围棋水平却徘徊不前。而对于围棋的人机对弈程序来说,其中最基础的就是围棋的死活算法,目前,死活软件已达到较高的水平,但是大多都是依赖于现代计算机强大的计算能力和巨大存储功能,能应用于存储和计算能力较有限的单片机上的却少之又少。
5.3 3.2 系统的总体布局
本系统只有单一的界面,用来实现围棋对弈中死活判断和提子的功能。
如图所示:
5.4 3.3 功能的模块设计
5.4.1 3.3.1 棋盘设计
围棋棋盘标准正方形,由纵横各19秒条线垂直、均匀相交而成,构成一幅对称、简洁而又完美的几何图形。如果你久久凝视棋盘,会产生一种浑然一体,茫然无际的感觉。如仰视浩瀚苍天,如俯瞰寥廓大地。
围棋棋盘被分割成324个大小相等的小方格和361个交叉点,成标准网格状。这种网格是围棋棋子运动的载体。
5.4.2 3.3.2 棋子设计
围棋棋盘隐含奥妙,围棋的棋子也蕴藏玄机。围棋棋子具有一种“元素性”的特点,即是一种最抽象、最概括的存在。先说棋子的种类和功能。象棋的棋子分为将、士、象、车、马、炮、兵七种,等级森严,各具不同的功能。围棋棋子则仅有一种,几百个棋子,既无子力强弱级别大小区别,也没有任何性质功能差异。犹如齐整的一营士兵。围棋棋子元素性还表现在它的重复使用上,被吃掉的棋子仍可继续投入战斗,遵守着宇宙中物质不灭定律。次看棋子颜色。围棋棋子在性质上是无差别的一种,在颜色上则分为黑、白两类。自古以来,人们形容围棋是黑白世界。围棋二色的区分,象征中宇宙中阴阳两个基本范畴。
5.4.3 3.3.3 对弈算法
本系统主要采用的用了递归法 用递归的方法算气判死活
死活研究的对象是棋串
与棋子相邻的空点称该棋子的气。没有气的棋子将被从棋盘上提起,称为提子。提子又称吃棋
有两眼的棋称为活棋,通常而言,如果即使对方先行也不能被提掉的就是活棋;而即使已方先行也不可能避免被提掉的就是死棋。
围棋中的对杀是很常见的。如何计算用于对杀的气数,就成为电脑围棋中一个迫切需要解决的重大课题本系统通过递归的能力在于用有限的语句来定义对象的无限集合。递归使一些复杂的问题处理起来简单明了,递归算法是解决问题的一种重要方法,它使许多复杂的问题变得简单,容易解决了。递归的特点是:函数或过程调用它自本身。
使用递归的三个条件:
1、在计算过程中,前后数据有一定的递推关系;
2、递归是有限次的;
3、有结束条件。
符合这三个条件的问题就可以使用递归算法。采用递归算法和程序结构清晰,可读性强。但在处理递归问题的过程中,需要以时间、空间的耗费为代价。
6
7
8 第六章 系统的实现
8.1 6.1 用户界面的设计
8.2 6.2 使用的主要技术
在这个围棋棋盘程序中主要采用了Visual Basic中的画图控件的技术
画圆过程:
Public Sub DrawPoint(Obj As PictureBox, X As Integer, Y As Integer, Rudais As Integer, MyColor As Long)
Dim i As Integer
For i =1 To Rudais
Obj.Circle (X, Y), i, MyColor
Next i
End Sub
9 第七章 代码的设计
9.1 7.1 代码设计的结构
在程序的编制过程中,有很多代码时会重复出现的。为了使程序看上去更加简洁、易懂和明了,也为了提高系统效率和便于以后系统的维护,基本上是以自定义的函数进行调用的。程序中代码的设计无论如何书写都尽量符合简练、易懂,使用户了解更加方便。
9.2 7.2 部分自定义函数的功能介绍及详细代码
Public Const SubWidth = 400
Type AllStep ''用来纪录每步的节点
Col As Integer ''行坐标
Row As Integer ''列坐标
End Type
Type QPNode
NodeState As Integer ''围棋的点0、20表示界外 0==空、-1==黑色、1==白色、2==界外
Used As Boolean ''已经使用
Visite As Integer ''在递归是的访问标志
DieFlag As Boolean ''是否死棋
End Type
''画圆过程
Public Sub DrawPoint(Obj As PictureBox, X As Integer, Y As Integer, Rudais As Integer, MyColor As Long)
Dim i As Integer
For i =1 To Rudais
Obj.Circle (X, Y), i, MyColor
Next i
End Sub
9.3 7.3 部分源程序代码
Option Explicit
''定义走棋顺序
Private WStep(500) As AllStep
Private StepCount As Integer
Private StartFlag As Boolean ''标记是否开始下棋
Private MyColor As Long ''纪录颜色变量
Private WeiQi(20, 20) As QPNode ''围棋的点0、20表示界外 0==空、-1==黑色、1==白色、2==界外Private KillPartner As Boolean
''纪录对方是否有死棋
Private Sub CmdExit_Click()
If StartFlag =False Then
Unload Me
Else
If MsgBox("下棋进行中,是否真的退出?", vbQuestion + vbYesNo, Me.Caption) =vbYes Then
Unload Me
End If
End If
End Sub
Private Sub CmdReset_Click()
If StartFlag =False Then
Unload Me
FrmWeiQi.Show Else
If MsgBox("下棋进行中,是否真的重来?", vbQuestion + vbYesNo, Me.Caption) =vbYes Then
Unload Me
FrmWeiQi.Show
End If
End If
End Sub
Private Sub CmdStart_Click()
FrmWeiQi.CurrentX =10000
FrmWeiQi.CurrentY = 4000
''FrmWeiQi.Print "黑棋先下!"
Label3.Visible = True
''第一步计数
StepCount = 1
StartFlag =True
CmdStart.Enabled =False
End S
围棋程序设计
本系统开发工具:VB6.0
本设计包含内容:源代码+毕业论文+开题报告+答辩稿

责任编辑:李志华

本信息已经被11552人浏览

 
 

关闭窗口

 

© 2009 版权所有 ag亚洲集团官网|官方网站 广元市气象学会 站长信箱:tysword@163.com
地址:四川省广元市利州东路800号   邮编:628017