最新VB60五子棋代码文档格式.docx

上传人:b****8 文档编号:22881634 上传时间:2023-02-05 格式:DOCX 页数:21 大小:206.33KB
下载 相关 举报
最新VB60五子棋代码文档格式.docx_第1页
第1页 / 共21页
最新VB60五子棋代码文档格式.docx_第2页
第2页 / 共21页
最新VB60五子棋代码文档格式.docx_第3页
第3页 / 共21页
最新VB60五子棋代码文档格式.docx_第4页
第4页 / 共21页
最新VB60五子棋代码文档格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

最新VB60五子棋代码文档格式.docx

《最新VB60五子棋代码文档格式.docx》由会员分享,可在线阅读,更多相关《最新VB60五子棋代码文档格式.docx(21页珍藏版)》请在冰豆网上搜索。

最新VB60五子棋代码文档格式.docx

1.通过五子棋软件设计或者自拟题目设计,巩固本课程所学的各个章节重点知识,自拟题目的同学需尽早向教师提出自己的想法及设计方案。

2.通过开发一个较大的系统,增强软件开发能力。

3.通过调试系统,增强逻辑思维能力。

设计日期:

2013年12月4日

完成日期:

2013年12月26日

实验体会:

通过对五子棋软件设计的编程结束,我所体会到的不仅是关于这个软件给我带来的感受,还有对于这个课的感触。

其实在一开始看到课表安排上游vb的时候就觉得,我们一个文科专业为什么要学编程?

随着课程的开展老师确实是从零基础一点一点细心的教起,有些例子程序若是班里人明白的少老师就会多讲几遍直到大家都听明白了为止,并且上课的时候并不是老师自己讲自己的,而是时不时的就会关心全班是否真的都在认真听课,并且能够真正的关心到“边缘同学”,但是尽管是在这样的情况下,我偶尔也会开开小差,课后实验也会稍稍参考一下同学的代码,就是这样有问题没有及时的弄明白导致最后在编五子棋代码时,出现了许多问题。

其实在当初老师让在自拟题目和五子棋当中选择一个作为结课作业的时候,我最开始想选择的是自拟题目,因为我觉得这样可以得到高一点的分数,但是再说了两个题目都被老师说不太合适之后我便选回了五子棋,现在想想当初真的是自己想太多了,光想到成绩,没有想到自己是不是有那么高的实力,以为就算自己上课听得不是特别的认真,但是上网找找别人的代码自己再根据书本和老师的课件便能理解了然后编出自己的代码。

但事实并非如此,在老师给了大部分五子棋代码并且讲解过后,还是出了好多问题的我来说,还好当初没选自拟题目。

下面我说一说对于五子棋软件设计的感受。

既然决定了制作五子棋,于是就每节理论课都跟着老师的思路走,认真听,为了可以抄清楚老师的代码和防止自己在开小差坐在第一排。

老师首先讲的是关于Form1和Form2的制作,同时讲那两个窗体的过程中告诉了我们一个如果使用的这个定义变量过多的话便在模块里面定义。

还讲了棋盘的画法,以及赢棋判断的其中一种。

当时在抄代码,听思路的时候没觉得什么难度,但是当第二天自己真正上机的时候问题就一个一个的来了。

Form1的制作并没有什么特别大的难度,主要问题都出在了Form2上。

首先是数组定义的类型不认识,所以为什么这么定义就不了解,于是再去查课件,查书找清楚每一个代表什么意思,然后再看这些变量在代码中的那些位置,就慢慢地能明白为什么这么定义了。

当然寻找变量一行一行读代码的过程中也会发现自己不明白的专业名词,又不知具体在书上的那些地方,就上网找。

终于总算还算顺利的读下来了。

但还没有轻松多久另一个难题就又来了,关于赢棋判断的另外三个方向。

一开始竖着的判断时很简单,因为我以为只要像横着的一样把x坐标和y坐标调换一下就可以了,但是当做到斜着的方向判断时x坐标y坐标同时改变时便不知道如何改变了。

先是照着老师的循环变量更改,因为只要定义两个变量就可以了,但是当运行之后却告诉我循环已经用过了,然后我自己读代码又不看不出有什么错误,我便去问老师,老师说循环语句写错了,不是嵌套的给写成嵌套格式了。

改过之后,我问老师是不是调换一下坐标就能把斜的也做出来,老师说不是这样的,你要先了解我为什么这么写循环,然后要是循环不理解的话写列举法也行。

我当时就想列举法要写好多点,代码肯定看起来不如循环的看上去简便。

于是我开始拿了一张纸在上面分别写了好几组横着、竖着、斜着怎样是赢棋的坐标,然后找到其中的规律再结合这老师前面给的循环,发现自己明白了点。

一种斜着的是x坐标y坐标的变换方式是同加同减的,另一种是一个加一个减的。

