Esempio n. 1
0
        private static void InputNumber(Data.Packet packet)
        {
            bool isNumber;

            do
            {
                if (gameRunning == false)
                {
                    break;
                }
                int number;
                Console.WriteLine("Podaj liczbe:");
                var msg = Console.ReadLine();
                if (int.TryParse(msg, out number))
                {
                    Data.Packet packetToSend = new Data.Packet(packet.ID, number, OD_Enum.NULL, OP_Enum.GUESS);
                    var         stringToSend = packetToSend.Serialize();
                    byte[]      bytesToSend  = Encoding.UTF8.GetBytes(stringToSend);
                    _udpClient.Send(bytesToSend, bytesToSend.Length);
                    isNumber = true;
                }
                else
                {
                    Console.WriteLine("Nie podałeś liczby");
                    isNumber = false;
                }
            } while (!isNumber && gameRunning);
        }
 private static void Guessing(Data.Packet packet, IPEndPoint endPoint)
 {
     if (packet.Data == numberToGuess)
     {
         Data.Packet packetToSend = new Data.Packet(packet.ID, 0, OD_Enum.GUESSED, OP_Enum.GUESS);
         string      stringToSend = packetToSend.Serialize();
         byte[]      bytesToSend  = Encoding.UTF8.GetBytes(stringToSend);
         _listener.Send(bytesToSend, bytesToSend.Length, endPoint);
         gameRunning = false;
         timer.Change(Timeout.Infinite, Timeout.Infinite);
         foreach (var playerData in _players)
         {
             if (!playerData.Value.PlayerEndPoint.Equals(endPoint))
             {
                 Data.Packet packetToSendForNotGuessed = new Data.Packet(playerData.Value.SessionID, 0,
                                                                         OD_Enum.NULL, OP_Enum.SUMMARY);
                 string stringToSendForNotGuessed = packetToSendForNotGuessed.Serialize();
                 byte[] bytesToSendForNotGuessed  = Encoding.UTF8.GetBytes(stringToSendForNotGuessed);
                 _listener.Send(bytesToSendForNotGuessed, bytesToSendForNotGuessed.Length, playerData.Key);
             }
         }
         Console.ReadLine();
         gameRunning = false;
         _listener.Close();
     }
     else
     {
         Data.Packet packetToSend = new Data.Packet(packet.ID, 0, OD_Enum.NOT_GUESSED, OP_Enum.GUESS);
         string      stringToSend = packetToSend.Serialize();
         byte[]      bytesToSend  = Encoding.UTF8.GetBytes(stringToSend);
         _listener.Send(bytesToSend, bytesToSend.Length, endPoint);
     }
 }
        private static void ProcessData(object p, object ep)
        {
            Data.Packet packet   = (Data.Packet)p;
            IPEndPoint  endPoint = (IPEndPoint)ep;

            Console.WriteLine("ID: {0}, data: {1}, answer: {2}, operation: {3}", packet.ID, packet.Data, packet.OD, packet.OP);

            if (packet.OP == OP_Enum.REGISTER && packet.OD == OD_Enum.REQUEST)
            {
                Packet ackPacket = new Packet(packet.ID, OD_Enum.NULL, OP_Enum.ACK);
                string ackString = ackPacket.Serialize();
                byte[] bytesAck  = Encoding.UTF8.GetBytes(ackString);
                _listener.Send(bytesAck, bytesAck.Length, endPoint);
                Console.Write("Operation: {0}, answer: {1}, id: {2}, data: {3}", packet.OP, packet.OD, packet.ID, packet.Data);
                Register(packet, endPoint);
            }
            if (packet.OP == OP_Enum.GUESS)
            {
                Packet ackPacket = new Packet(packet.ID, OD_Enum.NULL, OP_Enum.ACK);
                string ackString = ackPacket.Serialize();
                byte[] bytesAck  = Encoding.UTF8.GetBytes(ackString);
                _listener.Send(bytesAck, bytesAck.Length, endPoint);
                Guessing(packet, endPoint);
            }
        }
 private static void SendStartMessage()
 {
     foreach (var playerData in _players)
     {
         Data.Packet packet       = new Data.Packet(playerData.Value.SessionID, 0, OD_Enum.ACKX, OP_Enum.START);
         string      stringToSend = packet.Serialize();
         byte[]      bytesToSend  = Encoding.UTF8.GetBytes(stringToSend);
         _listener.Send(bytesToSend, bytesToSend.Length, playerData.Value.PlayerEndPoint);
     }
 }
        private static void RegisterUsers()
        {
            while (_players.Count < playerLimit)
            {
                IPEndPoint  sender  = new IPEndPoint(IPAddress.Any, 0);
                byte[]      recvMsg = _listener.Receive(ref sender);
                Data.Packet packet  = Data.Packet.Deserialize(Encoding.UTF8.GetString(recvMsg));
                Console.WriteLine("ID: {0}, data: {1}, answer: {2}, operation: {3}", packet.ID, packet.Data, packet.OD, packet.OP);

                ProcessData(packet, sender);
            }
        }
 private static void Register(Data.Packet packet, IPEndPoint endPoint)
 {
     if (!_players.ContainsKey(endPoint))
     {
         var id = HelperData.RandomInt(0, 255);
         _players.Add(endPoint, new PlayerData(endPoint, id));
         Data.Packet packetToSend = new Data.Packet(id, 0, OD_Enum.ACKX, OP_Enum.REGISTER);
         string      stringToSend = packetToSend.Serialize();
         byte[]      bytesToSend  = Encoding.UTF8.GetBytes(stringToSend);
         _listener.Send(bytesToSend, bytesToSend.Length, endPoint);
     }
 }
        private static void SendTime(object t)
        {
            int timeToSend = (int)t;

            foreach (var playerData in _players)
            {
                Console.WriteLine("Wysyłam czas do: {0}", playerData.Key.ToString());
                Data.Packet packet       = new Data.Packet(playerData.Value.SessionID, timeToSend, OD_Enum.NULL, OP_Enum.TIME);
                string      stringToSend = packet.Serialize();
                byte[]      bytesToSend  = Encoding.UTF8.GetBytes(stringToSend);
                _listener.Send(bytesToSend, bytesToSend.Length, playerData.Key);
            }
        }
        public static void DataIN(object ep)
        {
            while (gameRunning)
            {
                IPEndPoint sender = (IPEndPoint)ep;
                try {
                    byte[]      recByte   = _listener.Receive(ref sender);
                    string      recString = Encoding.UTF8.GetString(recByte);
                    Data.Packet packet    = Data.Packet.Deserialize(recString);
                    Console.WriteLine("ID: {0}, data: {1}, answer: {2}, operation: {3}", packet.ID, packet.Data, packet.OD, packet.OP);

                    ProcessData(packet, sender);
                } catch (Exception e) {
                    Console.WriteLine(e.Message);
                }
            }
        }
