1. 程式人生 > >[源碼和報告分享] 基於QT的網絡五子棋遊戲

[源碼和報告分享] 基於QT的網絡五子棋遊戲

服務端 進行 其它 pan 程序設計 建立連接 下載 連接 一個

系統采用當今廣為流行的五子棋遊戲為模版,利用C++的第三方GUI設計工具Qt為程序設計界面,並結合軟件工程的思想開發一款基於網絡的五子棋遊戲對弈軟件。本軟件采用P2P的模式,利用一個服務端來輔助各個客戶端之間的查找和鏈接,服務端用於記錄當前各個客戶端的遊戲狀態,並將實時更新的各個客戶端的狀態發送到其他客戶端,方便客戶端加入其他客戶端建立的遊戲主機,並建立P2P鏈接,進行遊戲。客戶端是玩家用於建立遊戲主機或者加入遊戲進行五子棋對弈的主程序,具有當今五子棋遊戲常見的聊天功能、悔棋功能、認輸功能、計分功能、玩家斷網處理等。

玩家只需運行客戶端,連接到指定的服務端,就可以加入其他的遊戲主機進行遊戲,或者建立遊戲主機,等待其他客戶端的加入進行遊戲對弈。

本系統的能夠實現一個在網絡上供玩家進行對戰的網絡版的五子棋遊戲,玩家只要登陸到服務器上,然後選擇其它已創建好的遊戲主機,進行五子棋對戰遊戲。或者自己建立一個遊戲主機,等待對方的加入。

C/S 模式遊戲中,服務端一般提供所有用戶的全局信息,並能提供客戶之間的信息轉發,客戶之間的通訊必須通過服務端進行。因為在多個客戶能夠連接到同一臺服務端上,所以服務端必須用線程負責每個用戶的通訊和消息處理。

但是考慮到如果采用這種思路,當客戶端達到一定的數量之後,會增加服務端的負荷,而且當兩個玩家開始遊戲之後,服務端只需知道玩家雙方是否退出遊戲以及雙方的遊戲結果即可,而玩家之間的對弈信息、聊天等信息大可不必經過服務端。

基於以上考慮的原因,決定采用P2P的網絡模式:服務端程序開啟服務後,通過一個線程監聽客戶端的連接,一旦有客戶端連接,服務端便為該客戶端建立連接並啟動一個特定的線程,利用該連接不斷獲取客戶端操作請求,從而更新遊戲大廳信息,讓其他玩家及時了解到哪些客戶端建立了遊戲主機,哪些客戶端之間正在進行遊戲對弈。而當客戶端加入了另外一個客戶端建立的遊戲主機時,二者便建立起P2P連接,用於傳送二者之間的對弈信息,操作請求(悔棋,認輸等),聊天信息等。

技術分享圖片

參考博文和源碼下載地址:

https://www.write-bug.com/article/36.html

[源碼和報告分享] 基於QT的網絡五子棋遊戲