導航:首頁 > 編程知識 > 如何用vb編程井字棋

如何用vb編程井字棋

發布時間:2023-02-12 04:25:28

Ⅰ 請電腦高手幫忙解釋一下下面的一段用vb編的程序,關於井字棋游戲的演算法。

這么長一段代碼,都給你解釋,LZ真不怕把人累死,問問題不是這么問的。。。

Ⅱ 怎麼用VB編井字棋人機

定義棋盤格子數據結構
Private Type Wells
Wells_X As Long
Wells_Y As Long
Wells_Value As Integer
End Type

定義棋盤格子的實例數組
Private usrWells(1 To 9) As Wells

定義響應點擊操作的邏輯棋盤格子代號數組
Private intWellsIndex(1 To 3, 1 To 3) As Integer

Ⅲ vb井字游戲的程序怎麼寫

在from中放8個command控制項組成一組,再放一個command控制項,名為"重來",見圖,復制如下代碼

玩法:輪流用滑鼠點擊相應數字的格子,當O或X橫豎斜排成一線就算贏了。

Dimox(3,3)AsInteger

DimconditionAsInteger

DimresultAsInteger

PrivateSubCommand2_Click()

Dimi,jAsInteger

result=0:condition=0

Fori=0To8

Command1(i).Caption=""

Command1(i).Enabled=True

Nexti

Fori=0To2

Forj=0To2

ox(i,j)=0

Nextj

Nexti

EndSub

PrivateSubForm_Load()

Dimi,jAsInteger

condition=0:result=0

Fori=0To2

Forj=0To2

ox(i,j)=0

Nextj

Nexti

EndSub

PrivateSubCommand1_Click(IndexAsInteger)

Dimi,jAsInteger

DimoverAsBoolean

i=Index3

j=IndexMod3

Ifox(i,j)=0Then

Ifcondition=0Then

Command1(Index).Caption="O"

condition=1

ox(i,j)=1

Else

Command1(Index).Caption="X"

condition=0

ox(i,j)=2

EndIf

Rem判斷是否連成一線

Fori=0To2

Ifox(0,i)=1Andox(1,i)=1Andox(2,i)=1Then

result=1

EndIf

Ifox(i,0)=1Andox(i,1)=1Andox(i,2)=1Then

result=1

EndIf

Ifox(0,i)=2Andox(1,i)=2Andox(2,i)=2Then

result=2

EndIf

Ifox(i,0)=2Andox(i,1)=2Andox(i,2)=2Then

result=2

EndIf

Nexti

Ifox(0,0)=1Andox(1,1)=1Andox(2,2)=1Then

result=1

EndIf

Ifox(0,0)=2Andox(1,1)=2Andox(2,2)=2Then

result=2

EndIf

Ifox(0,2)=1Andox(1,1)=1Andox(2,0)=1Then

result=1

EndIf

Ifox(0,2)=2Andox(1,1)=2Andox(2,0)=2Then

result=2

EndIf

Ifresult=1Then

MsgBox"O贏了"

EndIf

Ifresult=2Then

MsgBox"X贏了"

EndIf

Ifresult<>0Then

Fori=0To8

Command1(i).Enabled=False

Nexti

Else

over=True

Fori=0To2

Forj=0To2

Ifox(i,j)=0Then

over=False

EndIf

Nextj

Nexti

IfoverThen

MsgBox"結束"

EndIf

EndIf

EndIf

EndSub

Ⅳ vb井字棋怎麼做

下載上面的圖,文件後綴改成rar,解壓出來就是源代碼

Ⅳ 關於編寫井字棋的問題

用坐標判斷,比如說是0,0 0,1 0,2 1,0 1,1

如果兩個點的x或y坐標相等,則在一條直線上,需要封堵。
或者|x1-x2|=|y1-y2|,剛在一條斜線上,需要封堵。

Ⅵ vb6.0 need help

代碼太長,發不了,,你加我吧,,Q號就是我的名字的連接地址最後的數字型大小

Ⅶ VC++ 編程題 "井字棋"游戲設計(高手請進)