Esempio n. 9
0
        private static void DataManager(object p)
        {
            Data.Packet packet = (Data.Packet)p;

            if (packet.OP == OP_Enum.START)
            {
                Console.WriteLine("Gra wystartowała!");
                InputNumber(packet);
            }

            if (packet.OP == OP_Enum.GUESS && packet.OD == OD_Enum.GUESSED)
            {
                Console.WriteLine("Wygrałeś!");
                Console.WriteLine("ID: {0}, data: {1}, answer: {2}, operation: {3}", packet.ID, packet.Data, packet.OD, packet.OP);
                gameRunning = false;
                _udpClient.Close();
                Console.ReadLine();
            }
            if (packet.OP == OP_Enum.GUESS && packet.OD == OD_Enum.NOT_GUESSED)
            {
                Console.WriteLine("Nie zgadłeś!");
                InputNumber(packet);
            }
            if (packet.OP == OP_Enum.SUMMARY)
            {
                Console.WriteLine("Gra zakończona nie wygrałeś.");
                gameRunning = false;
                _udpClient.Close();
                Console.ReadLine();
            }
            if (packet.OP == OP_Enum.TIME && packet.OD == OD_Enum.NULL)
            {
                Console.WriteLine("ID: {0}, data: {1}, answer: {2}, operation: {3}", packet.ID, packet.Data, packet.OD, packet.OP);
                Console.WriteLine("Czas do końca: {0}", packet.Data);
            }
            if (packet.OP == OP_Enum.TIME && packet.OD == OD_Enum.TIME_OUT)
            {
                Console.WriteLine("ID: {0}, data: {1}, answer: {2}, operation: {3}", packet.ID, packet.Data, packet.OD, packet.OP);
                Console.WriteLine("GRA ZAKOŃCZONA, NIKT NIE ZGADNAL.");
                gameRunning = false;
                _udpClient.Close();
                Console.ReadLine();
            }
        }
