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(); } }
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"); } }
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); }
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(); }
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(); } } }