VB五子棋代碼_第1頁
VB五子棋代碼_第2頁
VB五子棋代碼_第3頁
VB五子棋代碼_第4頁
VB五子棋代碼_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、VB實驗結課報告五子棋班級: 旅121 姓名: 范夢涵 學號: 121352 實驗題目:五子棋軟件設計實驗要求:1基本要求:(1)輸入兩個對手名字,然后進入游戲界面。(2)用鼠標點擊的方式在棋盤上擺放棋子,黑白交替。(棋盤15*15)(3)可以悔棋。(4)五子連在一起的時候能判斷勝利,并且顯示出勝利者的名字。(5)能夠?qū)⑵寰值慕Y果保存,保存該棋局結束的狀態(tài)、對手名字、 棋局名字(棋局名字在保存時由用戶在相應的界面下添入)(此功能要求用數(shù)據(jù)庫和文件兩種技術實現(xiàn))。(6)棋局能夠恢復,即重新打開,打開后出現(xiàn)棋局結束的狀態(tài)、對手名字(此功能要求用數(shù)據(jù)庫和文件兩種技術實現(xiàn))。2其它要求:(1)界面友好

2、、漂亮。(2)程序盡可能無bug。(3)程序健壯性強,基本上達到無論用戶如何操作,軟件都不出錯,都有相應的處理方法。實驗目的:1通過五子棋軟件設計或者自擬題目設計,鞏固本課程所學的各個章節(jié)重點知識,自擬題目的同學需盡早向教師提出自己的想法及設計方案。2通過開發(fā)一個較大的系統(tǒng),增強軟件開發(fā)能力。3通過調(diào)試系統(tǒng),增強邏輯思維能力。設計日期:2013年12月4日完成日期:2013年12月26日實驗體會:通過對五子棋軟件設計的編程結束,我所體會到的不僅是關于這個軟件給我?guī)淼母惺埽€有對于這個課的感觸。其實在一開始看到課表安排上游vb的時候就覺得,我們一個文科專業(yè)為什么要學編程?隨著課程的開展老師確實

3、是從零基礎一點一點細心的教起,有些例子程序若是班里人明白的少老師就會多講幾遍直到大家都聽明白了為止,并且上課的時候并不是老師自己講自己的,而是時不時的就會關心全班是否真的都在認真聽課,并且能夠真正的關心到“邊緣同學”,但是盡管是在這樣的情況下,我偶爾也會開開小差,課后實驗也會稍稍參考一下同學的代碼,就是這樣有問題沒有及時的弄明白導致最后在編五子棋代碼時,出現(xiàn)了許多問題。其實在當初老師讓在自擬題目和五子棋當中選擇一個作為結課作業(yè)的時候,我最開始想選擇的是自擬題目,因為我覺得這樣可以得到高一點的分數(shù),但是再說了兩個題目都被老師說不太合適之后我便選回了五子棋,現(xiàn)在想想當初真的是自己想太多了,光想到成

4、績,沒有想到自己是不是有那么高的實力,以為就算自己上課聽得不是特別的認真,但是上網(wǎng)找找別人的代碼自己再根據(jù)書本和老師的課件便能理解了然后編出自己的代碼。但事實并非如此,在老師給了大部分五子棋代碼并且講解過后,還是出了好多問題的我來說,還好當初沒選自擬題目。下面我說一說對于五子棋軟件設計的感受。既然決定了制作五子棋,于是就每節(jié)理論課都跟著老師的思路走,認真聽,為了可以抄清楚老師的代碼和防止自己在開小差坐在第一排。老師首先講的是關于Form1和Form2的制作,同時講那兩個窗體的過程中告訴了我們一個如果使用的這個定義變量過多的話便在模塊里面定義。還講了棋盤的畫法,以及贏棋判斷的其中一種。當時在抄代

5、碼,聽思路的時候沒覺得什么難度,但是當?shù)诙熳约赫嬲蠙C的時候問題就一個一個的來了。Form1的制作并沒有什么特別大的難度,主要問題都出在了Form2上。首先是數(shù)組定義的類型不認識,所以為什么這么定義就不了解,于是再去查課件,查書找清楚每一個代表什么意思,然后再看這些變量在代碼中的那些位置,就慢慢地能明白為什么這么定義了。當然尋找變量一行一行讀代碼的過程中也會發(fā)現(xiàn)自己不明白的專業(yè)名詞,又不知具體在書上的那些地方,就上網(wǎng)找。終于總算還算順利的讀下來了。但還沒有輕松多久另一個難題就又來了,關于贏棋判斷的另外三個方向。一開始豎著的判斷時很簡單,因為我以為只要像橫著的一樣把x坐標和y坐標調(diào)換一下就可以

