Exemplo n.º 1
0
 /// <summary>
 /// constructor
 /// </summary>
 /// <param name="endPoint">for the connection</param>
 public MessageTransmiter(IPEndPoint endPoint)
 {
     ep            = endPoint;
     isOpen        = false;
     isMultiActive = false;
     statues       = null;
     delegates     = new List <EventHandler <StatuesEventArgs> >();
 }
Exemplo n.º 2
0
        /// <summary>
        /// Get a list of games
        /// </summary>
        /// <returns> a list of games that waiting to start </returns>
        public string[] GetListGames()
        {
            Statues stat = ClientSingleton.Client.SendMesseage("list");

            // check if the stat received currctly
            if (stat == null)
            {
                return(null);
            }
            return(JsonConvert.DeserializeObject <string[]>(stat.Message));
        }
Exemplo n.º 3
0
        /// <summary>
        /// executes the start command
        /// </summary>
        /// <param name="args">arguments of the command</param>
        /// <param name="client">to give the command</param>
        /// <returns> the Status</returns>
        public Status Execute(string[] args, TcpClient client)
        {
            string message = String.Join(" ", args);

            // send and receive a message
            messageRec.SendMessage(message);
            string result = Statues.FromJson(messageRec.GetMassage()).Message;

            Console.WriteLine(result);
            return(Status.KeepConnection);
        }
Exemplo n.º 4
0
        /// <summary>
        /// apply to join the game.
        /// </summary>
        /// <param name="game">the name of the game to join to</param>
        /// <returns>a maze</returns>
        public Maze JoinGame(string game)
        {
            Statues stat = ClientSingleton.Client.SendMesseage("join " + game);

            // check if the stat received currctly
            if (stat == null)
            {
                return(null);
            }
            return(Maze.FromJSON(stat.Message));
        }
Exemplo n.º 5
0
        /// <summary>
        /// function of starting the game
        /// </summary>
        /// <returns>a maze</returns>
        public Maze StartGame()
        {
            Statues stat = ClientSingleton.Client.SendMesseage("start " + mazeName +
                                                               " " + Rows + " " + Cols);

            // check if the stat received currctly
            if (stat == null)
            {
                return(null);
            }
            return(Maze.FromJSON(stat.Message));
        }
Exemplo n.º 6
0
 /// <summary>
 /// executes the close command
 /// </summary>
 /// <param name="args">arguments of the command</param>
 /// <param name="client">to give the command</param>
 /// <returns></returns>
 public Status Execute(string[] args, TcpClient client)
 {
     if (messageRec.IsMultiActive)
     {
         string message = String.Join(" ", args);
         // send and receive a message
         messageRec.SendMessage(message);
         Statues stat = Statues.FromJson(messageRec.GetMassage());
         Console.WriteLine(stat.Message);
         return(stat.Stat);
     }
     Console.WriteLine("Can't close a game without playing");
     return(Status.Disconnect);
 }
Exemplo n.º 7
0
 /// <summary>
 /// solve the maze
 /// </summary>
 /// <returns>string representation of the solution</returns>
 public string SolveMaze()
 {
     // if the solution is null
     if (mazeSolution == null)
     {
         // ask for a solution from the server
         Statues stat = ClientSingleton.Client.SendMesseage("solve " + MazeName +
                                                            " " + searchAlgoritm);
         // if received null from the server
         if (stat == null)
         {
             return(null);
         }
         // return the mazesolution using the solution from the server
         mazeSolution = MazeSolution.FromJson(stat.Message);
     }
     return(mazeSolution);
 }
Exemplo n.º 8
0
        /// <summary>
        /// sends a single message to the server and wait for response back
        /// </summary>
        /// <param name="message"> to send </param>
        public void SendSingleMessage(string message)
        {
            //  create a client and establish a connection
            TcpClient newClient = new TcpClient();

            newClient.Connect(ep);
            using (NetworkStream newStream = newClient.GetStream())
                using (BinaryWriter newWriter = new BinaryWriter(newStream))
                    using (BinaryReader newReader = new BinaryReader(newStream))
                    {
                        // write and erad a message
                        newWriter.Write(message);
                        string result = newReader.ReadString();
                        statues = Statues.FromJson(result);
                    }
            // close the client
            newClient.Close();
        }