#include <stdio.h>
#include <stdlib.h> #define SIZE 3
typedef enum {CBLANK, CBLACK, CWHITE} CHESS;
typedef enum {GM_WIN, GM_LOST, GM_UNKNOW, GM_ERROR} GAMEFLAG;void init_board(CHESS board[SIZE][SIZE]) //初始化
{
int i, j;
for (i = 0; i < SIZE; i++)
{
for (j = 0; j < SIZE; j++)
{
board[i][j] = CBLANK;
}
}
}void print_chess(CHESS board[SIZE][SIZE]) //列印棋盤
{
int i, j;

putchar(' ');
for (i=0; i < SIZE; i++)
{
printf("%2d", i+1);
}
putchar('\n');

for (i=0; i < SIZE; i++)
{
printf("%-2d", i+1);
for (j=0; j < SIZE; j++)
{
switch (board[i][j])
{
case CWHITE:
putchar('O');
break;
case CBLACK:
putchar('*');
break;
case CBLANK:
putchar('_');
break;
default:
putchar('?');
break;
}
putchar(' ');
}
putchar('\n');
}
}void swc(CHESS chess, int *black, int *white, int *bmax, int *wmax) //判斷
{
switch (chess)
{
case CBLACK:
*white = 0;
(*black)++;
break;
case CWHITE:
*black = 0;
(*white)++;
break;
case CBLANK:
*black = 0;
*white = 0;
break;
default:
break;
} if (*black > *bmax) *bmax = *black;
if (*white > *wmax) *wmax = *white;
}
GAMEFLAG res(CHESS board[SIZE][SIZE]) //判斷輸贏
{
int i, j;
int win[4] = {0, 0, 0, 0};
int rblack, rwhite, cblack, cwhite,
loblack = 0, lowhite = 0,
roblack = 0, rowhite = 0,
bmax = 0, wmax = 0; for (i=0; i < SIZE; i++)
{
rblack = 0;
rwhite = 0;
cblack = 0;
cwhite = 0; swc(board[i][i], &loblack, &lowhite, &bmax, &wmax);
swc(board[i][SIZE-i-1], &roblack, &rowhite, &bmax, &wmax); for (j=0; j < SIZE; j++)
{
swc(board[i][j], &rblack, &rwhite, &bmax, &wmax);
swc(board[j][i], &cblack, &cwhite, &bmax, &wmax); } } if (bmax >= 3)
{
if (wmax >= 3)
{
return GM_ERROR;
}
else
{
return GM_WIN;
}
}
else
{
if (wmax >= 3)
{
return GM_LOST;
}
else
{
return GM_UNKNOW;
}
}}int move(CHESS board[SIZE][SIZE], CHESS chs, int x, int y)
{
int bs = 1;
if (board[x][y])
bs = 0;
else if (y >= SIZE || y < 0 || x >= SIZE || x < 0)
bs = 0;
else
board[x][y] = chs;

return bs;
}int main()
{
CHESS b[SIZE][SIZE];
char *msg[] = {"BLACK WIN!\n", "WHITE LOST!", "NOT YET", "ERROR!!"};
char *plr[] = {"NON", "BLACK", "WHITE"};
CHESS p = CBLACK;
GAMEFLAG flg;

init_board(b);
while ((flg = res(b)) == GM_UNKNOW)
{
int x, y, bmv = 1;
system("cls");
print_chess(b);
while (bmv)
{
printf("%s回合,輸入坐標:", plr[p]);
scanf("%d%d", &x, &y);
bmv = !move(b,p,x-1,y-1);
}
p = (CHESS)(CWHITE + CBLACK - p);
}

printf("%s", msg[flg]);
system("pause");

return 0;
}

Ⅷ 用VB做井字過三關中的一個問題

按你這樣寫的話,你有想過有多少組可以進行勝利呢??
橫的,豎的,斜的,而你這這樣的話只有一種情況.?
而且你的代碼有錯.
【設計思路】

首先,我們要知道,「井字棋」游戲是一款典型的棋類游戲,游戲時一方式是電腦,另一方是玩家。所以,這類游戲在開始時有兩種方式:一種是玩家先走;另一種是電腦先走。這是我們要考慮的第一個問題。

其次,由於與玩家對戰的是計算機,所以我們要編寫一個過程(出棋),它可以使程序模擬人的思維與人下棋(其實就是「人工智慧」的體現),這個Chuqi過程也是本游戲軟體的關鍵。此外,我們還要編寫兩個過程(連線和輸贏),連線過程用來時刻判斷棋盤中是否有三個棋子連成一線;輸贏過程用來判斷如果有三個棋子連成一線,是哪一方連成一線的,即判斷哪一方獲勝。
以上幾個問題就是該「井字棋」游戲實現的關鍵思路

