📄 五子棋代码.txt
字号:
///////////////////////////////////////////////////////////////////////
//五子棋代码
//
//使用的控件及名称:
//
// 窗体:Form 名称:Frm
// 棋盘控件:PictrueBox 名称:picQiPan
// 位置标识控件:Shape 名称:Shp
// 按钮控件:CommandButton 名称:Cmd
// 提示信息控件:Label 名称:LblTip
// 提示坐标控件:Label 名称:LblPos
//
//判断胜负的函数名称:
// WhoIsWin(x,y,who)
///////////////////////////////////////////////////////////////////////
'以下为代码部分,设置好控件的名称后,粘贴到代码编辑器中,即可。
Private mD As Integer '棋子网格宽度
Private mL As Integer '棋盘边长网格数
Private mBOrW As Boolean '当前棋子的颜色(真-黑,假-白)
Private mX As Integer '当前棋盘上的位置X
Private mY As Integer '当前棋盘上的位置Y
Private Sub Cmd_Click() '点击开始按钮
Dim i As Integer
Dim j As Integer
DrawQiPan '画棋盘
'初始化棋盘数组(清零)
For i = 0 To 19
For j = 0 To 19
mArray(i, j) = 0
Next j
Next i
End Sub
Private Sub Form_Resize() '初始化窗体
mD = 300 '每一个网格的宽度为300像素
mL = 19 '每一边长有19网格
'标识位置的图形框的尺寸
Shp.Width = mD '宽度
Shp.Height = mD '高度
'棋盘控件的位置和大小
With picQiPan
'左上角的位置
.Left = 0
.Top = 0
'内部的宽度和高度
.ScaleWidth = mD * (mL + 1)
.ScaleHeight = mD * (mL + 1)
End With
Cmd_Click
End Sub
Public Sub DrawQiPan() '绘制棋盘
Dim i As Integer
mBOrW = True '开始为黑方
picQiPan.Cls '清空棋盘的内容
'画水平线
For i = 1 To 19
picQiPan.Line (mD, i * mD)-(mD * mL, i * mD), vbBlack
Next i
'画垂直线
For i = 1 To 19
picQiPan.Line (i * mD, mD)-(i * mD, mD * mL), vbBlack
Next i
'将标识位置的图形框定位棋盘中心
Shp.Left = mD * 10 - mD / 2
Shp.Top = mD * 10 - mD / 2
picQiPan.FillStyle = 0 '填充风格(实心)
picQiPan.FillColor = vbBlack '填充颜色
'画出9个星位
picQiPan.Circle (4 * mD, 4 * mD), mD / 10, vbBlack '位置(4,4)
picQiPan.Circle (10 * mD, 10 * mD), mD / 10, vbBlack '位置(10,10)
picQiPan.Circle (10 * mD, 4 * mD), mD / 10, vbBlack '位置(10,4)
picQiPan.Circle (4 * mD, 10 * mD), mD / 10, vbBlack '位置(4,10)
picQiPan.Circle (4 * mD, 16 * mD), mD / 10, vbBlack '位置(4,16)
picQiPan.Circle (16 * mD, 4 * mD), mD / 10, vbBlack '位置(16,4)
picQiPan.Circle (16 * mD, 10 * mD), mD / 10, vbBlack '位置(16,10)
picQiPan.Circle (10 * mD, 16 * mD), mD / 10, vbBlack '位置(10,16)
picQiPan.Circle (16 * mD, 16 * mD), mD / 10, vbBlack '位置(16,16)
End Sub
Private Sub picQiPan_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim mColor As Long '当前的颜色
'鼠标左键按下,限制标识位置的图形框在棋盘中
If Button = 1 And mX > 0 And mY < 20 And mY > 0 And mY < 20 Then
If mArray(mX, mY) <> 0 Then
MsgBox "此处已经落子,请在别处下子!", vbInformation, "提示"
Else
mColor = IIf(mBOrW, vbBlack, vbWhite) '得到当前的颜色
picQiPan.FillStyle = 0 '填充的风格(实心)
picQiPan.FillColor = mColor '填充的颜色
'在当前的位置上画园,代表棋子,棋子半径为0.4网格宽度
picQiPan.Circle (mX * mD, mY * mD), mD * 2 / 5, mColor
mArray(mX, mY) = IIf(mBOrW, 1, -1) '保存到数组中
'判断是否胜利,WhoIsWin=0,代表继续下棋
If WhoIsWin(mX, mY, IIf(mBOrW, 1, -1)) <> 0 Then
MsgBox "恭喜你。你赢了!", vbInformation, "胜利" '提示胜利方
LblTip.Caption = IIf(mBOrW, "黑", "白") & "方胜利!" '显示胜利方
Else
mBOrW = Not mBOrW '交换下子
LblTip.Caption = IIf(mBOrW, "黑", "白") & "方思考中......" '显示正在思考方
End If
End If
End If
End Sub
Private Sub picQiPan_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
'计算当前棋盘上的位置
mX = (x - x Mod mD) / mD
mY = (y - y Mod mD) / mD
'显示当前棋盘上的位置
LblPos.Caption = "当前位置:(" & mX & "," & mY & ")"
'显示当前棋盘上的位置
If mX > 0 And mX < 20 And mY > 0 And mY < 20 Then '限制标识位置的图形框在棋盘中
Shp.Left = mX * mD - mD / 2
Shp.Top = mY * mD - mD / 2
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -