撲克遊戲架構及其實現(一)

2021-03-31 17:47:27 字數 1202 閱讀 1985

去年下半年做了乙個專案,是撲克類的網路遊戲。原計畫包括:拱豬、鬥地主、梭哈、紅五三打一等。但是最重專案流產,只完成了拱豬和紅五三打一。去年在動工的時候,網上的相關資料很少(一般都是很簡單的比較大小遊戲),尤其是win32下以mfc實現更加是鳳毛麟角。我主要參考了一篇老外的文章,此文主要闡述了如何利用windows自帶的cards.dll繪製各色撲克牌,以及示範程式,我會在收藏中貼出來。想找到聯眾或者中游的源**作參考自然是不可能的。故而其設計還是我自己實現的。目前專案流產,不願意讓其躺在硬碟裡睡大覺,願意將一些所得貼出來與大家共享,也算作一種敝帚自珍吧。

遊戲分為網路層應用程網路層由同學kiang完成並且封裝,應用層由筆者完成。在筆者開發應用層的時候,只需要知道網路層有如下特性:

1、  諸個遊戲者每人執行乙個程式例項於各自的計算機上。此處將每個例項定義為乙個「」。

2、  諸個端中有乙個為「從機」。

3、  網路層提供的服務:將本端應用層發來的訊息分發到其他所有的端;將其他端傳送來的訊息正確傳送到本端應用層。並且保證正確性時序性

由上面網路層的特性,設計應用層原理應當如下:

1、  定義每個參加遊戲的人為「玩家」。每個玩家在每個端上都有乙個抽象的對映,即乙個player。若乙個遊戲有n人(n個玩家)參與,則在每個端上,共有n個player。某端n個玩家中有乙個是本地的(local,其他n-1個是遠端的(remote)。所謂本地(local)即,接受來自gui的訊息並且向其他端相對同乙個玩家的player(remote)發出訊息。而remote player則不接受來自gui的訊息,接受來自遠端player(local)的訊息。故而,藉remote-local結構,應用層通過網路訊息同步各個端某個玩家對應的所有player,保持各段資料的一致性

2、  剝離遊戲和介面,即剝離gameview兩個類。game類負責以虛函式過載的方法根據各個不同的遊戲,設定不同的規則。有如下幾個基本功能分別需要由虛函式實現:

l         大小比較規則

但張牌或者組合牌的大小比較。

l         出牌合法判定規則

若出牌不是本規則允許的組合,則被退回。

l         出牌次序判定

每一局、每一輪、每一副牌誰先走牌,誰後走牌。

code及其實現

1.what is code?編碼並不是我隨便亂取的名字,其原理在資訊檢索導論第5章第3節有介紹,用於壓縮一連串有序的數字型別的資料非常有用。在mg中將 編碼歸類為全域性模型 mg更推崇區域性模型 其原理是將所有的資料分成兩部分連起來,第一部分為資料長度,第二部分為資料內容。這樣做的好處是對於很小的...

程序及其實現

一 程序的定義 1 程序是可併發執行的程式在某個資料集合上的一次計算活動,也是作業系統進行資源分配和保護的基本單位 2 可以用來共享資源又能描述程式併發 為什麼要引入程序概念 1 刻畫程式的併發性 程式是併發執行的,這是由於資源共享和競爭問題,程式自身只是計算任務的指令和資料的描述,是靜態的,程序是...

kmeans演算法及其實現

k 均值演算法能夠使聚類域中所有樣品到聚類中心距離平方和最小。其原理為 先取 k個初始聚類中心,計算每個樣品到這 k個中心的距離,找出最小距離,把樣品歸入最近的聚類中心,修改中心點的值為本類所有樣品的均值,再計算各個樣品到新的聚類中心的距離,重新歸類,修改新的中心點,直到新的聚類中心和上一次聚類中心...