定義棋盤格子數據結構
Private Type Wells
Wells_X As Long
Wells_Y As Long
Wells_Value As Integer
End Type

定義棋盤格子的實例數組
Private usrWells(1 To 9) As Wells

定義響應點擊操作的邏輯棋盤格子代號數組
Private intWellsIndex(1 To 3, 1 To 3) As Integer

定義玩家的玩過的盤數和積分
Private lngPlayerTurn As Integer, lngPlayerScore As Long

定義游戲開始標志
Private blnGameStart As Boolean

定義玩家勝利和失敗標志
Private blnPlayerWin As Boolean, blnPlayerLost As Boolean

定義枚舉常量標識玩家類型
Private Enum Player
MAN = 0
COMPUTER = 1
End Enum

該過程用於顯示游戲信息
Private Sub Form_Load()
Me.Show
Me.Caption = "BS井字游戲 — (版本 " & App.Major & "." & App.Minor & "." & App.Revision & ")"
End Sub

該過程用於重新開始開始游戲
Private Sub cmdGameStart_Click()
blnGameStart = True
lngPlayerTurn = lngPlayerTurn + 1
Me.picWells.Cls
Call subGameInitialize
Call subScreenRefresh
End Sub

該過程用於顯示游戲規則
Private Sub CmdGameRules_Click()
Beep
MsgBox " BS井字游戲:一個最簡單的智力游戲,您將與機" & Chr(13) & _
"器在9個格子大小的棋盤上一決高下。由您先開始" & Chr(13) & _
"和機器輪流,每次在任意的空格上下一枚棋子。先" & Chr(13) & _
"在棋盤上橫向、縱向或對角線上排成三枚相同棋子" & Chr(13) & _
"的一方即可獲得游戲的勝利,祝您好運!!", 0 + 64, "游戲規則"
End Sub

該過程用於顯示游戲開發信息
Private Sub cmdAbout_Click()
Beep
MsgBox "BS井字游戲" & "(V-" & App.Major & "." & App.Minor & "版本)" & Chr(13) & Chr(13) & _
"" & Chr(13) & Chr(13) & _
"由PigheadPrince設計製作" & Chr(13) & _
"CopyRight(C)2002,BestSoft.TCG", 0, "關於本游戲"
End Sub

該過程用於退出遊戲
Private Sub cmdExit_Click()
Beep
msg = MsgBox("您要退出本游戲嗎?", 4 + 32, "BS井字游戲")
If msg = 6 Then End
End Sub

該過程用於實現玩家向井字棋盤中下棋子
Private Sub picWells_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lngGetWells_X As Long, lngGetWells_Y As Long
Dim blnWellsNotFull As Boolean
If Not blnGameStart Then Exit Sub
lngGetWells_X = Int(Y / (Me.picWells.Height / 3)) + 1
lngGetWells_Y = Int(X / (Me.picWells.Width / 3)) + 1
If usrWells(intWellsIndex(lngGetWells_X, lngGetWells_Y)).Wells_Value = 0 Then
usrWells(intWellsIndex(lngGetWells_X, lngGetWells_Y)).Wells_Value = 1
Me.picWells.PaintPicture Me.imgChequer(MAN).Picture, _
usrWells(intWellsIndex(lngGetWells_X, lngGetWells_Y)).Wells_X, _
usrWells(intWellsIndex(lngGetWells_X, lngGetWells_Y)).Wells_Y, _
Me.picWells.Width / 3, Me.picWells.Height / 3
If funPlayerWinIF(MAN) Then
Beep
MsgBox "恭喜,您勝利了!", , "BS井字游戲"
lngPlayerScore = lngPlayerScore + 100
Call subScreenRefresh
blnGameStart = False
Else
blnPlayerTurn = False
For i = 1 To 9
If usrWells(i).Wells_Value = 0 Then blnWellsNotFull = True
Next i
If blnWellsNotFull Then
Call subComputerDoing
Else
Beep
MsgBox "和局!", , "BS井字游戲"
blnGameStart = False
End If
End If
End If
End Sub

該自定義子過程用於游戲數據初始化
Private Sub subGameInitialize()
intWellsIndex(1, 1) = 1
intWellsIndex(1, 2) = 2
intWellsIndex(1, 3) = 3
intWellsIndex(2, 1) = 4
intWellsIndex(2, 2) = 5
intWellsIndex(2, 3) = 6
intWellsIndex(3, 1) = 7
intWellsIndex(3, 2) = 8
intWellsIndex(3, 3) = 9
For i = 1 To 7 Step 3
usrWells(i).Wells_X = 0
Next i
For i = 2 To 8 Step 3
usrWells(i).Wells_X = Me.picWells.Width * (1 / 3)
Next i
For i = 3 To 9 Step 3
usrWells(i).Wells_X = Me.picWells.Width * (2 / 3)
Next i
For i = 1 To 3 Step 1
usrWells(i).Wells_Y = 0
Next i
For i = 4 To 6 Step 1
usrWells(i).Wells_Y = Me.picWells.Height * (1 / 3)
Next i
For i = 7 To 9 Step 1
usrWells(i).Wells_Y = Me.picWells.Height * (2 / 3)
Next i
For i = 1 To 9
usrWells(i).Wells_Value = 0
Next i
End Sub

該自定義子過程用於游戲開始時刷新屏幕
Private Sub subScreenRefresh()
Me.lblPlayerTurns.Caption = lngPlayerTurn
Me.lblPlayerScore.Caption = lngPlayerScore
Me.picWells.Line (0, Me.picWells.Height * (1 / 3))-(Me.picWells.Width, Me.picWells.Height * (1 / 3)), vbBlack
Me.picWells.Line (0, Me.picWells.Height * (2 / 3))-(Me.picWells.Width, Me.picWells.Height * (2 / 3)), vbBlack
Me.picWells.Line (Me.picWells.Width * (1 / 3), 0)-(Me.picWells.Width * (1 / 3), Me.picWells.Height), vbBlack
Me.picWells.Line (Me.picWells.Width * (2 / 3), 0)-(Me.picWells.Width * (2 / 3), Me.picWells.Height), vbBlack
End Sub

該自定義子過程用於執行機器的下子
Private Sub subComputerDoing()
Randomize
Dim lngGetWells_X As Long, lngGetWells_Y As Long
Dim intPCFirstWells As Integer
Dim blnPCWellsExists As Boolean
Dim intPCWells As Integer
For i = 1 To 9 Step 1
If usrWells(i).Wells_Value = -1 Then
blnPCWellsExists = True
End If
Next i
If Not blnPCWellsExists Then
GoTo GetPCFirstWells:
Else
GoTo GetPCNextWells:
End If

GetPCFirstWells: 隨機獲得機器的第一個落子位置
intPCFirstWells = Int((9 - 1 + 1) * Rnd + 1)
If usrWells(intPCFirstWells).Wells_Value <> 0 Then
GoTo GetPCFirstWells:
Else
intPCWells = intPCFirstWells
End If
GoTo GoOn:

GetPCNextWells: 獲得機器下一步的落子位置
intPCWells = funGetPCWells

GoOn: 繪制落子並判斷勝利
usrWells(intPCWells).Wells_Value = -1
lngGetWells_X = usrWells(intPCWells).Wells_X
lngGetWells_Y = usrWells(intPCWells).Wells_Y
Me.picWells.PaintPicture Me.imgChequer(COMPUTER).Picture, lngGetWells_X, lngGetWells_Y, _
Me.picWells.Width / 3, Me.picWells.Height / 3
If funPlayerWinIF(COMPUTER) Then
Beep
MsgBox "抱歉,您失敗了!", , "BS井字游戲"
lngPlayerScore = lngPlayerScore - 100
If lngPlayerScore < 0 Then lngPlayerScore = 0
Call subScreenRefresh
blnGameStart = False
Else
blnPlayerTurn = True
End If
End Sub

