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}"); }
public EchoVisual(DisboardGameInitData initData) : base(initData) { var image = Render(() => new Label { Foreground = Brushes.White, Content = "EchoVisual started." }); SendImage(image); }
public Xanth(DisboardGameInitData initData) : base(initData) { if (InitialPlayers.Count == 2 || InitialPlayers.Count == 4) { State = TurnState.New(this, InitialPlayers); } else { Send("`Xanth는 2인, 4인으로만 플레이 가능합니다.`"); OnFinish(); } }
public DisboardGame New(DisboardGameInitData initData) => new EchoVisual(initData);
public DisboardGame New(DisboardGameInitData initData) => new Xanth(initData);
public DisboardGame New(DisboardGameInitData initData) => new MyGame(initData);
public Echo(DisboardGameInitData initData) : base(initData) => Send("`Echo Started.`");
public DisboardGame New(DisboardGameInitData initData) => new Vechu(initData);
public Vechu(DisboardGameInitData initData) : base(initData) => State = TurnState.New(this, InitialPlayers);
public DisboardGame New(DisboardGameInitData initData) => new Yacht(initData);