初步的類設計

2022-05-09 08:09:08 字數 3263 閱讀 2924

uml 類圖(有些陣列型別,但由於在uml裡暫時新增不了陣列型別,故而沒陣列型別)

類的詳細介紹(c++描述)

//類裡省略了對私有資料成員的set和get函式。一下類均以h為字首,表示hoe。

enum hgamestate{

end = 0,  //結束狀態

suspend,  //暫停狀態

wait,     //等待玩家出牌

notstart  //可以開始的玩家不夠4個人

enum hplayerstate{

notstart = 0,  //還不能開始遊戲

canstart,     //可以開始遊戲了

playering    //正在玩遊戲了

enum hcardtype{

capture = 0, //俘虜,三張點數相同的牌帶一對

couple,    //一對,兩張點數相同的牌

flush,     //同花五,五張花色相同的牌

kingkong,  //金剛,四張點數相同的牌帶單張

mixseq,    //雜順,五張連續的花色不盡相同的牌

single,     //單張牌

straightflush,  //同花順,五張連續的且花色相同的牌

three,          //三張,三張點數相同的牌

invalid         //無效牌型

enum hsuit{  //hsuit的四個取值不能改變方向,初始值也必須為0

diamonds = 0, //方塊

club, //梅花

hearts, //紅桃

spade   //黑桃

class hcard{    //描述一張牌

private:

short  dotnum;  //牌的點數

hsuit  suit;      //牌的花色

public:

bool less(hcard card);  //判斷這張牌是否比牌card小

class  hpack{  //一副牌

public:

static const short dotnum = 13;  //不同的點數的數目

static const short  flushnum = 4; //不同的花色的數目

int in[dotnum+1][ flushnum];  //標記一張牌是否在這副牌裡

listcards;            //牌列表

short dotnum[dotnum+1];    //每種點數的牌的數目

short flushnum[flushnum];    //每種花色的牌的數目

short  restnum;   //剩下的牌的數目

hhandcard  nexthandcard(hhandcard last);   //在這副牌裡找一手牌,這手

//牌的張數和last相同,並且要比last大,如果找不// 到組成牌型就返回//hcardtype為invalid的牌

void delhandcard(hhandcard handcard);  //在這副牌裡刪除handcard這手牌

hhandcard  gethandcard(listcardpos); //cardpos為牌在cards的位

//置的列表,得出這些牌組成的牌型,如果不能組成牌型就返回

//hcardtype為invalid的牌

void  clear();  //清空這副牌

void  addcard(hcard card); //新增一張牌

class hhandcard{   //可以一次出手的若干張牌

private:

hcardtype  cardtype; //牌型

hcard  maxcard;  //這手牌中最大的牌

public:

listcards;   //這首拍的牌列表

short less(hhandcard handcard);  //比較這手牌和handcard的大小,如果這手//牌比handcard小,返回-1,如果不能比較,

//返回0,如果這手牌比handcard大,返回1

class  hturn{

private:

short cardnum;  //這一輪牌的數目,因為每一輪的牌的數目必須是相等的

//(cardnum為負數,表示第pos玩家是這一輪的首發玩家)。

short  pos;    //等待第pos位玩家出牌

short  lastuser;  //上一位玩家,如果pos和lastuser相等,說明將開始新的

//一輪

hhandcard  lasthandcard;  //這一輪牌的上一手牌

short   resttime;  //這一輪中等待第pos位玩家出牌的剩餘時間

short  maxresttime;  //一輪中等待玩家出牌的最大剩餘時間

class hgame{   //遊戲類,負責整個遊戲的資訊維護

private:

hgamestate   gamestate;  //表示遊戲狀態

int  inning;    //記錄遊戲的局數

static const short  plyaernum  =  4;  //遊戲的玩家數目 

short plyaernum;    //目前進入該遊戲的玩家的數目

hplayer  player[playernum];  //4個玩家物件

hturn  turn;   //遊戲中的某一輪

bool hasplayer[4];  //標記某個位置是否已經有player了,為true表示有

public:

class hplayer{

private:

bool  isuser;   //為true表示是使用者玩家,否則為電腦玩家

int  score;     //玩家積分

hplayertype  playertype;  //玩家型別

short  tricknum;   //道具使用的次數

short  maxtricknum = 1;  // 道具使用的最大次數

hpack  pack;  //玩家擁有的一副牌

hplayerstate  playerstate;  //玩家的狀態

public:

bool  usetrick();  //使用道具,使用成功就返回true

類的初步認識

c 一直被稱為是比c更高階的語言,為什麼呢?恐怕就是因為具有物件導向的設計思想,它 將萬千變化 錯綜複雜的外部環境有組織的 有規律的整合在了一起。從規律上,我們引入 了類的概念,將原本複雜的外部環境按照一定的規律和相似點,劃分為不同的類,常言道 物以類聚,鳥易群分嘛。我們在將類有機的進行區別和管理 ...

初步認識類

一 類的定義 class 類的名稱 首字母大寫 比如 class car 然後定義類的屬性 形參 再定義類的方法。class car def init self,make,model,age self.make make self.model model self.age age defget de...

c 類的初步總結

類c 通過定義類來定義資料型別,類定義了該型別的物件所包含的資料和操作。1類定義格式 classclass name 類名一般大寫 注意分號結尾 2介面與實現 在系統中,觀察乙個class有兩個角度,從外部或者使用者角度我們看到的是介面,從內部 我們看到的是實現。介面就是可供外部呼叫的方法,如定義為...