軟工課設06 第24組 week 12

2021-10-25 09:56:38 字數 1209 閱讀 5075

前面寫的模組有多少是可以重用的?為什麼不能重用?

在我們的程式裡,玩家(player類)和裁判(gameboard類)的模組是分開編寫的,所以可以較為方便的分離成client/server兩個端,且gameboard類中的get_player_number()、start_round()、get_result() 都能很好的重用。

我們將使用網路程式設計,所以player類的get_player_input() 方法需要重寫,以實現client和server的通訊。

客戶端將會單獨寫乙個程式。

client和server的api應該怎麼設計?

我們理想的系統部署狀態是client和server在同一區域網下,那麼c/s之間的通訊將使用socket方法。

玩家提交的套接字應該包含以下內容:

使用者id

第n輪輸入

加密後的使用者輸入

伺服器傳送的套接字應該包含以下內容:

第n輪結果

本輪所有使用者輸入

本輪所有使用者得分

如何認證使用者?

在get_player_number() 階段,我們設定乙個字典,儲存玩家id和玩家網路位址(比如192.168.1.1:88)。如果玩家提交的套接字id與位址不匹配,或解密後的輸入不符合標準(0~100),這次提交將被視作無效提交。伺服器將根據字典裡的玩家網路位址向玩家客戶端提出再提交申請。

為實現上述功能,客戶端需要快取本輪使用者正確的輸入和與伺服器約定的秘鑰;伺服器需要快取每個使用者的秘鑰。

加密的選擇

在玩家加入伺服器時,約定乙個偽隨機數種子,以後的每次提交通過獲取的隨機數來進行加密、解密。由於客戶端和伺服器共享同乙個種子,所以每次加密和解密客戶端和伺服器獲取的隨機數是相同的,這在一定程度上實現了加密。

遊戲結果如何在客戶端展示?

為避免傳輸png資料量過大,我們直接傳輸使用者的本輪輸入(self.player_inputs[-1])和本輪g值(self.g_nums[-1])給客戶端,然後在客戶端生成視覺化圖表,效果如下圖。

第12周:開發出伺服器和客戶端的基礎框架。

第13周:解決存在的問題。

課設第y天

今天的工作 以及我們使用的tomcat版本等,然後把報告的開頭,大綱列好,方便在寫報告的時候更加的有條理。明天的計畫 所以查詢文獻確定引用專案得注釋也是必須要做的。每日小結 計算機最重要的就是上機操作,自己編寫程式,除錯並執行,剛開始經常會出現錯誤,經過分析改正後,終於能夠執行了,就覺得特別激動。課...

軟工課設第一周週末 7 1 7 2 7 3

姓名 王日時間 2016年7月3日 小組任務 周五 7月1日 信東101 開會制定週末任務 1 資料庫 伺服器連線 2 加入金幣 道具系統,道具如下 雙倍金幣 開局使用,結算金幣數量乘2 冰凍 遊戲中右鍵使用,減慢飛行速度 無敵 遊戲中右鍵使用,撞到桶不會死 3 系統 待定項,其他進展順利情況下抽時...

2018軟工結課展示要求

開發截止時間,8月3日晚上12點。2 形式 的使用方式 功能 亮點,多貼圖說明。如果使用者不知道怎麼用,印象分很差。因為沒有了現場演示和講解,覺得表述不夠充分的,也可以多貼圖,充分表述。3 展示內容 1 7月份的開發過程 燃盡圖 任務牆 團隊管理細節 交流細節 管理 github等的使用 2 整個學...