Пример #1
0
        public MyGame(DisboardGameInitData initData) : base(initData)
        {
            // 게임이 시작되었을 때의 로직을 입력합니다.


            // InitialPlayers에는 게임에 참가하는 인원들이 DisboardPlayer 타입으로 저장되어 있습니다.
            // 하지만 DisboardPlayer 타입에는 플레이어 이름 같은 것들만 있고, 게임에서 사용할 HP, MP와 같은 변수를 추가할 수 없습니다.

            // 그래서 플레이어가 가지는 정보를 관리할 수 있도록 MyPlayer 타입을 새롭게 정의하였습니다.
            // MyPlayer타입을 사용하려면, 기존 DisboardPlayer 타입으로 저장되어 있는 정보를 MyPlayer로 변환하는 과정이 필요합니다.

            _players    = InitialPlayers.Select(disboardPlayer => new MyPlayer(disboardPlayer)).ToList();
            _playerDict = _players.ToDictionary(keySelector: player => player.Disboard);

            // 새로 정의한 MyPlayer들의 NextPlayer를 지정합니다.
            foreach (var(index, player) in _players.Enumerate())
            {
                int nextPlayerIndex = (index == _players.Count - 1) ? 0 : index + 1;
                player.NextPlayer = _players[nextPlayerIndex];
            }


            _currentPlayer = _players.First();
            // _currentPlayer = _players[0];
            // 위 두 줄은 같은 코드입니다.


            // Send는 그룹 채팅에 메시지를 보내는 함수입니다.
            // SendImage, SendImages 함수도 사용할 수 있습니다.
            Send($"첫번째 플레이어: {_currentPlayer.Disboard.Mention}");
        }
Пример #2
0
        public EchoVisual(DisboardGameInitData initData) : base(initData)
        {
            var image = Render(() => new Label {
                Foreground = Brushes.White, Content = "EchoVisual started."
            });

            SendImage(image);
        }
Пример #3
0
 public Xanth(DisboardGameInitData initData) : base(initData)
 {
     if (InitialPlayers.Count == 2 || InitialPlayers.Count == 4)
     {
         State = TurnState.New(this, InitialPlayers);
     }
     else
     {
         Send("`Xanth는 2인, 4인으로만 플레이 가능합니다.`");
         OnFinish();
     }
 }
Пример #4
0
 public DisboardGame New(DisboardGameInitData initData) => new EchoVisual(initData);
Пример #5
0
 public DisboardGame New(DisboardGameInitData initData) => new Xanth(initData);
Пример #6
0
 public DisboardGame New(DisboardGameInitData initData) => new MyGame(initData);
Пример #7
0
 public Echo(DisboardGameInitData initData) : base(initData) => Send("`Echo Started.`");
Пример #8
0
 public DisboardGame New(DisboardGameInitData initData) => new Vechu(initData);
Пример #9
0
 public Vechu(DisboardGameInitData initData) : base(initData)
     => State = TurnState.New(this, InitialPlayers);
Пример #10
0
 public DisboardGame New(DisboardGameInitData initData) => new Yacht(initData);