예제 #1
0
파일: client.cs 프로젝트: DocJesus/cardGame
        public T read <T>() where T : new ()
        {
            T tmp = new T();

            byte[] bytes     = new byte[Marshal.SizeOf(tmp)];
            int    bytesRead = wifi.getNetworkStream().Read(bytes, 0, bytes.Length);

            tmp = ConnectWork.fromBytes <T>(bytes);
            return(tmp);
        }
예제 #2
0
        public T getStruct <T>(int size) where T : new()
        {
            byte[] bytes     = new byte[size];
            int    bytesRead = link.getNetworkStream().Read(bytes, 0, bytes.Length);

            return(ConnectWork.fromBytes <T>(bytes));
        }
예제 #3
0
        public int AskCard(ConnectWork link)
        {
            askcontrat str = new askcontrat();
            deck       deck;
            played     pile;
            responce   res = new responce();
            string     saisie;
            bool       turn   = true;
            int        i      = 0;
            int        numval = 0;

            str  = getStruct <askcontrat>(Marshal.SizeOf(str));
            deck = str.deck;
            pile = str.contrats_pile;
            if (str.turn == _ID)
            {
                Console.WriteLine("les cartes déjà jouer sont :");
                for (int j = 0; j < 4; j++)
                {
                    if (pile.value[j] != -1)
                    {
                        Console.WriteLine("la " + j + " em carte est un(e) " + (Type)pile.ids[j] + " de " + (Couleur)pile.couleur[j] + " qui vaut " + pile.value[j]);
                    }
                }
                while (turn == true)
                {
                    Console.WriteLine("Votre deck est composé de :");
                    i = print_deck(deck);
                    Console.WriteLine("veulliez saisir l'index de la carte que vous voulez jouer");
                    saisie = Console.ReadLine();
                    if (saisie != "")
                    {
                        numval = Convert.ToInt32(saisie);
                        if (numval < i && numval >= 0)
                        {
                            turn = false;
                        }
                    }
                }
                res.value   = numval;
                res.couleur = -1;
                byte[] message = link.getBytes <responce>(res);
                link.getNetworkStream().Write(message, 0, message.Length);
            }
            return(0);
        }
예제 #4
0
        //public unsafe struct askcontrat //2 //3
        public int AskContract(ConnectWork link)
        {
            bool     turn     = true;
            int      stronger = 0;
            responce res      = new responce();
            // Console.WriteLine("AskContract");
            played     tmp;
            deck       deck;
            askcontrat str = new askcontrat();
            string     saisie;
            int        numval = 0;

            str = getStruct <askcontrat>(Marshal.SizeOf(str));
            //Console.WriteLine("turn = " + str.turn);
            tmp         = str.contrats_pile;
            deck        = str.deck;
            res.couleur = -1;
            res.value   = -1;
            for (int i = 0; i < 4; i++)
            {
                if (tmp.ids[i] != -1)
                {
                    if (tmp.value[i] > stronger)
                    {
                        stronger = tmp.value[i];
                    }
                    Console.WriteLine("le joueur " + tmp.ids[i] + " a fait un contrat de " + tmp.value[i] + " de la couleur " + (Couleur)tmp.couleur[i]);
                }
            }
            if (str.turn == _ID)
            {
                Console.WriteLine("A vous de proposer un contrat");
                Console.WriteLine("Votre deck est composé de :");
                print_deck(deck);
                while (turn == true)
                {
                    Console.WriteLine("veuillez saisir le montant du contrat (il doit valoir 0 ou être suppérieur au plus haut des contrats, ce dernier vaut : " + stronger);
                    saisie = Console.ReadLine();
                    if (saisie != "")
                    {
                        numval = Convert.ToInt32(saisie);
                        if (numval == 0 || numval > stronger)
                        {
                            turn = false;
                        }
                    }
                }
                res.value = numval;
                turn      = true;
                while (turn == true)
                {
                    Console.WriteLine("veuillez la couleur du contrat: 0 -> carreau, 1 -> trèfle, 2 -> Pick, 3 -> Coeur");
                    saisie = Console.ReadLine();
                    if (saisie != "")
                    {
                        numval = Convert.ToInt32(saisie);
                        if (numval <= 3 && numval >= 0)
                        {
                            turn = false;
                        }
                    }
                }
                res.couleur = numval;
            }
            if (res.couleur != -1 && res.value != -1)
            {
                byte[] message = link.getBytes <responce>(res);
                link.getNetworkStream().Write(message, 0, message.Length);
            }
            return(0);
        }