Exemplo n.º 9
0
 /// <summary>
 /// close an Open connection to the server
 /// </summary>
 public void Close()
 {
     // turn off the flags
     isMultiActive = false;
     isOpen        = false;
     // dispose of the stream resourecs
     writer.Dispose();
     reader.Dispose();
     stream.Dispose();
     client.Close();
     // unsign all the delegates in the event
     foreach (EventHandler <StatuesEventArgs> e in delegates)
     {
         NotifyAboutMessage -= e;
     }
     delegates.Clear();
     statues = null;
 }
Exemplo n.º 10
0
        /// <summary>
        /// gets a statues from the server using the Open connection
        /// </summary>
        /// <returns>the statues received from the server</returns>
        public Statues GetStatues()
        {
            // wait for the receiver to get a message
            while (statues == null)
            {
                if (isOpen)
                {
                    Thread.Sleep(1);
                }
                else
                {
                    return(null);
                }
            }
            // save the message at current and reset the messageReceiverd to null
            Statues current = statues;

            statues = null;
            return(current);
        }
Exemplo n.º 11
0
 /// <summary>
 /// send a move to the other player
 /// </summary>
 /// <param name="direction"></param>
 public void SendMove(Direction direction)
 {
     Statues stat = ClientSingleton.Client.SendMesseage("play " + direction.ToString());
 }
Exemplo n.º 12
0
 /// <summary>
 /// finished game
 /// </summary>
 public void FinishGame()
 {
     Statues stat = ClientSingleton.Client.SendMesseage("finish " + MazeName);
 }
Exemplo n.º 13
0
 /// <summary>
 /// close the game
 /// </summary>
 public void CloseGame()
 {
     Statues stat = ClientSingleton.Client.SendMesseage("close " + MazeName);
 }
Exemplo n.º 14
0
        /// <summary>
        /// opens a new multiplayer connection to the client
        /// </summary>
        public void Open()
        {
            // sets bools to true and message to null
            isMultiActive = true;
            isOpen        = true;

            // create a client and Open the streams
            client = new TcpClient();
            client.Connect(ep);
            stream = client.GetStream();
            reader = new BinaryReader(stream);
            writer = new BinaryWriter(stream);

            // task to listen for the receiving stream. ready for messages from the server
            receiver = new Task(() =>
            {
                // do as long as the isOpen bool is true
                while (isOpen)
                {
                    // read only if the last message received was already taken
                    if (statues == null)
                    {
                        string result;
                        Status status;
                        try
                        {
                            // get a message from the server and parse it to Statues
                            result  = reader.ReadString();
                            statues = Statues.FromJson(result);
                            status  = statues.Stat;
                            NotifyAboutMessage?.Invoke(this, new StatuesEventArgs(statues));
                        }
                        catch (Exception)
                        {
                            MessageBox.Show("Connect to the server have been closed");
                            // an error in the connection
                            statues = new Statues();
                            statues.SetStatues(Status.Close, "Error receiveing message from the server");
                            status = Status.Disconnect;
                        }
                        // switch through the different options received from the server
                        switch (status)
                        {
                        case Status.Disconnect:
                            {
                                Close();
                                break;
                            }

                        case Status.Close:
                            {
                                Close();
                                break;
                            }

                        case Status.Play:
                            {
                                statues = null;
                                continue;
                            }

                        case Status.CloseGame:
                            {
                                // close the connection
                                writer.Write("exit");
                                Close();
                                break;
                            }

                        case Status.Finish:
                            {
                                // close the connection
                                writer.Write("exit");
                                Close();
                                break;
                            }

                        default:
                            {
                                break;
                            }
                        }
                    }
                    // wait for some one to receive the message
                    else
                    {
                        Thread.Sleep(1);
                    }
                }
            });
            // start the thread
            receiver.Start();
        }
Exemplo n.º 15
0
 public StatuesEventArgs(Statues s)
 {
     stat = s;
 }
Exemplo n.º 16
0
 public T4Attribute(int group, Statues statues, Element element, string info)
 {
 }
