前面寫的模組有多少是可以重用的?為什麼不能重用?
在我們的程式裡,玩家(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 整個學...