6、了,但是當做到斜著的方向判斷時x坐標y坐標同時改變時便不知道如何改變了。先是照著老師的循環(huán)變量更改,因為只要定義兩個變量就可以了,但是當運行之后卻告訴我循環(huán)已經(jīng)用過了,然后我自己讀代碼又不看不出有什么錯誤,我便去問老師,老師說循環(huán)語句寫錯了,不是嵌套的給寫成嵌套格式了。改過之后,我問老師是不是調(diào)換一下坐標就能把斜的也做出來,老師說不是這樣的,你要先了解我為什么這么寫循環(huán),然后要是循環(huán)不理解的話寫列舉法也行。我當時就想列舉法要寫好多點,代碼肯定看起來不如循環(huán)的看上去簡便。于是我開始拿了一張紙在上面分別寫了好幾組橫著、豎著、斜著怎樣是贏棋的坐標,然后找到其中的規(guī)律再結合這老師前面給的循環(huán),發(fā)現(xiàn)自己

7、明白了點。一種斜著的是x坐標y坐標的變換方式是同加同減的,另一種是一個加一個減的。既然規(guī)律找到了,那么下一難關就是循環(huán)變量的范圍,在這中我試過把兩個都用一個范圍,后來發(fā)現(xiàn)不行,于是我便先試其中一種斜著的我試過0 to 4然后寫坐標的的加減變換,然后發(fā)現(xiàn)不行,于是我把加減變換調(diào)換了一下發(fā)現(xiàn)還是不行,老師提示我超標線。所以我就換了個范圍終于在試到4 to 0 step -1是成功了,所以我就想這個范圍是不是在同加同減的那種形式下也可以呢?但是試過后發(fā)現(xiàn)又是超標,然后我就想到兩個的起點坐標不一樣是不是范圍應該取值對稱一下,于是0 to -4 step -1成功了。終于就這樣我在制作五子棋的過程中的第

8、一大難題攻克了。接下來隨著老師講的逐漸深入,自己也及時理解還不算太過困難。但是在棋局庫哪里卻出了問題,代碼沒有問題,但是數(shù)據(jù)庫就是打不開,后來詢問老師,老師也找了半天沒有找出問題所在,便讓我再重新建立個數(shù)據(jù)庫或者換個電腦,但是試過之后還是不行,于是我便去找老師,終于在老師的細心尋找下,終于找到了問題所在,沒有把數(shù)據(jù)庫改成該有的格式。在這兩個我認為在編程中遇到的兩大問題的過后,盡管還是遇見了很多小問題,但還是解決了,老師要求我們自己做到的功能,再仔細研讀老師的代碼后也完成了。但是在這一切還比較順利的過程中也出了個小插曲,就是在最后一節(jié)上機課前,我給優(yōu)盤殺了個小病毒,結果就最后一次碼代碼的時候發(fā)現(xiàn)

9、,以前編的部分代碼缺失,不過還好不是全都沒了還是能很快補了回來的。幸虧老師在之前提醒過這種情況的發(fā)生,我先把代碼做了備份,要不就真的又是一個大工程了。最后我想說的是盡管這真的是一個編程的課程,但是它教給我們的不僅僅是代碼,不僅僅是如何制作軟件。就像老師說的那樣它交給我們的是解決問題如何思考的方式,如何抓住問題的根本,遇到問題應該勇于找解決辦法。就像在編程的過程中遇到不會的問題不能理解的名詞,就要及時的查書,上網(wǎng)查,和及時的問老師,當然其中不乏有一些因為上課你沒有特別的認真聽而問出的一些特別基礎的問題,但是老師都一一的細心解答了。我覺得老師交給我們的這些不僅僅能用在這節(jié)課上,還可以用在其余的課程

10、以及今后的道路上,所以在這里很感謝老師。以上就是我所有關于五子棋以及關于這個課的體會、感受。全部界面:游戲最開始玩家姓名輸入 游戲開始與贏棋判斷保存棋局庫打開棋局庫保存棋局文件打開棋局文件悔棋全部代碼:Modulel(全局變量)Public wanjia1 As StringPublic wanjia2 As StringPublic blackwhite As BooleanPublic wuziqi As BooleanPublic a(-11 To 11, -11 To 11) As IntegerDim i As IntegerDim j As IntegerDim countblac

