public TicTacToeForm(string playername1, string playername2) { InitializeComponent(); player1 = new Player(playername1, GameSymbol.Circle); player2 = new Player(playername2, GameSymbol.Cross); }
public GameController(Player player1, Player player2, int boardSize = 3) { this.player = new Player[2] { player1, player2 }; this.board = new GameBoard(new GameVerifierFactory(VerifierType.Classic), boardSize); Random random = new Random(); this.currentPlayer = random.Next(0, 2); }
public GameState InsertMoveInGameBoard(Player player, Point position) { if (!this.verifier.IsMoveAllowed(position)) { return GameState.MoveNotAllowed; } this.GameBoardArray[position.X, position.Y].SelectedByPlayer = player; if (this.verifier.IsGameOver()) { return GameState.GameOver; } if (this.verifier.IsPat()) { return GameState.Pat; } return GameState.None; }
/// <summary> /// Diese Methode handelt einen Zug von einem Spieler ab. /// Sie überprüft den aktuellen Spiel Status und fügt einen Zug auf das Spielfeld ein. /// </summary> /// <param name="player">Der aktuelle Spieler</param> /// <param name="point">Die Stelle wo der aktuelle Spieler einen Zug gemacht hat</param> public void Turn(Player player, Point point) { // Abfrage ob das Spiel bereits um ist bzw. ob ein Unentschieden erzielt wurde if (this.gameState == GameState.GameOver || this.gameState == GameState.Pat || this.gameState == GameState.GiveUp) { return; } // Überprüfen, ob der Zug von dem aktuellen Spieler gemacht wurde if (player != this.player[this.currentPlayer]) { return; } // Das Spielfeld darüber informieren, dass ein Zug gemacht wurde this.gameState = this.board.InsertMoveInGameBoard(player, point); if (this.gameState == GameState.MoveNotAllowed) { return; } // Die Interessenten darüber informieren, dass ein Zug gemacht wurde turnMadeEventArgsList.Add(new TurnMadeEventArgs() { Position = point, Symbol = this.player[this.currentPlayer].Symbol, Color = Color.Red }); TurnMade.Invoke(this, turnMadeEventArgsList); // Wenn das Spiel vorbei ist, wird die Statistik hochgezählt if (this.gameState == GameState.GameOver) { this.player[this.currentPlayer].Score.Wins++; this.player[1 - this.currentPlayer].Score.Defeats++; this.currentPlayer = 1 - this.currentPlayer; NotifyGameStateChanged.Invoke(this, GetGameStatusAsEventArgs(point)); return; } // Wenn ein Unentschieden erzielt wurde, dann die Statistik hochzähhlen if (this.gameState == GameState.Pat) { this.player[this.currentPlayer].Score.Pats++; this.player[1 - this.currentPlayer].Score.Pats++; this.currentPlayer = 1 - this.currentPlayer; NotifyGameStateChanged.Invoke(this, GetGameStatusAsEventArgs(point)); return; } this.currentPlayer = 1 - this.currentPlayer; NotifyGameStateChanged.Invoke(this, GetGameStatusAsEventArgs(point)); }