/// <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 }
/// <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]; }
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)); } }
// <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]); }
/// <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]; } } } } }
/// <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; }
/// <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; }