11、k As IntegerDim countwhite As IntegerPublic Sub paint()countblack = 0countwhite = 0For i = -7 To 7Form2.Picture1.Line (-7, i)-(7, i), QBColor(0)Form2.Picture1.Line (i, -7)-(i, 7), QBColor(0)NextForm2.Picture1.FillStyle = 0For i = -7 To 7For j = -7 To 7If a(i, j) = 1 ThenForm2.Picture1.FillColor = QB

12、Color(0)Form2.Picture1.Circle (i, j), 0.3, QBColor(0)countblack = countblack + 1End IfIf a(i, j) = 2 ThenForm2.Picture1.FillColor = QBColor(15)Form2.Picture1.Circle (i, j), 0.3, QBColor(15)countwhite = countwhite + 1End IfNextNextIf countblack = countwhite Thenblackwhite = TrueElseblackwhite = False

13、End IfIf blackwhite = True Then = "該黑方" + wanjia1 + "走"ElseForm2.Label1.Caption = "該白方" + wanjia2 + "走"End IfEnd SubForm1:Private Sub Command1_Click()If Trim(Text1.Text) = "" Or Trim(Text2.Text) = "" ThenMsgBox "請輸入姓名"Exit SubEnd

14、Ifwanjia1 = Text1.Textwanjia2 = Text2.TextForm2.ShowUnload MeEnd SubForm2:Dim m As SingleDim n As SingleDim x0 As SingleDim y0 As SingleDim shubiao As IntegerPrivate Sub Command1_Click()Label1.Caption = "該黑方" + wanjia1 + "走"blackwhite = Truewuziqi = TruePicture1.ClsFor i = -7 To

15、7Picture1.Line (-7, i)-(7, i), QBColor(0)Picture1.Line (i, -7)-(i, 7), QBColor(0)NextFor i = -11 To 11For j = -11 To 11a(i, j) = 0NextNextEnd SubPrivate Sub Command2_Click()Form3.ShowEnd SubPrivate Sub Command3_Click()Form4.ShowEnd SubPrivate Sub Command4_Click()CommonDialog1.Filter = "*.wzq|*.

16、wzq"CommonDialog1.Action = 2Open CommonDialog1.FileName For Output As #1Print #1, wuziqiFor i = -7 To 7For j = -7 To 7If a(i, j) <> 0 ThenPrint #1, iPrint #1, jPrint #1, a(i, j)Print #1, wanjia1Print #1, wanjia2End IfNextNextClose #1End SubPrivate Sub Command5_Click()For i = -7 To 7For j

17、= -7 To 7a(i, j) = 0NextNextCommonDialog1.Filter = "*.wzq|*.wzq"CommonDialog1.Action = 1Open CommonDialog1.FileName For Input As #1Line Input #1, strwuziqiwuziqi = CBool(strwuziqi)Do While Not EOF(1)Line Input #1, striLine Input #1, strjLine Input #1, straLine Input #1, strw1Line Input #1,

