Beispiel #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ChiamataLibrary.Card"/> class.
        /// </summary>
        /// <param name="number">The card's number.</param>
        /// <param name="seme">The card's seme.</param>
        /// <param name="iniziale">The player who initially owns the card.</param>
        internal Card(EnNumbers number, EnSemi seme, Player initial)
        {
            if (!Board.Instance.IsCreationPhase)
            {
                throw new WrongPhaseException("A player must be instantiated during the creation time", "Creation");
            }

            this.seme          = seme;          //set the seme
            this.number        = number;        //set the number
            this.initialPlayer = initial;       //set the initial player
        }
Beispiel #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BTLibrary.PackageCard"/> class.
        /// </summary>
        /// <param name="bs">Byte array representing the move.</param>
        /// <exception cref="System.Exception">Thrown when the byte sequence doesen't represent a move.</exception>
        public PackageCard(byte [] bs) : base(EnPackageType.MOVE)
        {
            if (bs [0] != (byte)type)
            {
                throw new Exception("Wrong byte's sequence");
            }

            EnSemi    s = (EnSemi)(bs [2] / Board.Instance.nNumber);
            EnNumbers n = (EnNumbers)(bs [2] % Board.Instance.nNumber);

            card   = Board.Instance.GetCard(s, n);
            player = (Player)bs [1];

            time = (int)bs [3];
        }
Beispiel #3
0
        public BidBase ChooseBid()
        {
            Console.WriteLine("******************************");

            BidBase wb = Board.Instance.currentAuctionWinningBid;

            if (wb == null)
            {
                Console.WriteLine("Non c'è nessuna bid");
            }
            else
            {
                Console.WriteLine("Offerta vincente:" + wb.ToString());
            }

            Console.WriteLine("Devi fare una offerta [passo=p; carichi=c, normale=qualsiasi altra cosa]");

            string a = Console.ReadLine();

            if (a == "p")
            {
                return(new PassBid());
            }
            else if (a == "c")
            {
                Console.Write("Punti: ");
                return(new CarichiBid(int.Parse(Console.ReadLine())));
            }
            else
            {
                Console.Write("Numero[0=due,...,8=tre,9=asse]: ");
                EnNumbers n = (EnNumbers)int.Parse(Console.ReadLine());
                Console.Write("Punti: ");
                int p = int.Parse(Console.ReadLine());
                return(new NormalBid(n, p));
            }
        }
Beispiel #4
0
 // <summary>
 /// Getter for the card. Must provide SEME and NUMBER as arguments.
 /// </summary>
 /// <returns>The instance of <see cref="ChiamataLibrary.Card"/>.</returns>
 /// <param name="seme">Seme.</param>
 /// <param name="number">Number.</param>
 public Card GetCard(EnSemi seme, EnNumbers number)
 {
     return(_cardGrid [(int)seme, (int)number]);
 }
Beispiel #5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ChiamataLibrary.GameData"/> class.
        /// </summary>
        /// <param name="path">The path of the XML file from which will be reading the <see cref="ChiamataLibrary.GameData"/>.</param>
        internal GameData(Stream s)
        {
            Board.Instance.Reset();
            _players = new Player[Board.PLAYER_NUMBER];
            _cards   = new Card[Board.Instance.nSemi, Board.Instance.nNumber];
            _bids    = new List <BidBase> ();

            //create the xml reader
            XmlReaderSettings setting = new XmlReaderSettings();

            setting.IgnoreComments = true;

            using (XmlReader reader = XmlReader.Create(s, setting)) {
                reader.ReadToFollowing("Game");                 //game

                reader.MoveToFirstAttribute();                  //datetime
                this.time = DateTime.Parse(reader.Value.ToString());

                reader.MoveToNextAttribute();                   //gametype
                this.gameType = (EnGameType)Enum.Parse(typeof(EnGameType), reader.Value, true);

                reader.MoveToNextAttribute();                   //winningPoint
                this.winningPoint = int.Parse(reader.Value);

                //Players
                reader.ReadToFollowing("Players");
                for (int i = 0; i < Board.PLAYER_NUMBER; i++)
                {
                    reader.ReadToFollowing("Player");

                    reader.ReadToFollowing("Name");                             //name
                    string name = reader.ReadElementContentAsString();

                    reader.ReadToFollowing("Role");                             //role
                    EnRole role = (EnRole)Enum.Parse(typeof(EnRole), reader.ReadElementContentAsString(), true);

                    reader.ReadToFollowing("Order");                            //order

                    int order = reader.ReadElementContentAsInt();

                    _players [i]      = new Player(name, order);
                    _players [i].Role = role;
                }

                //bids
                reader.ReadToFollowing("BidList");

                reader.MoveToFirstAttribute();                  //bid's number
                int nBids = int.Parse(reader.Value);

                for (int i = 0; i < nBids; i++)
                {
                    reader.ReadToFollowing("Bid");

                    reader.MoveToFirstAttribute();                      //bid's type
                    string type = reader.Value;

                    reader.ReadToFollowing("Bidder");                           //bidder

                    int bidder = reader.ReadElementContentAsInt();

                    if (type == "Pass")
                    {
                        _bids.Add(new PassBid(_players [bidder]));
                    }
                    else
                    {
                        reader.ReadToFollowing("Point");                                //point

                        int point = reader.ReadElementContentAsInt();

                        if (type == "Carichi")
                        {
                            _bids.Add(new CarichiBid(_players [bidder], point));
                        }
                        else
                        {
                            reader.ReadToFollowing("Number");                                   //number
                            EnNumbers number = (EnNumbers)Enum.Parse(typeof(EnNumbers), reader.ReadElementContentAsString(), true);

                            _bids.Add(new NormalBid(_players [bidder], number, point));
                        }
                    }
                }

                //Cards
                reader.ReadToFollowing("Cards");

                for (int seme = 0; seme < Board.Instance.nSemi; seme++)
                {
                    for (int number = 0; number < Board.Instance.nNumber; number++)
                    {
                        reader.ReadToFollowing("Card");
                        reader.MoveToFirstAttribute();                          //seme
                        reader.MoveToNextAttribute();                           //number
                        reader.MoveToNextAttribute();                           //called card
                        bool cc = bool.Parse(reader.Value);

                        reader.ReadToFollowing("InitialPlayer");
                        Player ip = _players [reader.ReadElementContentAsInt()];

                        _cards [seme, number] = new Card((EnNumbers)number, (EnSemi)seme, ip);

                        reader.ReadToFollowing("FinalPlayer");
                        Player fp = _players [reader.ReadElementContentAsInt()];

                        reader.ReadToFollowing("PlayingTime");
                        int tp = reader.ReadElementContentAsInt();

                        _cards [seme, number].PlayingTime = tp;
                        _cards [seme, number].FinalPlayer = fp;

                        if (cc)
                        {
                            calledCard = _cards [seme, number];
                        }
                    }
                }
            }
        }
Beispiel #6
0
 /// <summary>
 /// Initializes a new naked instance of the <see cref="ChiamataLibrary.NormalBid"/> class.
 /// </summary>
 /// <param name="number">Number.</param>
 /// <param name="point">Points.</param>
 public NormalBid(EnNumbers number, int point) : base(point)
 {
     this.number = number;
 }
Beispiel #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ChiamataLibrary.NormalBid"/> class.
 /// </summary>
 /// <param name="bidder">Bidder.</param>
 /// <param name="number">Number.</param>
 /// <param name="point">Points.</param>
 public NormalBid(Player bidder, EnNumbers number, int point) : base(bidder, point)
 {
     this.number = number;
 }