<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      對于拖拉機游戲的類設計

      [摘要]我不會拖拉機這種玩法,只能就一般牌類的玩法來談談我對這個的看法。首先,既然我們要用oo的設計方法,那么就必須從頂至下來設計。讓我們先來分析一下聯眾這個游戲的流程,首先,我們進入游戲大廳,然后選定一個...
      我不會拖拉機這種玩法,只能就一般牌類的玩法來談談我對這個的看法。首先,既然我們要用oo的設計方法,那么就必須從頂至下來設計。
      讓我們先來分析一下聯眾這個游戲的流程,首先,我們進入游戲大廳,然后選定一個牌桌,人湊齊后就可以玩了,可以玩很多局,直至這桌全

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

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

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

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

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


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

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

       private ArrayList m_arrUsers ; //現在在這桌的用戶,包括正在玩的和觀戰的

       privateMatch m_objMatch ; //當前進行的一局游戲

       private bool m_bPlayingFlag ;//標志,說明是否牌局正在進行中

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

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

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

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

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


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

      private int m_intPoints ; //比分,可以根據正負來決定那方領先

      private ArrayList m_arrSets ;//牌局數組,一場比賽可能有多局,m_intPoints就是多局之和
       。。。。
       
       ///方法,見table類中調用的那些,我就不祥述了
       .......
      }

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

       private ArrayList m_arrInializeCards ; //牌局中初始發牌數組
       
       private ArrayList m_arrPlayCards ;//游戲中出牌數組,對規則我不了解,所以不知一次出多少張牌,
      //所以這個數組的每個元素都是一個每手出的牌數組,

       //方法
       public void GenerateCards()
       {
      //利用隨機函數產生開始發牌的順序,填充到m_arrInializeCards數組中
       }

      //出牌
       public void SendCard()
      {
       // 根據用戶出牌構造一個臨時牌數組,添加到m_arrPlayCards數組中
      }

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


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

       //成員變量
      private int m_intPoint ;//牌點,1-15
      private CardTypem_intCardType ;//牌花色

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


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

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



      好了,看看,是不是已經完成了?要注意的是不要在這些類中加入比如畫圖、操作數據庫一類的操作,而應該繼承以后再和具體的系統環境結

      合。










      日韩精品一区二区三区高清