Esempio n. 10
0
        static void Main(string[] args)
        {
            bool registered = false;

            SetupClient();
            do
            {
                Console.WriteLine("Wpisz register, aby się zarejestrować:");
                var msg = Console.ReadLine();
                if (msg.ToLower().Equals("register"))
                {
                    Data.Packet packet       = new Data.Packet(OD_Enum.REQUEST, OP_Enum.REGISTER);
                    string      stringToSend = packet.Serialize();
                    byte[]      msgToSend    = Encoding.UTF8.GetBytes(stringToSend);
                    _udpClient.Send(msgToSend, msgToSend.Length);

                    byte[]      recACK            = _udpClient.Receive(ref Program.remoteEndPoint);
                    string      ackString         = Encoding.UTF8.GetString(recACK);
                    Packet      ackPacket         = Packet.Deserialize(ackString);
                    byte[]      recvMessage       = _udpClient.Receive(ref Program.remoteEndPoint);
                    string      recvMessageString = Encoding.UTF8.GetString(recvMessage);
                    Data.Packet recPacket         = Data.Packet.Deserialize(recvMessageString);
                    Packet      sendACK           = new Packet(recPacket.ID, OD_Enum.NULL, OP_Enum.ACK);
                    string      ackSend           = sendACK.Serialize();
                    byte[]      ackSendByte       = Encoding.UTF8.GetBytes(ackSend);
                    _udpClient.Send(ackSendByte, ackSendByte.Length);
                    Console.WriteLine("Zarejestrowano, ID: {0}, data: {1}, answer: {2}, operation: {3}", recPacket.ID, recPacket.Data, recPacket.OD, recPacket.OP);
                    registered = true;
                }
                else
                {
                    Console.WriteLine("Niepoprawna komenda");
                    registered = false;
                }
            } while (!registered);
            Thread thread = new Thread(DataIN);

            thread.Start();
        }
Esempio n. 11
0
 private static void DataIN()
 {
     while (gameRunning)
     {
         try {
             byte[] recBuff   = _udpClient.Receive(ref remoteEndPoint);
             string recString = Encoding.UTF8.GetString(recBuff);
             if (recBuff.Length > 0)
             {
                 Data.Packet recvPacket       = Data.Packet.Deserialize(recString);
                 Packet      packet           = new Packet(recvPacket.ID, OD_Enum.NULL, OP_Enum.ACK);
                 string      serializedString = packet.Serialize();
                 byte[]      bytesAck         = Encoding.ASCII.GetBytes(serializedString);
                 _udpClient.Send(bytesAck, bytesAck.Length);
                 Thread dataManagerThread = new Thread(DataManager);
                 dataManagerThread.Start(recvPacket);
                 Console.WriteLine("ID: {0} OD: {1} OP: {2} DATA: {3}", recvPacket.ID, recvPacket.OD, recvPacket.OP, recvPacket.Data);
             }
         } catch (Exception e) {
             Console.WriteLine("Server disconnected");
         }
     }
 }
 private static void SubstractTime(object state)
 {
     if (time > 0)
     {
         Console.WriteLine(time);;
         if (tempTime < 10)
         {
             tempTime++;
             Console.WriteLine(tempTime);
         }
         if (tempTime == 10)
         {
             Thread thread = new Thread(SendTime);
             thread.Start(time);
             tempTime = 0;
         }
         time--;
     }
     else if (time == 0)
     {
         gameRunning = false;
         foreach (var playerData in _players)
         {
             try {
                 Data.Packet packetToSend = new Data.Packet(playerData.Value.SessionID, 0, OD_Enum.TIME_OUT,
                                                            OP_Enum.TIME);
                 string stringToSend = packetToSend.Serialize();
                 byte[] bytesToSend  = Encoding.UTF8.GetBytes(stringToSend);
                 _listener.Send(bytesToSend, bytesToSend.Length, playerData.Value.PlayerEndPoint);
             } catch (Exception e) {
                 Console.WriteLine("Client disconected: {0}", playerData.Value.SessionID);
             }
         }
         _listener.Close();
         timer.Change(Timeout.Infinite, Timeout.Infinite);
     }
 }
 public ThreadObject(IPEndPoint ep, Data.Packet p)
 {
     EndPoint = ep;
     Packet   = p;
 }