Exemplo n.º 17
0
        /// <summary>
        /// opens a new multiplayer connection to the client
        /// </summary>
        public void Open()
        {
            // sets bools to true and message to null
            messageReceived = null;
            isMultiActive   = true;
            isOpen          = true;

            // create a client and Open the streams
            client = new TcpClient();
            client.Connect(ep);
            stream = client.GetStream();
            reader = new BinaryReader(stream);
            writer = new BinaryWriter(stream);

            // task to listen for the receiving stream. ready for messages from the server
            receiver = new Task(() =>
            {
                // do as long as the isOpen bool is true
                while (isOpen)
                {
                    // read only if the last message received was already taken
                    if (messageReceived == null)
                    {
                        string result;
                        Statues statues;
                        try
                        {
                            // get a message from the server and parse it to Statues
                            result  = reader.ReadString();
                            statues = Statues.FromJson(result);
                        } catch (Exception e)
                        {
                            // an error in the connection
                            statues = new Statues();
                            statues.SetStatues(Status.Close, "Error" + e.ToString());
                            result = "Error";
                            break;
                        }
                        // switch through the different options received from the server
                        switch (statues.Stat)
                        {
                        case Status.Disconnect:
                            {
                                Close();
                                break;
                            }

                        case Status.Close:
                            {
                                Close();
                                break;
                            }

                        case Status.PrintAndContinue:
                            {
                                Console.WriteLine(statues.Message);
                                continue;
                            }

                        case Status.PrintAndStop:
                            {
                                // print the message and close the connection
                                Console.WriteLine(statues.Message);
                                writer.Write("exit");
                                string feedback = reader.ReadString();
                                Close();
                                break;
                            }

                        case Status.Error:
                            {
                                // print the error message
                                Console.WriteLine(statues.Message);
                                break;
                            }

                        default:
                            {
                                break;
                            }
                        }
                        // put the message from the server into the messageReceived var.
                        messageReceived = result;
                    }
                    // wait for some one to receive the message
                    else
                    {
                        Thread.Sleep(1);
                    }
                }
            });
            // start the thread
            receiver.Start();
        }
        private void AddStatue(Statues name)
        {
            IGestureSegment[] segments = null;
            switch (name)
            {
            case Statues.HandUp:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new HandUpSegment();
                }
                break;

            case Statues.HandRight:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new HandRightSegment();
                }
                break;

            case Statues.HandLeft:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new HandLeftSegment();
                }
                break;

            case Statues.HandBottom:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new HandBottomSegment();
                }
                break;

            case Statues.Reset:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new ResetSegment();
                }
                break;

            case Statues.Jump:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new JumpSegment();
                }
                break;

            case Statues.TurnRight:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new TurnRightSegment();
                }
                break;

            case Statues.TurnLeft:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new TurnLeftSegment();
                }
                break;

            case Statues.OpenRepeat:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new OpenRepeatSegment();
                }
                break;

            case Statues.CloseRepeat:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new CloseRepeatSegment();
                }
                break;

            case Statues.Stop:
                segments = new IGestureSegment[15];
                for (int i = 0; i < 15; i++)
                {
                    segments[i] = new StopSegment();
                }
                break;

            case Statues.GreenFlag:
                segments = new IGestureSegment[15];
                for (int i = 0; i < 15; i++)
                {
                    segments[i] = new GreenFlagSegment();
                }
                break;

            case Statues.Grow:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new GrowSegment();
                }
                break;

            case Statues.Shrink:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new ShrinkSegment();
                }
                break;

            case Statues.ChangeScene:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new ChangeSceneSegment();
                }
                break;

            case Statues.NormalSize:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new NormalSizeSegment();
                }
                break;

            case Statues.Show:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new ShowSegment();
                }
                break;

            case Statues.Hide:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new HideSegment();
                }
                break;

            case Statues.Speed:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new SpeedSegment();
                }
                break;

            case Statues.Wait:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new WaitSegment();
                }
                break;

            case Statues.TouchAnotherSprite:
                segments = new IGestureSegment[NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new TouchAnotherSpriteSegment();
                }
                break;

            case Statues.WaveRight:
                segments = new IGestureSegment[2 * NB_FRAME];
                for (int i = 0; i < NB_FRAME; i++)
                {
                    segments[i] = new WaveRightSegment1();
                }
                for (int i = NB_FRAME; i < 2 * NB_FRAME; i++)
                {
                    segments[i] = new WaveRightSegment2();
                }
                break;

            case Statues.FingerCount:
                segments = new IGestureSegment[20];
                for (int i = 0; i < 20; i++)
                {
                    segments[i] = new FingerCount();
                }
                break;

            default:
                break;
            }

            Gesture gesture = new Gesture(name.ToString(), segments);

            gesture.GestureDetected += OnGestureDetected;

            _gestures.Add(gesture);
        }