天天看點

結對作業

一、實驗分析

本系統主要有以下4個子產品,每個子產品對應一個程式包:

1、engine:搜尋引擎包,系統的核心部分。

2、message:網絡對戰過程中各種消息及其傳遞機制的類實作包。

3、main:主界面實作包。

4、pieces:棋子及其相關類實作包。

現就各個包中的要點給與說明。

二、項目功能

A、象棋對弈:紅方先走,然後黑方再走,紅黑交替,直到一方獲勝。

B、新遊戲:任何時候可以重新開始一盤新的對弈。

C、悔棋:當走錯棋的時候可以悔棋。

D、資訊提示:提示目前資訊狀态。

E、簡單的幫助文檔:象棋規則介紹、軟體的簡單介紹和編制說明 

三、項目設計方案及分工

Engine:

(1) BitBoard.java:位棋盤的實作。

(2) CCEvalue.java:評價函數知識類。

(3) ChessPosition.java:動态局面類

包含對局過程中的動态資訊,主要實作的是各類位棋盤和移子函數。

(4) MoveStruct.java:着法表示類。

(5) PreMove.java:僞合法着法生成子產品。

(6) MoveSortStruct.java:合法着法的生成及其排序算法。

(7) SearchMove.java:搜尋算法。

Message:

在對弈過程中(主要是網絡對弈)需要在對弈雙方之間傳輸各類資訊,抽象為各類消息。如時間規則的協定、各方的走子資訊等。每方都有消息接收、消息處理和消息發送程式(OuterMsgReceiver、LocalMsgReceiver,QzMessageHandler,MessageSender)。己方的MessageSender與對方的OuterMsgReceiver通過接口SrConnection連接配接。所有接收的消息放入消息隊列QzMsgQueue中,等待消息處理程序QzMessageHandler來處理。所有的消息都封裝在QzMessage類對象中,消息的類型通過消息的Header類型(以靜态常量存放在MsgHeader類中)來區分。

Pieces:

Qizi.java包含棋子的資訊,如棋子的(在棋盤上的)位置、圖檔、名稱、類型、狀态等。PiecesFactory.java以“工廠”模式提供根據棋子類型或其他資訊生成相關Qizi對象的方法。

Main:

(1) NewBoard.java:棋盤坐标系統及其界面的實作。

(2) CChessApp.java:主界面類,以内部類實作了QzMessageHandler接口、計時規則TimeRule接口以及事件的處理程式,根據需要生成其他的并發線程如消息接收、處理和發送,機器思考(啟動搜尋引擎),計時顯示等。

(3) SetRuleDialog.java:設定規則的對話框。

(4) SetSysInfoDialog.java:設定系統的一些屬性如對戰模式、連接配接端口等。

(5) Translation.java:提供了一系列實用方法主要有:

1)FEN串與局面ChessPosition對象之間的轉換

2)不同着法表示(見第一章)之間的轉換。如“炮二平五”與“Ch2-e2”及“62.5或C2.5“(C和6代表炮)這幾種表示法之間的轉換

3)棋譜檔案的讀入和存儲。

4)開局庫的生成:将近年實戰的棋譜檔案(可能有幾種格式)整理生成開局庫。

分工:劉暢負責寫代碼和整理分析程式功能,丁勝男負責代碼測試以及測試後的截圖。

結對作業
結對作業
結對作業
結對作業
結對作業

心得體會:通過這次試驗,我懂得了合作的重要性,兩個人商量總比一個人瞎捉摸強。寫代碼還是有很多錯誤。以後更要細心認真的聽課。加油。

結對作業
上一篇: 讀後感
下一篇: 作業