2012-06-19 45 views
0

我想在Visual Basic中製作一個國際象棋多人遊戲。它是一個雙方球員,將以正常方式進行比賽,甚至不會通過局域網進行比賽。
到目前爲止,我已經完成了設計板。製作一個國際象棋多人遊戲

我的邏輯是:
首先,單擊任何方塊時,單擊事件處理程序將檢查一個塊是否駐留在該方塊上。如果沒有,那麼它檢查是否要將一塊移動到該方塊。如果兩者都是消極的,那麼它什麼也不做。

現在,問題是,我如何編碼點擊事件?此外,我已經使用2維陣列表示了該板。但是如何在每一步之後更新職位?我如何檢查合法移動是否正在執行?我想添加的另一件事是每當點擊一個片段時,應該突出顯示可能的合法正方形。

爲此,我所做的是,對於任何廣場上的每個點擊事件,它都會檢查是否有一塊。如果有一個片斷,那麼它會使用If-Else-If邏輯突出顯示該片段的所有可能移動,但事實證明過於繁瑣和太長。另一個問題是,我怎麼知道,如果用戶點擊一個空的方塊來移動那塊?

請幫幫我。

+0

請說明您使用的語言。你標記了'VBA',但是這個問題只提到了「Visual Basic」。如果是VB而不是VBA,我們是在說VB6還是VB.NET? – psubsee2003

+0

我的意思是VB.Net。我認爲在標記VBA方面肯定是錯誤的。抱歉。 –

回答

1

「但是如何在每次移動後更新位置?

當一塊即將被感動:

檢查一塊可以像移動。 (如主教只能對角移動)

檢查您的團隊棋子是否不在您要移動的位置。

在移動已經發生的地方製作第二個陣列。

檢查此舉是否合法。 (輪到你,但你的王殺死,能夠與一個移動)

要檢查這一點,你需要:

爲了讓您的天王位置

然後查找所有可能的行動對手

檢查一個舉動是否可以降落在你的國王位置。

+0

我創建了一個名爲position的數組,它存儲了棋子在起始位置的位置。但是如何在之後更新?其實,我正在獲得邏輯,但我在實際實施中遇到問題。 –

+0

如果移動是合法的:將當前位置的內容保存在變量中,刪除當前位置的內容並將變量的內容複製到新位置。 – Dzha

+0

但是,如何檢查它是否合法?你可以給我代碼嗎? –

0

這個問題是不是真的很適合堆棧溢出,但我會給你一個指針:

你需要創建一個名爲ChessPiece

這將有像IsWhiteLocationXLocationY屬性的類存儲在董事會和PieceType其當前位置,這將是這樣一個枚舉:

Public Enum ChessPieceType 
    King 
    Queen 
    Bishop 
    Pawn 
    'etc 
End Enum 

您需要建立某種形式的ar這些課程可以讓你在棋盤上有一個棋子,並且你可以在比賽開始時手動設置這些位置。

當用戶試圖移動一塊您檢查PieceType枚舉,以確保類型棋子實際上可以搬到那裏,然後檢查有沒有自己的對等方等作品之一