既然规律找到了,那么下一难关就是循环变量的范围,在这中我试过把两个都用一个范围,后来发现不行,于是我便先试其中一种斜着的我试过0to4然后写坐标的的加减变换,然后发现不行,于是我把加减变换调换了一下发现还是不行,老师提示我超标线。

所以我就换了个范围终于在试到4to0step-1是成功了,所以我就想这个范围是不是在同加同减的那种形式下也可以呢?

但是试过后发现又是超标,然后我就想到两个的起点坐标不一样是不是范围应该取值对称一下,于是0to-4step-1成功了。

终于就这样我在制作五子棋的过程中的第一大难题攻克了。

接下来随着老师讲的逐渐深入,自己也及时理解还不算太过困难。

但是在棋局库哪里却出了问题,代码没有问题,但是数据库就是打不开,后来询问老师,老师也找了半天没有找出问题所在,便让我再重新建立个数据库或者换个电脑,但是试过之后还是不行,于是我便去找老师,终于在老师的细心寻找下,终于找到了问题所在,没有把数据库改成该有的格式。

在这两个我认为在编程中遇到的两大问题的过后,尽管还是遇见了很多小问题,但还是解决了,老师要求我们自己做到的功能,再仔细研读老师的代码后也完成了。

但是在这一切还比较顺利的过程中也出了个小插曲,就是在最后一节上机课前,我给优盘杀了个小病毒,结果就最后一次码代码的时候发现,以前编的部分代码缺失,不过还好不是全都没了还是能很快补了回来的。

幸亏老师在之前提醒过这种情况的发生,我先把代码做了备份,要不就真的又是一个大工程了。

最后我想说的是尽管这真的是一个编程的课程,但是它教给我们的不仅仅是代码,不仅仅是如何制作软件。

就像老师说的那样它交给我们的是解决问题如何思考的方式,如何抓住问题的根本,遇到问题应该勇于找解决办法。

就像在编程的过程中遇到不会的问题不能理解的名词,就要及时的查书,上网查,和及时的问老师,当然其中不乏有一些因为上课你没有特别的认真听而问出的一些特别基础的问题,但是老师都一一的细心解答了。

我觉得老师交给我们的这些不仅仅能用在这节课上,还可以用在其余的课程以及今后的道路上,所以在这里很感谢老师。

以上就是我所有关于五子棋以及关于这个课的体会、感受。

全部界面:

游戏最开始玩家姓名输入

游戏开始与赢棋判断

保存棋局库

打开棋局库

保存棋局文件

打开棋局文件

悔棋

全部代码:

Modulel(全局变量)

Publicwanjia1AsString

Publicwanjia2AsString

PublicblackwhiteAsBoolean

PublicwuziqiAsBoolean

Publica(-11To11,-11To11)AsInteger

DimiAsInteger

DimjAsInteger

DimcountblackAsInteger

DimcountwhiteAsInteger

PublicSubpaint()

countblack=0

countwhite=0

Fori=-7To7

Next

Forj=-7To7

Ifa(i,j)=1Then

countblack=countblack+1

EndIf

Ifa(i,j)=2Then

countwhite=countwhite+1

Ifcountblack=countwhiteThen

blackwhite=True

Else

blackwhite=False

Ifblackwhite=TrueThen

EndSub

Form1:

PrivateSubCommand1_Click()

IfTrim(Text1.Text)="

"

OrTrim(Text2.Text)="

Then

MsgBox"

请输入姓名"

ExitSub

wanjia1=Text1.Text

wanjia2=Text2.Text

Form2.Show

UnloadMe

Form2:

DimmAsSingle

DimnAsSingle

Dimx0AsSingle

Dimy0AsSingle

DimshubiaoAsInteger

Label1.Caption="

该黑方"

+wanjia1+"

走"

wuziqi=True

Picture1.Cls

Picture1.Line(-7,i)-(7,i),QBColor(0)

Picture1.Line(i,-7)-(i,7),QBColor(0)

Fori=-11To11

Forj=-11To11

a(i,j)=0

PrivateSubCommand2_Click()

Form3.Show

PrivateSubCommand3_Click()

Form4.Show

PrivateSubCommand4_Click()

CommonDialog1.Filter="

*.wzq|*.wzq"

CommonDialog1.Action=2

OpenCommonDialog1.FileNameForOutputAs#1

Print#1,wuziqi

Ifa(i,j)<

>

0Then

Print#1,i

Print#1,j

Print#1,a(i,j)

Print#1,wanjia1

Print#1,wanjia2

Close#1

PrivateSubCommand5_Click()

CommonDialog1.Action=1

OpenCommonDialog1.FileNameForInputAs#1

LineInput#1,strwuziqi

wuziqi=CBool(strwuziqi)

DoWhileNotEOF

(1)

LineInput#1,stri

LineInput#1,strj

LineInput#1,stra

LineInput#1,strw1

LineInput#1,strw2

