public Player MoveToNextPlayer() { if (stepBack || (makaoStack.TopCard == new Card(CardRank.King, CardSuit.Pike) && TopCardActive)) { return(HandleStepBack()); } if (playersInGame[currentPlayerIndex].Cards.Count == 0) { playersInGame.RemoveAt(currentPlayerIndex); if (playersInGame.Count < 2) { GameEnded?.Invoke(this, EventArgs.Empty); return(null); } currentPlayerIndex %= playersInGame.Count; } else { currentPlayerIndex = (currentPlayerIndex + 1) % playersInGame.Count; } CurrentPlayerChanged?.Invoke(this, EventArgs.Empty); return(CurrentPlayer); }
protected void OnCurrentPlayerChanged(string newCurrentPlayerName) { CurrentPlayerChanged?.Invoke(this, new PlayerEventArgs { PlayerName = newCurrentPlayerName }); }
public void Start(string firstPlayerName, string secondPlayerName) { firstPlayer = CreatePlayer(firstPlayerName); secondPlayer = CreatePlayer(secondPlayerName); isFirstPlayerCurrent = true; CurrentPlayerChanged?.Invoke(CurrentPlayer); ChangeStage(GameStage.ArrangingShips); }
/// <summary> /// ゲームをリセットします。 /// </summary> public void ResetGame() { this.board.ResetBoard(PlayerForm.None); CurrentPlayer = PlayerForm.Circle; CurrentPlayerChanged?.Invoke(this, EventArgs.Empty); BoardChanged?.Invoke(this, EventArgs.Empty); this.GameStatus = GameStatus.BeforeStart; Winner = PlayerForm.None; }
/// <summary> /// <see cref="CurrentPlayer"/>を切り替えます。 /// </summary> private void SwitchCurrentPleyer() { if (CurrentPlayer == PlayerForm.Circle) { CurrentPlayer = PlayerForm.Cross; CurrentPlayerChanged?.Invoke(this, EventArgs.Empty); } else if (CurrentPlayer == PlayerForm.Cross) { CurrentPlayer = PlayerForm.Circle; CurrentPlayerChanged?.Invoke(this, EventArgs.Empty); } }
private void ResetGame() { IsBlackPlayerCurrent = true; _isPlayerBeforePassed = false; CurrentPlayerChanged?.Invoke(); Board.EmptyBoard(); Score = new Dictionary <BoardColor, int> { { BoardColor.Black, 0 }, { BoardColor.White, 0 } }; ScoreChanged?.Invoke(BoardColor.Black); ScoreChanged?.Invoke(BoardColor.White); }
private void ChangeCurrentPlayer() { IsBlackPlayerCurrent = !IsBlackPlayerCurrent; CurrentPlayerChanged?.Invoke(); }
private Player HandleStepBack() { SearchningPlayerDelegate getPreceedingPlayerIndex = (int cur) => { return((cur - 1 < 0) ? playersInGame.Count - 1 : cur - 1); }; SearchningPlayerDelegate getProceedingPlayerIndex = (int cur) => { return((cur + 1) % playersInGame.Count); }; if (playersInGame[currentPlayerIndex].Cards.Count == 0) { playersInGame.RemoveAt(currentPlayerIndex); if (playersInGame.Count < 2) { GameEnded?.Invoke(this, EventArgs.Empty); return(null); } if (!stepBack) { stepBack = true; for (currentPlayerIndex = getPreceedingPlayerIndex(currentPlayerIndex); playersInGame[currentPlayerIndex].TurnsToWait > 0; currentPlayerIndex = getPreceedingPlayerIndex(currentPlayerIndex)) { } } else { stepBack = false; for (currentPlayerIndex = currentPlayerIndex % playersInGame.Count; playersInGame[currentPlayerIndex].TurnsToWait > 0; currentPlayerIndex = getProceedingPlayerIndex(currentPlayerIndex)) { } } } else { if (!stepBack) { stepBack = true; for (currentPlayerIndex = getPreceedingPlayerIndex(currentPlayerIndex); playersInGame[currentPlayerIndex].TurnsToWait > 0; currentPlayerIndex = getPreceedingPlayerIndex(currentPlayerIndex)) { } } else { stepBack = false; for (currentPlayerIndex = getProceedingPlayerIndex(currentPlayerIndex); playersInGame[currentPlayerIndex].TurnsToWait > 0; currentPlayerIndex = getProceedingPlayerIndex(currentPlayerIndex)) { } } } CurrentPlayerChanged?.Invoke(this, EventArgs.Empty); return(playersInGame[currentPlayerIndex]); }
private void MoveToNextPlayer() { isFirstPlayerCurrent = !isFirstPlayerCurrent; CurrentPlayerChanged?.Invoke(CurrentPlayer); }
private void OnCurrentPlayerChanged() { CurrentPlayerChanged?.Invoke(CurrentPlayer); }