程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 關於《黑白棋》的開發文檔和使用說明

關於《黑白棋》的開發文檔和使用說明

編輯:關於VC++

本程序是在已有的《黑白棋》基礎上實現的網絡版,通過Winsocket實現了進程的同步。如圖一:

圖一

本源程序有比較詳細的注釋,適合於大家參考。整個程序分為如下幾個部分:

一、應用程序的框架結構

本程序采用的是基於對話框的體系結構,整個程序由應用程序對象(CBWChessApp theApp;)和主對話框(CBWChessDlg dlg;)構成;程序的主要操作都是在主對話框下完成的。

二、本程序的功能模塊

本程序分為三個主要的功能模塊:

1、與計算機對弈

本模塊在這方面只實現了簡單的功能,采用 的隨機算法加簡單的分析,因此棋力 比較差,有待於今後進一步的改進。

2、與人對弈

由於該模塊是要實現在同一台計算機上同一個程序上實現兩個人的對弈,因此設計原理比較簡單,功能也比較單一。

3、連網對弈

本模塊最復雜,也是本程序的重點。本模塊的實現主要基於如下幾個方面:

(1)、進程同步的實現。由於對弈雙方在不同的計算機上執行本程序,為了使程序正確的執行,需要保證雙方的程序(即進程)
    始終保持同步。
(2)、網絡的連接和進程間的通訊。要實現網上對弈,首先要保證兩個進程在網上建立連接。本模塊采用基於
    Winsocket(wsock32.lib和mpr.lib)類的網絡連接和通訊。
(3)、數據格式的定義和交換。本模塊預定義了一個1024字節的緩沖區和四個控制信號(CMD_SKIP ,CMD_OVER ,CMD_RESIGN,
    CMD_CLICK)。數據的格式是一次傳10個字節,其中前3個有效,分別表示信號量、x坐標和y坐標,後7個是校驗字節
    (備用)。

三、關於本程序幾個關鍵部分的說明

由於本程序在代碼中加入了比較詳細的說明,在這裡只就其中幾個關鍵的函數或類進行說明:

關於函數(int BtoW(int x1,int y1,int flag);)的說明,本函數是本程序的核心,其主要功能是在一方放下一顆子之後,將對方的棋子進行翻轉,采用的算法是從棋子( x1, y1)出發,向8個方向進行掃描,並將夾住的子進行翻轉。

關於繪圖函數DrawBitmap的說明,本函數主要是將位圖畫在主界面上,從而實現棋盤的繪制和更新。

關於函數Ring的說明,本函數是在棋盤翻轉之後,對棋盤進行統計和分析,同時作必要的處理,如游戲是否結束,對方是否要連走等。

關於類CConnection 和CNetworking的說明,這兩個類一個是用來建立連接對象,一個是用於建立服務器對象。這兩個類將一些必要的網絡操作封裝在一起,完全將連接對象化,不需要窗口就可以處理網絡消息,本程序同時還通過定義回調函數,實現數據到來時的自動處理,簡化了數據處理的過程。

關於多線程的使用。為了實現輸入和數據的處理,同時為了防止因等待輸入而發生程序凍結的狀態,提高程序執行的效率,本程序采用了多線程機制。派生的子線程主要有:用來登錄服務器的登錄線程;用來監聽端口的服務器線程;用來接收和處理數據的網絡線程。通過多線程的使用,減少了主線程的復雜度,同時也使分工更加明確和合理。

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved