通訊機制與流程圖

遊戲規則:
兩個玩家先各自設定四個不重複的阿拉伯數字作為讓對方猜測的密碼,對方猜測時也必須提出四個不重複的數字,與設定密碼比對,如果數字與位置都正確時回應提示是"A",數字存在密碼中但位置不正確回應提示"B",如回應"4A"就是完全正確,答對了!兩人輪流猜對方數字,先猜對為贏!

表單設計

請依序加入上列物件,文字方塊依序為TextBox1~5,啟動鍵為Button1,送出鍵為Button2。

繼承不變的程式碼
以下幾個程式單元與之前的單元相同,直接打開舊專案複製即可。
首先是匯入的命名空間

接著是啟動監聽的程式

在啟動按鍵程式中會呼叫Listen副程式,你可以先建立一個程式框架,以免一直受錯誤提示困擾,如:
Private Sub Listen
End Sub
在接下來的幾個單元中Listen副程式都是資訊交換的中心,也是因應程式功能不同主要設計的核心。
如果你需要與同學互傳訊息測試時可以加入以下Form_Load程式,你的IP就會顯示於標題列了!


發送猜測的數字

1.送出數字前先檢查是不是4個字
2.再檢查四個字有無重複?不同位置的數字如果有相同就是重複了!
3.用Send函數送出字串,這部分與之前的即時通單元相同,應無須解釋。

檢查對應參數的程式

1. 宣告A與B變數累計全對與半隊的數字個數
2.拆解猜的數字與答案為字元陣列C與D
3.交叉比對C與D,位置與數字皆同A加一,數字同位置不同B加一。
4.回傳字串"?A?B"。

監聽與回應的程式

監聽副程式其實會收到兩種訊息,一種是對方猜測的數字,另一種則是對方回應你的猜測答案是『幾A幾B』的提示!
這兩種情況都是四個字元,我們在此直接辨識第二字元是不是"A",如果是的話就是回應提示,如果不是當然就是對方在猜數字了!如果是回應提示,先將提示寫到ListBox2做繼續猜的參考,進一步看是不是"4A"?如果是!就是贏了!
另一方面,如果是對方猜數字,就要先呼叫 chk程式檢查回應提示,並將結果傳回對方,當然如果答案顯示是"4A"表示你的密碼已經被猜到,就是輸了!
輪替控制
此處還有一個控制輪替順序的機制一旦你猜過一次,送出鍵(Button2)會暫時失效,就是:
Button2.Enabled = False
等對方猜過之後才恢復功能:
Button2.Enabled = True
這樣就可以達到一人猜一次的目的了!