該自定義函數用於判斷玩家是否勝利
Private Function funPlayerWinIF(PlayerType As Integer) As Boolean
Dim intWinCase(1 To 8) As Integer
intWinCase(1) = usrWells(1).Wells_Value + usrWells(2).Wells_Value + usrWells(3).Wells_Value
intWinCase(2) = usrWells(4).Wells_Value + usrWells(5).Wells_Value + usrWells(6).Wells_Value
intWinCase(3) = usrWells(7).Wells_Value + usrWells(8).Wells_Value + usrWells(9).Wells_Value
intWinCase(4) = usrWells(1).Wells_Value + usrWells(4).Wells_Value + usrWells(7).Wells_Value
intWinCase(5) = usrWells(2).Wells_Value + usrWells(5).Wells_Value + usrWells(8).Wells_Value
intWinCase(6) = usrWells(3).Wells_Value + usrWells(6).Wells_Value + usrWells(9).Wells_Value
intWinCase(7) = usrWells(1).Wells_Value + usrWells(5).Wells_Value + usrWells(9).Wells_Value
intWinCase(8) = usrWells(3).Wells_Value + usrWells(5).Wells_Value + usrWells(7).Wells_Value
Select Case PlayerType
Case MAN
If intWinCase(1) = 3 Or intWinCase(2) = 3 Or intWinCase(3) = 3 Or intWinCase(4) = 3 Or _
intWinCase(5) = 3 Or intWinCase(6) = 3 Or intWinCase(7) = 3 Or intWinCase(8) = 3 Then
blnPlayerWin = True
blnPlayerLost = False
funPlayerWinIF = blnPlayerWin
End If
Case COMPUTER
If intWinCase(1) = -3 Or intWinCase(2) = -3 Or intWinCase(3) = -3 Or intWinCase(4) = -3 Or _
intWinCase(5) = -3 Or intWinCase(6) = -3 Or intWinCase(7) = -3 Or intWinCase(8) = -3 Then
blnPlayerWin = False
blnPlayerLost = True
funPlayerWinIF = blnPlayerLost
End If
End Select
End Function

該自定義函數用於返回機器的落子
Private Function funGetPCWells() As Integer
Dim intWells(1 To 8) As Integer, intPCRandomWells As Integer
intWells(1) = usrWells(1).Wells_Value + usrWells(2).Wells_Value + usrWells(3).Wells_Value
intWells(2) = usrWells(4).Wells_Value + usrWells(5).Wells_Value + usrWells(6).Wells_Value
intWells(3) = usrWells(7).Wells_Value + usrWells(8).Wells_Value + usrWells(9).Wells_Value
intWells(4) = usrWells(1).Wells_Value + usrWells(4).Wells_Value + usrWells(7).Wells_Value
intWells(5) = usrWells(2).Wells_Value + usrWells(5).Wells_Value + usrWells(8).Wells_Value
intWells(6) = usrWells(3).Wells_Value + usrWells(6).Wells_Value + usrWells(9).Wells_Value
intWells(7) = usrWells(1).Wells_Value + usrWells(5).Wells_Value + usrWells(9).Wells_Value
intWells(8) = usrWells(3).Wells_Value + usrWells(5).Wells_Value + usrWells(7).Wells_Value
如果任何一線已有機器的兩個子並且另外一格仍空,機器方即將成一線
機器落子的結果等於該空格
If intWells(1) = -2 Then
For i = 1 To 3 Step 1
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(2) = -2 Then
For i = 4 To 6 Step 1
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(3) = -2 Then
For i = 7 To 9 Step 1
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(4) = -2 Then
For i = 1 To 7 Step 3
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(5) = -2 Then
For i = 2 To 8 Step 3
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(6) = -2 Then
For i = 3 To 9 Step 3
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(7) = -2 Then
For i = 1 To 9 Step 4
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(8) = -2 Then
For i = 3 To 7 Step 2
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
End If
如果任何一線已有玩家方兩個子並且另外一格仍空,防止玩家方作成一線
機器落子的結果等於該空格
If intWells(1) = 2 Then
For i = 1 To 3 Step 1
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(2) = 2 Then
For i = 4 To 6 Step 1
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(3) = 2 Then
For i = 7 To 9 Step 1
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(4) = 2 Then
For i = 1 To 7 Step 3
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(5) = 2 Then
For i = 2 To 8 Step 3
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(6) = 2 Then
For i = 3 To 9 Step 3
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(7) = 2 Then
For i = 1 To 9 Step 4
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(8) = 2 Then
For i = 3 To 7 Step 2
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
End If
如果任何一線已有機器方一個子並且另外兩格仍空,作成機器方的兩個子
機器落子的結果等於該空格
If intWells(1) = -1 Then
For i = 1 To 3 Step 1
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(2) = -1 Then
For i = 4 To 6 Step 1
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(3) = -1 Then
For i = 7 To 9 Step 1
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(4) = -1 Then
For i = 1 To 7 Step 3
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(5) = -1 Then
For i = 2 To 8 Step 3
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(6) = -1 Then
For i = 3 To 9 Step 3
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(7) = -1 Then
For i = 1 To 9 Step 4
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
ElseIf intWells(8) = -1 Then
For i = 3 To 7 Step 2
If usrWells(i).Wells_Value = 0 Then
funGetPCWells = i
Exit Function
End If
Next i
End If
面臨和局,隨機在空白的格子內落子
GetRandomWells:
Randomize
intPCRandomWells = Int((9 - 1 + 1) * Rnd + 1)
If usrWells(intPCRandomWells).Wells_Value = 0 Then
funGetPCWells = intPCRandomWells
Else
GoTo GetRandomWells:
End If
End Function

