picture数组
10多年建站经验, 成都网站制作、网站设计、外贸网站建设客户的见证与正确选择。创新互联提供完善的营销型网页建站明细报价表。后期开发更加便捷高效,我们致力于追求更美、更快、更规范。
可以用坐标来完成
用数组来记录坐标
棋谱代码 我想是靠自己写吧
比如
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 '保持不变 意思就是不能左右移动,当用鼠标指定他的位子就可以上前一步
ElseIf Picture1(1).Top = 700 Then '已经过河
'可以就解除限制
End If
End If
End Sub
'还要判断你指定位子的坐标,是否远远超过一步距离,或远远小于一步距离
'可以用所画的线来判断位子
实际代码不是这样写的
只是希望你明白这个道理
贴保存棋局和读取棋局部分的,你先看看:
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 "当前棋局已成功保存!", , "中国象棋"
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
记得以前上学的时候做过的,个人推荐:
先用线条画出棋盘,然后在棋盘的90的点都画好棋子(可以用image控件画圆,lable控件显示棋子内容),并编成10*9的二维数组,利用控件image的visible属性控制是否显示,控件lable控制显示的内容。
个人认为这个应该比利用坐标让控件移动的方法简单
不知道你是不是就画这样一个棋盘,请在窗体上加入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的书先扫扫忙再说吧。先明白界面怎么做,再去研究人工智能,以确定走哪一步棋。要向自己写出这东西非一日之功也