Example #1
0
        public Card MakePlay(Card Down, Hand Hand)
        {
            List<Card> V = new List<Card>();
            foreach (Card Card in Hand)
            {
                if (_Function.Invoke(Down, Card)) V.Add(Card);
            }

            int M = Int32.MaxValue;
            Card Choice = null;
            foreach (Card Card in V)
            {
                int N = 0;
                foreach (Card DownCard in _ImaginaryDeck)
                {
                    if (_Function.Invoke(DownCard, Card)) N++;
                }
                if (N < M)
                {
                    M = N;
                    Choice = Card;
                }
            }
            return Choice;
        }
Example #2
0
        public bool ValidatePlay(Card Down, Card Played, Player player)
        {
            Console.Clear();
            Console.WriteLine("My Play:");
            BigCard (Played, false);
            Console.WriteLine("vvvvv");
            BigCard (Down, true);
            Console.WriteLine("Was this valid?");
            while (true)
            {
                Console.Write("(y/n/w)(t/f/?)(1/0/2): ");

                string input = Console.ReadLine();
                if (input.Length == 0)
                    continue;
                input = input.ToLower();
                switch (input[0])
                {
                    case 'y': case 't': case '1':
                        return true;
                    case 'n': case 'f': case '0':
                        return false;
                    case 'w': case '?': case '2':
                    Console.WriteLine(player); break;
                }
            }
        }
Example #3
0
        public void VerifyPlay(Card DownCard, Card Played, bool Valid)
        {
            AttributeValue[] Entry = new AttributeValue[5];
            Entry[0] = new IntegerValue(DownCard.Number);
            Entry[1] = new IntegerValue(DownCard.Suit);
            Entry[2] = new IntegerValue(Played.Number);
            Entry[3] = new IntegerValue(Played.Suit);
            Entry[4] = new BooleanValue(Valid);

            if (_Forest == null) _Forest = new Forest(1, 1, delegate(int i) { DataSet D = new DataSet(5); D.AddEntry(Entry); return D; }, 4);
            else _Forest.AddEntry(Entry);
        }
Example #4
0
        public bool ValidatePlay(Card DownCard, Card Played, Player played)
        {
            AttributeValue[] Entry = new AttributeValue[5];
            Entry[0] = new IntegerValue(DownCard.Number);
            Entry[1] = new IntegerValue(DownCard.Suit);
            Entry[2] = new IntegerValue(Played.Number);
            Entry[3] = new IntegerValue(Played.Suit);
            Entry[4] = new BooleanValue(false);

            if (_Forest == null) return true;
            else return Convert.ToBoolean(_Forest.MakeDecision(Entry).ToString());
        }
Example #5
0
 public Game(Player Master, List<Player> Learners, Random Random)
 {
     _Random = Random;
     _Deck = new Deck();
     _Deck.Shuffle(_Random);
     _Return = new Deck(true);
     _Master = Master;
     _Learners = Learners;
     _MasterHand = new Hand(10, _Deck);
     foreach(Player L in _Learners) _LearnerHands.Add(new Hand(10, _Deck));
     _DownCard = _Deck.Draw();
 }
Example #6
0
 public Card MakePlay(Card Down, Hand Hand)
 {
     Console.Clear();
     Console.WriteLine("Your Play:");
     BigCard(Down, true);
     ShowHand(Hand);
     //Console.WriteLine(Hand);
     Console.Write("(Nothing for draw): ");
     while (true)
     {
         string input = Console.ReadLine();
         if (input.Length == 0) // Draw
             return null;
         try
         {
             int C = Convert.ToInt32(input);
             if (C > -1) return Hand[C];
         }
         catch (Exception e) { Console.WriteLine(e.Message); }
     }
 }
Example #7
0
        public Card MakePlay(Card DownCard, Hand Hand)
        {
            if (_Forest == null) return Hand[0];

            AttributeValue[] Entry = new AttributeValue[5];

            Entry[0] = new IntegerValue(DownCard.Number);
            Entry[1] = new IntegerValue(DownCard.Suit);

            List<Card> V = new List<Card>();
            foreach (Card Card in Hand)
            {
                Entry[2] = new IntegerValue(Card.Number);
                Entry[3] = new IntegerValue(Card.Suit);
                bool a = Convert.ToBoolean(_Forest.MakeDecision(Entry).ToString());
                if (a) V.Add(Card);
            }

            int M = Int32.MaxValue;
            Card Choice = null;
            foreach (Card Card in V)
            {
                int N = 0;
                Entry[2] = new IntegerValue(Card.Number);
                Entry[3] = new IntegerValue(Card.Suit);
                foreach (Card Down in _ImaginaryDeck)
                {
                    Entry[0] = new IntegerValue(DownCard.Number);
                    Entry[1] = new IntegerValue(DownCard.Suit);
                    bool a = Convert.ToBoolean(_Forest.MakeDecision(Entry).ToString());
                    if (a) N++;
                }
                if (N < M)
                {
                    M = N;
                    Choice = Card;
                }
            }
            return Choice;
        }
Example #8
0
 public void VerifyPlay(Card Down, Card Played, bool Valid)
 {
     return;
 }
Example #9
0
 public bool ValidatePlay(Card Down, Card Played, Player player)
 {
     return _Function.Invoke(Down, Played);
 }
Example #10
0
 private void WriteCard(Card card)
 {
     ConsoleColor prev = Console.ForegroundColor;
     Console.ForegroundColor = (card.Suit == 2 || card.Suit == 4) ? ConsoleColor.Red : ConsoleColor.DarkGray;
     Console.Write(card);
     Console.ForegroundColor = prev;
 }
Example #11
0
 // Draws a big card stack is true if card is not single but top of a stack
 private void BigCard(Card card, bool stack)
 {
     Console.ForegroundColor = cardColor;
     if (stack)
     {
         Console.Write("\n┌───╖\n│");
         WriteCard(card);
         Console.WriteLine("║\n│   ║\n╘═══╝", card);
     }
     else
     {
         Console.Write("\n┌───┐\n│");
         WriteCard(card);
         Console.WriteLine("│\n│   │\n└───┘");
     }
     Console.ResetColor();
 }
Example #12
0
 private void Turn(Player Player, Hand Hand, bool Master= false)
 {
     //Console.WriteLine (Player);
     Card C = Player.MakePlay(_DownCard, Hand);
     if (C == null)
     {
         Hand.Draw(_Deck);
         CheckDeck();
         return;
     }
     bool Valid = (Master ? true : _Master.ValidatePlay(_DownCard, C, Player));
     foreach (Player L in _Learners) L.VerifyPlay(_DownCard, C, Valid);
     if (Valid)
     {
         Hand.Play(C, _Return);
         _DownCard = C;
     }
     else
     {
         Hand.Draw(_Deck);
         CheckDeck();
     }
 }