Example #1
0
 private void newMove(MessageModel.Move move)
 {
     UpdateStatus("Warte auf Gegner...");
     if (connectionMode.Equals("client"))
     {
         MessageModel moveMessage = new MessageModel();
         moveMessage.setMoves(MessageModel.Move.None, move);
         sendMessage(moveMessage);
     }
     else
     {
         serverMove = move;
         processMoves();
     }
 }
Example #2
0
 private string getMoveText(MessageModel.Move move)
 {
     if (move == MessageModel.Move.Paper)
     {
         return("Papier");
     }
     else if (move == MessageModel.Move.Rock)
     {
         return("Stein");
     }
     else if (move == MessageModel.Move.Scissors)
     {
         return("Schere");
     }
     else
     {
         return("Fehler");
     }
 }
Example #3
0
 private int determineWinner(MessageModel.Move first, MessageModel.Move second)
 {
     // Unentschieden
     if (first == second)
     {
         return(0);
     }
     if (first == MessageModel.Move.Scissors)
     {
         if (second == MessageModel.Move.Paper)
         {
             return(1);
         }
         if (second == MessageModel.Move.Rock)
         {
             return(2);
         }
     }
     if (first == MessageModel.Move.Rock)
     {
         if (second == MessageModel.Move.Paper)
         {
             return(2);
         }
         if (second == MessageModel.Move.Scissors)
         {
             return(1);
         }
     }
     if (first == MessageModel.Move.Paper)
     {
         if (second == MessageModel.Move.Scissors)
         {
             return(2);
         }
         if (second == MessageModel.Move.Rock)
         {
             return(1);
         }
     }
     return(-1);
 }
Example #4
0
        public LogicController(string connectionMode, string playerName, string key, int port, int rounds, string host)
        {
            this.connectionMode = connectionMode;
            this.playerName     = playerName;
            this.port           = port;
            this.rounds         = rounds;
            this.host           = host;
            isGameOver          = false;
            currentRound        = 0;
            pointsServer        = 0;
            pointsClient        = 0;
            serverMove          = MessageModel.Move.None;
            clientMove          = MessageModel.Move.None;

            cryptAlgorithm         = Rijndael.Create();
            deriveBytes            = new Rfc2898DeriveBytes(key, new byte[] { 0x5a, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x20, 0x43, 0x58, 0x6c, 0x6f, 0x32, 0x69, 0x64, 0x6b });
            cryptAlgorithm.Padding = PaddingMode.ISO10126;
            cryptAlgorithm.Key     = deriveBytes.GetBytes(32);
            cryptAlgorithm.IV      = deriveBytes.GetBytes(16);
            encryptor = cryptAlgorithm.CreateEncryptor();
            decryptor = cryptAlgorithm.CreateDecryptor();
        }
Example #5
0
        private void processMoves()
        {
            if ((serverMove != MessageModel.Move.None) && (clientMove != MessageModel.Move.None))
            {
                // Beide Spieler haben ihren Spielzug durchgeführt
                int winner = determineWinner(serverMove, clientMove);

                MessageModel roundOverMessage = new MessageModel();
                if (winner == 1)
                {
                    // Spieler auf Server-Seite hat gewonnen

                    pointsServer++;
                    roundOverMessage.setRoundOver(pointsServer, pointsClient, serverMove, clientMove, serverName);
                    UpdateStatus(serverName + " hat die Runde gewonnen!");
                }
                else if (winner == 2)
                {
                    // Spieler auf Client-Seite hat gewonnen

                    pointsClient++;
                    roundOverMessage.setRoundOver(pointsServer, pointsClient, serverMove, clientMove, clientName);
                    UpdateStatus(clientName + " hat die Runde gewonnen!");
                }
                else if (winner == 0)
                {
                    // Unentschieden

                    roundOverMessage.setRoundOver(pointsServer, pointsClient, serverMove, clientMove, "Niemand");
                    UpdateStatus("Niemand hat die Runde gewonnen!");
                    currentRound--;
                }
                UpdateOpponentText(getMoveText(clientMove));
                UpdatePoints(pointsServer, pointsClient);
                sendMessage(roundOverMessage);

                currentRound++;
                if (currentRound >= rounds)
                {
                    // Letzte Runde vorbei

                    isGameOver = true;
                    MessageModel gameOverMessage = new MessageModel();

                    if (pointsServer > pointsClient)
                    {
                        gameOverMessage.setGameOver(serverName);
                        UpdateStatus("Spiel vorbei! - " + serverName + " hat das Spiel gewonnen!");
                    }
                    else if (pointsServer < pointsClient)
                    {
                        gameOverMessage.setGameOver(clientName);
                        UpdateStatus("Spiel vorbei! - " + clientName + " hat das Spiel gewonnen!");
                    }
                    else
                    {
                        gameOverMessage.setGameOver("Niemand");
                        UpdateStatus("Spiel vorbei! - Niemand hat das Spiel gewonnen!");
                    }

                    sendMessage(gameOverMessage);
                }
                else
                {
                    serverMove = MessageModel.Move.None;
                    clientMove = MessageModel.Move.None;
                    UnlockButtons();
                }
            }
        }