18、 strw2a(Val(stri), Val(strj) = Val(stra)LoopClose #1Call paintEnd SubPrivate Sub Command6_Click()If wuziqi = True Thena(m, n) = 0Call paintEnd IfEnd SubPrivate Sub Form_Load()Form2.Picture1.Scale (-8, 8)-(8, -8)shubiao = 0End SubPrivate Sub Picture1_mousedown(button As Integer, shift As Integer, x A

19、s Single, y As Single)shubiao = 1x0 = xy0 = yIf CInt(x) >= -7 And CInt(x) <= 7 And CInt(y) >= -7 And CInt(y) <= 7 And wuziqi = True Thenm = CInt(x)n = CInt(y)Picture1.FillStyle = 0If blackwhite = True And a(CInt(x), CInt(y) = 0 ThenPicture1.FillColor = QBColor(0)Picture1.Circle (CInt(x),

20、 CInt(y), 0.3, QBColor(0)a(CInt(x), CInt(y) = 1Label1.Caption = "該白方" + wanjia2 + "走"blackwhite = Not blackwhiteEnd IfIf blackwhite = False And a(CInt(x), CInt(y) = 0 ThenPicture1.FillColor = QBColor(15)Picture1.Circle (CInt(x), CInt(y), 0.3, QBColor(15)a(CInt(x), CInt(y) = 2Labe

21、l1.Caption = "該黑方" + wanjia1 + "走"blackwhite = Not blackwhiteEnd IfFor i = CInt(x) - 4 To CInt(x)If a(i, CInt(y) = 1 And a(i + 1, CInt(y) = 1 And a(i + 2, CInt(y) = 1 And a(i + 3, CInt(y) = 1 And a(i + 4, CInt(y) = 1 ThenMsgBox "黑方勝利"wuziqi = FalseExit SubEnd IfIf a(i,

22、CInt(y) = 2 And a(i + 1, CInt(y) = 2 And a(i + 2, CInt(y) = 2 And a(i + 3, CInt(y) = 2 And a(i + 4, CInt(y) = 2 ThenMsgBox "白方勝利"wuziqi = FalseExit SubEnd IfNextFor j = CInt(y) - 4 To CInt(y)If a(CInt(x), j) = 1 And a(CInt(x), j + 1) = 1 And a(CInt(x), j + 2) = 1 And a(CInt(x), j + 3) = 1

23、And a(CInt(x), j + 4) = 1 ThenMsgBox "黑方勝利"wuziqi = FalseExit SubEnd IfIf a(CInt(x), j) = 2 And a(CInt(x), j + 1) = 2 And a(CInt(x), j + 2) = 2 And a(CInt(x), j + 3) = 2 And a(CInt(x), j + 4) = 2 ThenMsgBox "白方勝利"wuziqi = FalseExit SubEnd IfNextFor i = 4 To 0 Step -1If a(CInt(x)

24、- i, CInt(y) + i) = 1 And a(CInt(x) - i + 1, CInt(y) + i - 1) = 1 And a(CInt(x) - i + 2, CInt(y) + i - 2) = 1 And a(CInt(x) - i + 3, CInt(y) + i - 3) = 1 And a(CInt(x) - i + 4, CInt(y) + i - 4) = 1 ThenMsgBox "黑方勝利"wuziqi = FalseExit SubEnd IfIf a(CInt(x) - i, CInt(y) + i) = 2 And a(CInt(x

25、) - i + 1, CInt(y) + i - 1) = 2 And a(CInt(x) - i + 2, CInt(y) + i - 2) = 2 And a(CInt(x) - i + 3, CInt(y) + i - 3) = 2 And a(CInt(x) - i + 4, CInt(y) + i - 4) = 2 ThenMsgBox "白方勝利"wuziqi = FalseExit SubEnd IfNextFor j = 0 To -4 Step -1If a(CInt(x) - j - 4, CInt(y) - j - 4) = 1 And a(CInt(

26、x) - j - 3, CInt(y) - j - 3) = 1 And a(CInt(x) - j - 2, CInt(y) - j - 2) = 1 And a(CInt(x) - j - 1, CInt(y) - j - 1) = 1 And a(CInt(x) - j, CInt(y) - j) = 1 ThenMsgBox "黑方勝利"wuziqi = FalseExit SubEnd IfIf a(CInt(x) - j - 4, CInt(y) - j - 4) = 2 And a(CInt(x) - j - 3, CInt(y) - j - 3) = 2 A

27、nd a(CInt(x) - j - 2, CInt(y) - j - 2) = 2 And a(CInt(x) - j - 1, CInt(y) - j - 1) = 2 And a(CInt(x) - j, CInt(y) - j) = 2 ThenMsgBox "白方勝利"wuziqi = FalseExit SubEnd IfNextEnd IfEnd SubForm3Dim rcount As IntegerDim i As IntegerDim j As IntegerPrivate Sub Command1_Click()With Data1.Database

28、Name = App.Path + "wzq.mdb".RecordSource = "保存棋局表".RefreshIf Trim(Text1.Text) = "" ThenMsgBox "棋局名不能為空"Exit SubEnd IfIf .Recordset.RecordCount > 0 Then.Recordset.MoveLastFor i = 1 To rcountIf .Recordset.Fields("棋局名") = Text1.Text Then.Recordset.De

29、leteEnd IfIf Not .Recordset.EOF Then.Recordset.MoveNextEnd IfNextEnd IfFor i = -7 To 7For j = -7 To 7If a(i, j) <> 0 Then.Recordset.AddNew.Recordset.Fields("棋局名") = Text1.Text.Recordset.Fields("x坐標") = i.Recordset.Fields("y坐標") = j.Recordset.Fields("該點狀態(tài)值&quo

30、t;) = a(i, j).Recordset.Fields("下棋狀態(tài)") = wuziqi.Recordset.Fields("玩家1") = wanjia1.Recordset.Fields("玩家2") = wanjia2.Recordset.UpdateEnd IfNextNextUnload MeEnd WithEnd SubForm4Private Sub Command1_Click()For i = -7 To 7For j = -7 To 7a(i, j) = 0NextNextWith Data1.DatabaseName = App.Path + "wzq.mdb".RecordSource = "保存棋局表".RefreshIf .Recordset.RecordCount > 0 Then.Recordset.MoveLastrcount = .Recordset.RecordCount.Recor

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論