public async Task NewGame() { var random = new Random(); var gameId = random.Next().ToString(); await Groups.Add(Context.ConnectionId, gameId); var game = new Game(gameId); var player = new Player(Context.ConnectionId, "P1"); GameManager.Instance.AddGame(game); GameManager.Instance.AddPlayerToGame(gameId, player); Clients.Group(gameId).getGameId(gameId); }
public Player Play(Player playerOne, Player playerTwo) { if (playerOne.SelectedShape == null || playerTwo.SelectedShape == null) { throw new Exception("Cannot play with no shapes selection"); } if (playerOne.SelectedShape.ShapeType == playerTwo.SelectedShape.ShapeType) { return null; } if (playerOne.SelectedShape.Defeat(playerTwo.SelectedShape)) { return playerOne; } return playerTwo; }
public void PlayerTwoWinsPlayerOne() { var playerOne = new Player("juan"); var playerTwo = new Player("yagi"); var shapeThatWins = new Mock<IShape>(); shapeThatWins.Setup(s => s.Defeat(It.IsAny<IShape>())).Returns(true); shapeThatWins.Setup(s => s.ShapeType).Returns(ShapeType.Rock); var shapeThatLoses = new Mock<IShape>(); shapeThatLoses.Setup(s => s.Defeat(It.IsAny<IShape>())).Returns(false); shapeThatLoses.Setup(s => s.ShapeType).Returns(ShapeType.Scissor); playerOne.SelectedShape = shapeThatLoses.Object; playerTwo.SelectedShape = shapeThatWins.Object; var game = new Game(); var winner = game.Play(playerOne, playerTwo); Assert.AreEqual(playerTwo, winner); }
public void PlayerOneDrawPlayerTwo() { var playerOne = new Player("juan"); var playerTwo = new Player("yagi"); var shapeOne = new Mock<IShape>(); shapeOne.Setup(s => s.Defeat(It.IsAny<IShape>())).Returns(true); shapeOne.Setup(s => s.ShapeType).Returns(ShapeType.Rock); var shapeTwo = new Mock<IShape>(); shapeTwo.Setup(s => s.Defeat(It.IsAny<IShape>())).Returns(false); shapeTwo.Setup(s => s.ShapeType).Returns(ShapeType.Rock); playerOne.SelectedShape = shapeOne.Object; playerTwo.SelectedShape = shapeTwo.Object; var game = new Game(); var winner = game.Play(playerOne, playerTwo); Assert.IsNull(winner); }
public async Task JoinGame(string gameId){ var players = GameManager.Instance.GetPlayersFromGameId(gameId); if (players.Count > 2) { await Clients.Group(gameId).onError("Sorry, I'm a little bit lazy right now... so only two players will be able to play in one game"); } var game = GameManager.Instance.Games.Single(g => g.Id == gameId); var player = new Player(Context.ConnectionId, "P2"); GameManager.Instance.AddPlayerToGame(gameId, player); if (game == null) { Clients.Caller.playerConnected("No Game to Connect... Sorry!"); } await Groups.Add(Context.ConnectionId, gameId); Clients.Group(gameId).playerConnected(gameId, "A new player is online!"); }
public void AddPlayerToGame(string gameId, Player player) { _players[gameId].Add(player); }