• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁(yè)面

        對(duì)于拖拉機(jī)游戲的類設(shè)計(jì)

        對(duì)于拖拉機(jī)游戲的類設(shè)計(jì)

        更新時(shí)間:2022-05-10 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

        我不會(huì)拖拉機(jī)這種玩法,只能就一般牌類的玩法來談?wù)勎覍?duì)這個(gè)的看法。首先,既然我們要用oo的設(shè)計(jì)方法,那么就必須從頂至下來設(shè)計(jì)。
        讓我們先來分析一下聯(lián)眾這個(gè)游戲的流程,首先,我們進(jìn)入游戲大廳,然后選定一個(gè)牌桌,人湊齊后就可以玩了,可以玩很多局,直至這桌全

        部人離開。這樣的話從頂至下分析就可以構(gòu)造一下類:
        一、大廳類(Hall class)
        這個(gè)類并不復(fù)雜,可以這樣定義
        public class Hall
        {
         //私有成員變量
        //大廳本身屬性
        private String m_strName ; //大廳名稱
        private String m_strDescription ; //大廳描述
        private String m_strServerIP ; //大廳主機(jī)ip,聯(lián)網(wǎng)訪問的ip,具體協(xié)議看需要
        ......... //其它需要的屬性

        //大廳包含的對(duì)象
        private ArrayList m_arrUsers ; //用戶數(shù)組
        private ArrayList m_arrConnections; //對(duì)應(yīng)每個(gè)用戶的連接,可以是udp或tcp,看需要。
        pirvate ArrayList m_arrTables ; //桌子類數(shù)組
        private ArrayList m_arrMatchs ;//每局游戲類,對(duì)應(yīng)每一局游戲
         
        //屬性
        public String Name ....
        ....

        //以下為方法
        //construction
        public Hall()
        {
        起服務(wù)器winservice...
        }

        ///為每一個(gè)用戶建立一條socket連接
        ///主要作用是取得user的ip建立socket然后把這個(gè)user加入到在線用戶數(shù)組
        ///<parameter>a_objUser , 一個(gè)User對(duì)象,</parameter>
        public void Connect(User a_objUser)
        {
         ...
         }

        ///和上面方法相反,踢出用戶或用戶自然斷線
        public void Disconnect(User a_objUser)
        {
         。。。。。
         }


        //還有很多這種方法,略過……
        }

        二、棋桌類 (Table class)
        大廳類構(gòu)造好了,現(xiàn)在來看棋桌(Table)類。
        public class Table
        {
        //私有成員變量
         private int m_intTableNo ;//棋桌號(hào),唯一標(biāo)志
         private String m_strName ; //棋桌名稱,如果有必要
         .....其它類似變量

         private ArrayList m_arrUsers ; //現(xiàn)在在這桌的用戶,包括正在玩的和觀戰(zhàn)的

         privateMatch m_objMatch ; //當(dāng)前進(jìn)行的一局游戲

         private bool m_bPlayingFlag ;//標(biāo)志,說明是否牌局正在進(jìn)行中

         //method
         //加入這桌 , 根據(jù)m_bPlayingFlag來決定是否可以加入
         public void Join(User a_objUser) 
         {
        //把這個(gè)用戶加入到m_arrUsers中,并且根據(jù)m_arrUsers中玩家的多少?zèng)Q定該用戶的屬性,是上、下、左、右那一家或觀戰(zhàn)
         }

         ///如果人夠了,就可以開始一局游戲了
         public void StartMatch()
         {
        m_objMatch.Play() ;
        }

        ///暫停游戲,如有用戶斷線或用戶共同協(xié)議封牌
        ///保存棋局
         public void PauseMatch()
         {
         m_objMatch.Pause() ;
         m_objMatch.Save() ;
         }

         ///繼續(xù)游戲,用戶重新連線或協(xié)議繼續(xù)進(jìn)行已封的牌
         public void ResumeMatch()
         {
        m_objMatch.Load() ;
        m_objMatch.Resume() ;
         }

        ///停止游戲,如有用戶斷線超過規(guī)定時(shí)間或一方勝利或協(xié)議結(jié)束
        public void ResumeMatch()
        {
        m_objMatch.Save() ;
        m_objMatch.Stop() ;
        }
        }//end class declaretion


        三,比賽類(Match class)
        public Class Match
        {
        //成員變量
         privateint m_intMatchNo ;//唯一標(biāo)志
         private User a_objTop ; //上家
         private User a_objDown ;//下家
         private User a_objLeft ; //左家
         private User a_objRight ;//右家
         
         private DateTime m_datBegin ; //開始時(shí)間
         private DateTime m_datEnd ;//結(jié)束時(shí)間

        private int m_intPoints ; //比分,可以根據(jù)正負(fù)來決定那方領(lǐng)先

        private ArrayList m_arrSets ;//牌局?jǐn)?shù)組,一場(chǎng)比賽可能有多局,m_intPoints就是多局之和
         。。。。
         
         ///方法,見table類中調(diào)用的那些,我就不祥述了
         .......
        }

        四,牌局類(Set class)
        public class Set
        {
        //成員變量
         private DateTime m_datBegin ; //開始時(shí)間
         private DateTime m_datEnd ;//結(jié)束時(shí)間
         
         private int m_intPoints ;//這局的比分

         private ArrayList m_arrInializeCards ; //牌局中初始發(fā)牌數(shù)組
         
         private ArrayList m_arrPlayCards ;//游戲中出牌數(shù)組,對(duì)規(guī)則我不了解,所以不知一次出多少?gòu)埮疲?br>//所以這個(gè)數(shù)組的每個(gè)元素都是一個(gè)每手出的牌數(shù)組,

         //方法
         public void GenerateCards()
         {
        //利用隨機(jī)函數(shù)產(chǎn)生開始發(fā)牌的順序,填充到m_arrInializeCards數(shù)組中
         }

        //出牌
         public void SendCard()
        {
         // 根據(jù)用戶出牌構(gòu)造一個(gè)臨時(shí)牌數(shù)組,添加到m_arrPlayCards數(shù)組中
        }

        //算分,牌出完后根據(jù)規(guī)則來算分。
        public void Caculation()
        {
        m_intPoints = ??? ;
        }
         
        }//end class


        五、牌類(Card)
        public class Card()
        {
        //先定義一個(gè)枚舉變量,代表花色
         public enum CardType
         {
         方片,草花 , 黑桃 , 紅心 ;//用英語吧,我不會(huì),呵呵
         }

         //成員變量
        private int m_intPoint ;//牌點(diǎn),1-15
        private CardTypem_intCardType ;//牌花色

        //方法
        沒有什么特殊的方法,set,get一類的 
        }//end class


        六、用戶類(User)
        public Class User()
        {
        成員變量
        private string m_strName ;//姓名
        .......很多諸如此類的屬性。

        //方法
        .....沒有什么特殊的方法,set,get一類的
        }



        好了,看看,是不是已經(jīng)完成了?要注意的是不要在這些類中加入比如畫圖、操作數(shù)據(jù)庫(kù)一類的操作,而應(yīng)該繼承以后再和具體的系統(tǒng)環(huán)境結(jié)

        合。







        溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 亚洲国产成人手机在线电影bd| 亚洲Av熟妇高潮30p| 波多野结衣亚洲一级| 6080午夜一级毛片免费看| 亚洲av伊人久久综合密臀性色| 国产精品1024在线永久免费| 亚洲一区二区三区香蕉| 丝袜足液精子免费视频| 亚洲精品高清无码视频| 久久青草精品38国产免费| 中文字幕亚洲综合久久| 三年片在线观看免费大全| 亚洲а∨天堂久久精品9966| 日韩成全视频观看免费观看高清| 亚洲AV永久无码天堂影院| 国产一级一片免费播放i| 一日本道a高清免费播放| 亚洲处破女AV日韩精品| 麻豆国产精品免费视频| 亚洲欧美日韩中文字幕在线一区| 亚洲Av无码乱码在线观看性色| 香蕉视频在线免费看| 亚洲视频免费在线播放| 免费黄色小视频网站| 国产日韩在线视频免费播放| 亚洲avav天堂av在线不卡| av大片在线无码免费| 污网站在线免费观看| 亚洲成AV人在线观看天堂无码| 国产一卡2卡3卡4卡2021免费观看| 亚洲av午夜国产精品无码中文字| 亚洲人成网站色在线入口| 久久成人a毛片免费观看网站| 亚洲精品美女网站| 亚洲午夜福利精品久久| 久久w5ww成w人免费| 免费在线观看自拍性爱视频| 麻豆亚洲AV永久无码精品久久| 午夜免费福利影院| 免费观看在线禁片| 亚洲av成人片在线观看|