a(Val(stri),Val(strj))=Val(stra)

Loop

Callpaint

PrivateSubCommand6_Click()

Ifwuziqi=TrueThen

a(m,n)=0

PrivateSubForm_Load()

shubiao=0

PrivateSubPicture1_mousedown(buttonAsInteger,shiftAsInteger,xAsSingle,yAsSingle)

shubiao=1

x0=x

y0=y

IfCInt(x)>

=-7AndCInt(x)<

=7AndCInt(y)>

=-7AndCInt(y)<

=7Andwuziqi=TrueThen

m=CInt(x)

n=CInt(y)

Picture1.FillStyle=0

Ifblackwhite=TrueAnda(CInt(x),CInt(y))=0Then

Picture1.FillColor=QBColor(0)

Picture1.Circle(CInt(x),CInt(y)),0.3,QBColor(0)

a(CInt(x),CInt(y))=1

该白方"

+wanjia2+"

blackwhite=Notblackwhite

Ifblackwhite=FalseAnda(CInt(x),CInt(y))=0Then

Picture1.FillColor=QBColor(15)

Picture1.Circle(CInt(x),CInt(y)),0.3,QBColor(15)

a(CInt(x),CInt(y))=2

Fori=CInt(x)-4ToCInt(x)

Ifa(i,CInt(y))=1Anda(i+1,CInt(y))=1Anda(i+2,CInt(y))=1Anda(i+3,CInt(y))=1Anda(i+4,CInt(y))=1Then

黑方胜利"

wuziqi=False

Ifa(i,CInt(y))=2Anda(i+1,CInt(y))=2Anda(i+2,CInt(y))=2Anda(i+3,CInt(y))=2Anda(i+4,CInt(y))=2Then

白方胜利"

Forj=CInt(y)-4ToCInt(y)

Ifa(CInt(x),j)=1Anda(CInt(x),j+1)=1Anda(CInt(x),j+2)=1Anda(CInt(x),j+3)=1Anda(CInt(x),j+4)=1Then

Ifa(CInt(x),j)=2Anda(CInt(x),j+1)=2Anda(CInt(x),j+2)=2Anda(CInt(x),j+3)=2Anda(CInt(x),j+4)=2Then

Fori=4To0Step-1

Ifa(CInt(x)-i,CInt(y)+i)=1Anda(CInt(x)-i+1,CInt(y)+i-1)=1Anda(CInt(x)-i+2,CInt(y)+i-2)=1Anda(CInt(x)-i+3,CInt(y)+i-3)=1Anda(CInt(x)-i+4,CInt(y)+i-4)=1Then

Ifa(CInt(x)-i,CInt(y)+i)=2Anda(CInt(x)-i+1,CInt(y)+i-1)=2Anda(CInt(x)-i+2,CInt(y)+i-2)=2Anda(CInt(x)-i+3,CInt(y)+i-3)=2Anda(CInt(x)-i+4,CInt(y)+i-4)=2Then

Forj=0To-4Step-1

Ifa(CInt(x)-j-4,CInt(y)-j-4)=1Anda(CInt(x)-j-3,CInt(y)-j-3)=1Anda(CInt(x)-j-2,CInt(y)-j-2)=1Anda(CInt(x)-j-1,CInt(y)-j-1)=1Anda(CInt(x)-j,CInt(y)-j)=1Then

Ifa(CInt(x)-j-4,CInt(y)-j-4)=2Anda(CInt(x)-j-3,CInt(y)-j-3)=2Anda(CInt(x)-j-2,CInt(y)-j-2)=2Anda(CInt(x)-j-1,CInt(y)-j-1)=2Anda(CInt(x)-j,CInt(y)-j)=2Then

Form3

DimrcountAsInteger

WithData1

.DatabaseName=App.Path+"

\wzq.mdb"

.RecordSource="

保存棋局表"

.Refresh

棋局名不能为空"

If.Recordset.RecordCount>

.Recordset.MoveLast

Fori=1Torcount

If.Recordset.Fields("

棋局名"

)=Text1.TextThen

.Recordset.Delete

IfNot.Recordset.EOFThen

.Recordset.MoveNext

.Recordset.AddNew

.Recordset.Fields("

)=Text1.Text

x坐标"

)=i

y坐标"

)=j

该点状态值"

)=a(i,j)

下棋状态"

)=wuziqi

玩家1"

)=wanjia1

玩家2"

)=wanjia2

.Recordset.Update

EndWith

Form4

rcount=.Recordset.RecordCount

.Recordset.MoveFirst

)=Combo1.TextThen

a(.Recordset.Fields("

),.Recordset.Fields("

))=.Recordset.Fields("

wuziqi=.Recordset.Fields("

ExitFor

Combo1.Text="

请选择打开棋局名称"

strfile="

)<

strfileThen

strfile=.Recordset.Fields("

Combo1.AddItemstrfile

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 卡通动漫

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1