picture數(shù)組
10多年建站經(jīng)驗(yàn), 成都網(wǎng)站制作、網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)客戶的見證與正確選擇。創(chuàng)新互聯(lián)提供完善的營銷型網(wǎng)頁建站明細(xì)報價表。后期開發(fā)更加便捷高效,我們致力于追求更美、更快、更規(guī)范。
可以用坐標(biāo)來完成
用數(shù)組來記錄坐標(biāo)
棋譜代碼 我想是靠自己寫吧
比如
Private Sub Form_Load()
Picture1(1).Picture = LoadPicture("") '這圖是兵
End Sub
Private Sub Picture1_Click(Index As Integer)
If Index = 1 Then
If Picture1(1).Top = 1000 Then '沒過河
Picture1(1).Left = 500 '保持不變 意思就是不能左右移動,當(dāng)用鼠標(biāo)指定他的位子就可以上前一步
ElseIf Picture1(1).Top = 700 Then '已經(jīng)過河
'可以就解除限制
End If
End If
End Sub
'還要判斷你指定位子的坐標(biāo),是否遠(yuǎn)遠(yuǎn)超過一步距離,或遠(yuǎn)遠(yuǎn)小于一步距離
'可以用所畫的線來判斷位子
實(shí)際代碼不是這樣寫的
只是希望你明白這個道理
貼保存棋局和讀取棋局部分的,你先看看:
Rem 讀取棋局
Private Sub mnuRead_Click()
Dim s As String, i As Integer, t
If Dir(App.Path "\cchess.che") = "" Then MsgBox "沒有棋局文件可以讀入!請先保存棋局!", , "中國象棋": Exit Sub
Open App.Path "\cchess.che" For Input As #1
Input #1, s
Close #1
s = Replace(s, vbCrLf, "")
s = Trim(s)
t = Split(s, " ")
If UBound(t) 89 Then MsgBox "棋局文件已遭到破壞!請重新保存棋局!", , "中國象棋": Exit Sub
For i = 0 To 89
a(i) = Val(t(i))
Next
MsgBox "棋局文件已成功讀入!", , "中國象棋"
End Sub
Rem 保存棋局
Private Sub mnuSave_Click()
Dim s As String, i As Integer
s = ""
For i = 0 To 89
s = s " " a(i)
Next
s = Trim(s)
Open App.Path "\cchess.che" For Output As #1
Print #1, s;
Close #1
MsgBox "當(dāng)前棋局已成功保存!", , "中國象棋"
End Sub
Private Sub Command1_Click()
s = 1
t = 1
For i = 2 To 64
t = t + t
s = s + t
Next i
Print "64個格子全部放完麥子,"
Print "總共為"; s; "粒"
End Sub
記得以前上學(xué)的時候做過的,個人推薦:
先用線條畫出棋盤,然后在棋盤的90的點(diǎn)都畫好棋子(可以用image控件畫圓,lable控件顯示棋子內(nèi)容),并編成10*9的二維數(shù)組,利用控件image的visible屬性控制是否顯示,控件lable控制顯示的內(nèi)容。
個人認(rèn)為這個應(yīng)該比利用坐標(biāo)讓控件移動的方法簡單
不知道你是不是就畫這樣一個棋盤,請在窗體上加入Picture1控件.
Private Const CELL_SIZE = 60 '格子大小,單位像素
Private Sub Form_Load()
Picture1.AutoRedraw = True
Picture1.ScaleMode = vbPixels '以像素為單位,作圖
Picture1.BorderStyle = 0 '無邊框
Picture1.Height = 15 * CELL_SIZE * 8 '棋盤大小,*15表示單位由像素變成緹
Picture1.Width = Picture1.Height '長寬相同
Picture1.BackColor = vbWhite '背景色,白色
Dim i As Integer
For i = 1 To 8 Step 2 '先畫黑色豎格4條
Picture1.Line (i * CELL_SIZE, 0)-(i * CELL_SIZE + CELL_SIZE, Picture1.ScaleHeight), vbBlack, BF
Next
Picture1.DrawMode = vbInvert '下面畫上去的與原有顏色相反,即黑色變成白色
For i = 1 To 8 Step 2 '橫格4條
Picture1.Line (0, i * CELL_SIZE)-(Picture1.ScaleWidth, i * CELL_SIZE + CELL_SIZE), vbBlack, BF
Next
Picture1.DrawMode = vbCopyPen '畫圖模式變了缺省值
End Sub
找本VC/MFC的書先掃掃忙再說吧。先明白界面怎么做,再去研究人工智能,以確定走哪一步棋。要向自己寫出這東西非一日之功也