Ⅸ 用VB設置井字棋程序並給出代碼注釋

代碼:
Private Sub command1_Click()
ChessBoard.Enabled = True
Command1.Enabled = False
DrawChessBoard
If MsgBox("你要先行嗎?", vbInformation + vbYesNo, "提示") = vbNo Then
Compute
End If
End Sub
Private Sub DrawChessBoard()
Dim x As Long, y As Long
ChessBoard.Cls
For x = 1000 To 3000 Step 1000
For y = 1000 To 3000 Step 1000
ChessBoard.Line (x, 0)-(x, y)
ChessBoard.Line (0, y)-(x, y)
Next
Next
End Sub
Private Sub DrawChess(ByVal x As Long, ByVal y As Long, ByVal who As Boolean)
If who = 0 Then ChessBoard.FillColor = vbBlue Else ChessBoard.FillColor = vbRed
ch(x, y) = True
x = x - 1: y = y - 1
ChessBoard.Circle (x * 1000 + 500, y * 1000 + 500), 300, vbWhite
End Sub
Private Sub Compute()
If IsEnded Then
MsgBox "和棋了!", vbInformation, "提示"
ReInit
Exit Sub
End If
Dim x As Long, y As Long, cnum As Integer
'進攻
'\\\\\
For x = 1 To 3
y = x
If ch(x, y) = 1 Then Exit For
If ch(x, y) = 2 Then cnum = cnum + 1
Next
If cnum = 2 Then
For x = 1 To 3
y = x
If ch(x, y) = 0 Then Call Win(x, y): Exit Sub
Next

Ⅹ vb編寫井字棋

Rem 棋盤初始化
Private Sub gameInit()
Dim k As Integer

For k = 0 To 8
a(k \ 3, k Mod 3) = 0
Next
mnuRed.Enabled = True
mnuBlue.Enabled = True
Me.Caption = IIf(rbFirst, "井字棋:現在是紅方先走!", "井字棋:現在是藍方先走!")
Call Picture1_Paint
End Sub

Rem 棋局結束
Private Sub gameOver(ByVal result As String, k As Integer)
MsgBox result
k = 0
Call gameInit
End Sub

完整的代碼已經給你了

閱讀全文

與如何用vb編程井字棋相關的資料

熱點內容
win10系統有沒有便簽 瀏覽:722
java引用傳遞和值傳遞 瀏覽:109
oracle下載安裝教程 瀏覽:854
php篩選資料庫 瀏覽:830
怎麼用手機看wlan密碼 瀏覽:745
奧維地圖導入的文件在哪裡 瀏覽:364
sdltrados2014教程 瀏覽:43
培訓制度文件在哪裡找 瀏覽:601
勒索病毒防疫工具 瀏覽:861
win10c不能打開 瀏覽:375
xfplay影音先鋒蘋果版 瀏覽:597
兩個文件打開兩個word 瀏覽:921
蘋果6s桌面圖標輕微抖動 瀏覽:326
如何刪除手機中看不見的臨時文件 瀏覽:469
安卓412原生鎖屏apk 瀏覽:464
書加加緩存文件在哪裡 瀏覽:635
dock是word文件嗎 瀏覽:267
社保公司新辦去哪個網站下載資料 瀏覽:640
三維標注數據怎麼填寫 瀏覽:765
數據線斷在哪裡取出來 瀏覽:522

友情鏈接