您好方法
1、首先在excel表格模式时,画两个单选框将一个按钮,然后参照我的另外一篇百度经验”怎样通过excel计算出九宫格“,双击按钮进入到代码模式。
2、图中红色宽中主要讲述对棋盘的设置;
图中红色所讲述的是,在表1被激活时,单选框1被选中;
3、图中红色所讲述的是,若单选框1被选中时,鼠标所选的单元格被赋值为实心圆,赋值后,更换为单选框2被选中;若当单选框2被选中时,鼠标所选的单元格被赋值为空心圆,赋值后,更换为单选框1被选中。到此时五子棋的下子程序已经完成了,剩余判断胜负的程序了。
我把判断胜负的程序,分为了4部分;
判断竖直胜利部分;
判断水平胜利部分;
判断左倾斜胜利部分;
判断右倾斜胜利部分;
如何在excel中制作五子棋!
每一部分原理都类似,这里只讲述竖直胜利的情况。
判断竖直胜负的原理:当黑子方走完最后一颗实心黑子时,只要判断以该颗棋子为中心的9颗竖直排列的棋子中,是否有5颗连续为实心黑子,若有,则胜利;
如何在excel中制作五子棋!
7
所有程序:
PrivateSubCommandButton1_Click()
Range(E5:AD30).ClearContents
WithRange(E5:AD30).Font
.Name=宋体
.FontStyle=bold
.Size=12
EndWith
WithActiveSheet.Cells
.ColumnWidth=2.5
.RowHeight=17.5
EndWith
EndSub
PrivateSubWorksheet_Activate()
OptionButton1.Value=True
EndSub
PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)
'五子棋部分
IfActiveCell.Row4AndActiveCell.Column4Then
IfOptionButton1.Value=TrueAndActiveCell.Value=Then
ActiveCell.Value=●
OptionButton2.Value=True
ElseIfOptionButton2.Value=TrueAndActiveCell.Value=Then
ActiveCell.Value=○
OptionButton1.Value=True
EndIf
a=0
'判断竖胜部分
Fori=-4To4
IfSheet1.Cells(ActiveCell.Row,ActiveCell.Column-i)=ActiveCell.ValueThen
a=a+1
Else
a=0
EndIf
Ifa=5Then
IfActiveCell.Value=●Then
MsgBox黑方胜
Range(E5:AD30).ClearContents
Else
MsgBox白方胜
Range(E5:AD30).ClearContents
EndIf
ExitFor
EndIf
Next
'判断横胜部分
Fori=-4To4
IfSheet1.Cells(ActiveCell.Row-i,ActiveCell.Column)=ActiveCell.ValueThen
a=a+1
Else
a=0
EndIf
Ifa=5Then
IfActiveCell.Value=●Then
MsgBox黑方胜
Range(E5:AD30).ClearContents
Else
MsgBox白方胜
Range(E5:AD30).ClearContents
EndIf
ExitFor
EndIf
Next
'判断左斜胜部分
Fori=-4To4
IfSheet1.Cells(ActiveCell.Row-i,ActiveCell.Column-i)=ActiveCell.ValueThen
a=a+1
Else
a=0
EndIf
Ifa=5Then
IfActiveCell.Value=●Then
MsgBox黑方胜
Range(E5:AD30).ClearContents
Else
MsgBox白方胜
Range(E5:AD30).ClearContents
EndIf
ExitFor
EndIf
Next
'判断右斜胜部分
Fori=-4To4
IfSheet1.Cells(ActiveCell.Row+i,ActiveCell.Column-i)=ActiveCell.ValueThen
a=a+1
Else
a=0
EndIf
Ifa=5Then
IfActiveCell.Value=●Then
MsgBox黑方胜
Range(E5:AD30).ClearContents
Else
MsgBox白方胜
Range(E5:AD30).ClearContents
EndIf
ExitFor
EndIf
Next
EndIf
EndSub