Beispiel #1
0
        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);
        }
Beispiel #2
0
 protected void OnCurrentPlayerChanged(string newCurrentPlayerName)
 {
     CurrentPlayerChanged?.Invoke(this, new PlayerEventArgs
     {
         PlayerName = newCurrentPlayerName
     });
 }
Beispiel #3
0
        public void test2()
        {
            CurrentPlayerChanged g1 = new CurrentPlayerChanged(new GameDto("012345678", "Player1"));
            CurrentPlayerChanged g2 = new CurrentPlayerChanged(new GameDto("012345678", "Player1"));

            Assert.AreEqual <CurrentPlayerChanged>(g1, g2);
        }
Beispiel #4
0
 public void Start(string firstPlayerName, string secondPlayerName)
 {
     firstPlayer          = CreatePlayer(firstPlayerName);
     secondPlayer         = CreatePlayer(secondPlayerName);
     isFirstPlayerCurrent = true;
     CurrentPlayerChanged?.Invoke(CurrentPlayer);
     ChangeStage(GameStage.ArrangingShips);
 }
Beispiel #5
0
 /// <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;
 }
Beispiel #6
0
 void _OnCurrentPlayerChanged(CurrentPlayerChanged e)
 {
     if (e.newCurr == Player.L)
     {
         currRound++;
     }
     if (e.newCurr != Player.NaN)
     {
         LogLine(e.newCurr, "TURN STARTED");
     }
 }
Beispiel #7
0
 public void Handle(CurrentPlayerChanged message)
 {
     if (message.Player == opponent.colour)
     {
         var move = opponent.GetMove(Board);
         if (move != null)
         {
             Board.MovePiece(move[0], move[1]);
             ChessingtonServices.EventAggregator.Publish(new AIMoveUpdate(move[1]));
         }
     }
 }
Beispiel #8
0
    void _OnCurrentPlayerChanged(CurrentPlayerChanged e)
    {
        if (!active)
        {
            return;
        }

        if (e.newCurr == player)
        {
            StartCoroutine(DoTurn());
        }
    }
Beispiel #9
0
 /// <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);
     }
 }
Beispiel #10
0
        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);
        }
Beispiel #11
0
        public void Handle(CurrentPlayerChanged message)
        {
            CurrentPlayer = Enum.GetName(typeof(Player), message.Player);

            Player player      = message.Board.CurrentPlayer;
            Player otherPlayer = player.opposingPlayer();

            if (message.Board.PlayerHasNoMoves(player))
            {
                if (message.Board.PlayerIsInCheck(player))
                {
                    ChessingtonServices.EventAggregator.Publish(new PlayerHasWon(otherPlayer));
                }
                else
                {
                    ChessingtonServices.EventAggregator.Publish(new Stalemate());
                }
            }
        }
Beispiel #12
0
        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]);
        }
 public void Handle(CurrentPlayerChanged DomainEvent)
 {
     this.gameView.Render(DomainEvent.GameDtoRefreshed);
 }
Beispiel #14
0
 private void OnCurrentPlayerChanged()
 {
     CurrentPlayerChanged?.Invoke(CurrentPlayer);
 }
Beispiel #15
0
 public void Apply(CurrentPlayerChanged currentPlayerChanged)
 {
     _currentPlayer = _players.First(x => x.Id == currentPlayerChanged.PlayerId);
 }
Beispiel #16
0
 private void ChangeCurrentPlayer()
 {
     IsBlackPlayerCurrent = !IsBlackPlayerCurrent;
     CurrentPlayerChanged?.Invoke();
 }
Beispiel #17
0
 private void MoveToNextPlayer()
 {
     isFirstPlayerCurrent = !isFirstPlayerCurrent;
     CurrentPlayerChanged?.Invoke(CurrentPlayer);
 }
Beispiel #18
0
 public void Handle(CurrentPlayerChanged message)
 {
     CurrentPlayer = Enum.GetName(typeof(Player), message.Player);
 }
Beispiel #19
0
 void _OnCurrentPlayerChanged(CurrentPlayerChanged e)
 {
     currPlayer = e.newCurr;
 }