public static string GetPlayerMenuChoise(LudoGame game, GameBoard board) { Console.Clear(); Tools.PrintGameDetails(game); Console.Write($"Now it's "); Tools.SetConsoleColor(game.NextPlayer.Color); Console.Write(game.NextPlayer.Name); Console.ResetColor(); Console.WriteLine(" turn\n" + $"1) Throw dice\n" + $"2) Save game to file\n" + $"3) Exit game"); board.PrintBoard(game.PieceSetup); string input; if (game.NextPlayer.Type == (PlayerType)1) { input = "1"; } else { input = Console.ReadLine(); input = (input == "") ? "1" : input; } return(input); }
public void StartGame_StartsLudoGameWithNoPlayers_Exception() { // Arrange LudoGame sut = new LudoGame(); // Act + Assert Assert.Throws <Exception>(() => sut.StartGame()); }
public void StartGame_StartsLudoGameWithOnePlayer_Exception() { // Arrange LudoPlayer lp = new LudoPlayer(); LudoGame sut = new LudoGame(); // Act + Assert Assert.Throws <Exception>(() => sut.StartGame(lp)); }
public JsonResult Get(int gameId, int playerId) { LudoGame game = _games.GetOrCreateGame(gameId); //tar ut den spelaren som har just detta id, player blir då ett objekt Player player = game.GetPlayers().Single(m => m.PlayerId == playerId); //gö om detta till en JSON return(new JsonResult(player)); }
public JsonResult Post(int id, string name, int color) { // hämtar spelet där spelaren skall skapas LudoGame game = _games.GetOrCreateGame(id); // lägg till en ny spelare till spelet Player player = game.AddPlayer(name, (PlayerColor)color); // retunera den nya spelaren return(new JsonResult(player)); }
public static void PrintGameDetails(LudoGame game) { Console.WriteLine($"{game.GameName} (id: {game.LudoGameId}) moves {game.Moves.Count}"); foreach (var player in game.GamePlayers.Players) { SetConsoleColor(player.Color); Console.WriteLine($"{player.Name} ({player.Type}) "); Console.ForegroundColor = ConsoleColor.White; } Console.WriteLine(); }
public static void WriteToFile(string name, LudoGame game) { var options = new JsonSerializerOptions { Encoder = JavaScriptEncoder.Create(UnicodeRanges.All), WriteIndented = true }; string jsonString = JsonSerializer.Serialize(game, options); File.WriteAllText($"SavedGames/{name}.json", jsonString); }
public JsonResult Get(int id) { // hämtar spelet där spelaren skall skapas LudoGame game = _games.GetOrCreateGame(id); // hämta alla spelare i spelet Player[] players = game.GetPlayers(); // retunera all spelare i JSON format return(new JsonResult(players)); }
public void Given_NextTurnBlue_And_BlueAtPos10_And_RedAtPos15_DiceResult5_Expect_BlueAtPos15_And_RedAtPosNull() { //Arrange var gamePieceBlue = new GamePiece() { Color = 0, TrackPosition = 10 }; var gamePieceRed = new GamePiece() { Color = (GameColor)1, TrackPosition = 15 }; var gamePlayer = new GamePlayer() { Color = 0 }; var diceThrowResult = 5; var gameMove = new GameMove() { Player = gamePlayer, Piece = gamePieceBlue, OriginalPosition = gamePieceBlue.TrackPosition, DiceThrowResult = diceThrowResult }; var board = new GameBoard(); board.MainTrack[10] = gamePieceBlue; board.MainTrack[15] = gamePieceRed; var game = new LudoGame() { PieceSetup = new List <GamePiece>() }; game.PieceSetup.Add(gamePieceBlue); game.PieceSetup.Add(gamePieceRed); game.Moves.Add(gameMove); var gameRunner = new GameRunner() { Game = game, Board = board }; //Act gameRunner.ExecuteMove(); //Assert Assert.Null(gamePieceRed.TrackPosition); Assert.Equal((GameColor)0, board.MainTrack[15].Color); }
public JsonResult Delete(int gameId, int playerId) { LudoGame game = _games.GetOrCreateGame(gameId); //tar ut den spelaren som har just detta id Player player = game.GetPlayers().Single(m => m.PlayerId == playerId); game.DeletePlayer(player); return(new JsonResult(game.GetPlayers())); }
public JsonResult Get(int gameId) { LudoGame game = _games.GetOrCreateGame(gameId); return(new JsonResult(new { gameId, currentPlayer = game.GetCurrentPlayer(), players = game.GetPlayers(), pieces = game.GetAllPiecesInGame() })); }
static void Main(string[] args) { LudoGoose game = new LudoGoose(); Hardware hardware = new Hardware(1152, 652, 24, false); WelcomeScreen welcome = new WelcomeScreen(hardware); MenuScreen menu = new MenuScreen(hardware); CreditsScreen credits = new CreditsScreen(hardware); LudoGame ludo = new LudoGame(hardware); PlayerSelect playerSelect = new PlayerSelect(hardware); RulesScreen rules = new RulesScreen(hardware); GooseController goose = new GooseController(hardware); do { hardware.ClearScreen(); welcome.Show(); if (!welcome.Exit()) { menu.Show(); switch (menu.GetChosenGame()) { case 1: ludo.PlayGame(menu.GetLang()); break; case 2: ludo.PlayLimitless(menu.GetLang()); break; case 3: ludo.PlayOnline(menu.GetLang()); break; case 4: ludo.PlayVsIA(menu.GetLang()); break; case 5: goose.Play(menu.GetLang()); break; case 6: credits.Show(menu.GetLang()); break; case 7: rules.Show(menu.GetLang()); break; } } } while (!welcome.Exit()); }
public void AddPlayer_FirstPlayer_ReturnNotNull() { // Arrange var game = new LudoGame(new DieceMock()); // Act var player = game.AddPlayer("player1", PlayerColor.Blue); // Assert Assert.NotNull(player); Assert.Equal(0, player.PlayerId); }
public void CurrentPlayer_StartsLudoGameWithTwoPlayers_CurrentPlayerIsPlayer1() { // Arrange LudoPlayer lp1 = new LudoPlayer("player1"); LudoPlayer lp2 = new LudoPlayer("player2"); LudoGame sut = new LudoGame(); // Act sut.StartGame(lp1, lp2); // Assert Assert.Equal("player1", sut.CurrentPlayer.PlayerName); }
public void StartGame_StartsLudoGameWithFivePlayers_Exception() { // Arrange LudoPlayer lp1 = new LudoPlayer(); LudoPlayer lp2 = new LudoPlayer(); LudoPlayer lp3 = new LudoPlayer(); LudoPlayer lp4 = new LudoPlayer(); LudoPlayer lp5 = new LudoPlayer(); LudoGame sut = new LudoGame(); // Act + Assert Assert.Throws <Exception>(() => sut.StartGame(lp1, lp2, lp3, lp4, lp5)); }
public void StartGame_StartsLudoGameWithTwoPlayer_GameGuidWhichIsNotEmptyGuid() { // Arrangea LudoPlayer lp1 = new LudoPlayer("player1"); LudoPlayer lp2 = new LudoPlayer("player2"); LudoGame sut = new LudoGame(); // Act sut.StartGame(lp1, lp2); // Assert Assert.NotEqual(Guid.Empty, sut.GameGuid); }
public JsonResult Put(int gameId, int playerId, int color, string name) { //hämtat ett spel som har de Id LudoGame game = _games.GetOrCreateGame(gameId); //tar ut den spelaren som har just detta id, player blir då ett objekt Player player = game.GetPlayers().Single(m => m.PlayerId == playerId); player.PlayerColor = (PlayerColor)color; player.Name = name; return(new JsonResult(player)); }
public GameModel Get(int gameId) { LudoGame game = _games[gameId]; int numberOfPlayers = game.GetPlayers().Count(); var currentPlayer = game.GetCurrentPlayer(); return(new GameModel() { GameId = gameId, CurrentPlayerId = currentPlayer == null ? 0 : currentPlayer.PlayerId, NumberOfPlayers = numberOfPlayers, State = game.GetGameState().ToString() }); }
public void StartGame_StartsLudoGameWithFourPlayers_GameGuidWhichIsNotEmptyGuid() { // Arrange LudoPlayer lp1 = new LudoPlayer(); LudoPlayer lp2 = new LudoPlayer(); LudoPlayer lp3 = new LudoPlayer(); LudoPlayer lp4 = new LudoPlayer(); LudoGame sut = new LudoGame(); // Act sut.StartGame(lp1, lp2, lp3, lp4); // Assert Assert.NotEqual(Guid.Empty, sut.GameGuid); }
public void StartGame_TwoPlayers_GameStateIsStarted() { // Arrange var game = new LudoGame(new DieceMock()); game.AddPlayer("player1", PlayerColor.Blue); game.AddPlayer("player2", PlayerColor.Red); // Act bool result = game.StartGame(); // Assert Assert.True(result); Assert.Equal(GameState.Started, game.GetGameState()); }
public void AddPlayer_TwoBluePlayers_SecondPlayerReturnNull() { // Arrange var game = new LudoGame(new DieceMock()); // Act var player1 = game.AddPlayer("player1", PlayerColor.Blue); var player2 = game.AddPlayer("player2", PlayerColor.Blue); // Assert Assert.NotNull(player1); Assert.Null(player2); // Extra asserts Assert.Equal(0, player1.PlayerId); }
public void AddPlayer_TwoPlayersWithDifferentColors_BothPlayersNotNull() { // Arrange var game = new LudoGame(new DieceMock()); // Act var player1 = game.AddPlayer("player1", PlayerColor.Blue); var player2 = game.AddPlayer("player2", PlayerColor.Red); // Assert Assert.NotNull(player1); Assert.NotNull(player2); // Extra asserts Assert.Equal(0, player1.PlayerId); Assert.Equal(1, player2.PlayerId); }
public ActionResult Post(int id, string name, int color) { // hämtar spelet där spelaren skall skapas LudoGame game = _games.GetOrCreateGame(id); //kontroller så att alla spelare har unika färger if (game.GetPlayers().Where(p => (int)p.PlayerColor == color).Count() > 0) { //BadRequest = en felaktig för frågan. BadRequest är en http standard fel. return(BadRequest($"Unable to add player because color is already used")); } // lägg till en ny spelare till spelet Player player = game.AddPlayer(name, (PlayerColor)color); // retunera den nya spelaren return(new JsonResult(player)); }
public void Given_NextTurnBlue_And_BlueAtPos10_DiceIs5_Expect_Track10IsNull_And_Track15IsBlue() { //Arrange var gamePiece = new GamePiece() { Color = 0, TrackPosition = 10 }; var gamePlayer = new GamePlayer() { Color = 0 }; var diceThrowResult = 5; var gameMove = new GameMove() { Player = gamePlayer, Piece = gamePiece, OriginalPosition = gamePiece.TrackPosition, DiceThrowResult = diceThrowResult }; var board = new GameBoard(); board.MainTrack[10] = gameMove.Piece; var game = new LudoGame(); game.Moves.Add(gameMove); var gameRunner = new GameRunner() { Game = game, Board = board }; //Act gameRunner.ExecuteMove(); //Assert Assert.Null(board.MainTrack[10]); Assert.Equal((GameColor)0, board.MainTrack[15].Color); }
public void Given_NextTurnGreen_And_GreenAtPos8_DiceIs5_Expect_Track38IsNull_And_Track3IsGreen() { //Arrange var gamePiece = new GamePiece() { Color = (GameColor)3, TrackPosition = 8 }; var gamePlayer = new GamePlayer() { Color = (GameColor)3 }; var diceThrowResult = 5; var gameMove = new GameMove() { Player = gamePlayer, Piece = gamePiece, OriginalPosition = gamePiece.TrackPosition, DiceThrowResult = diceThrowResult }; var board = new GameBoard(); board.MainTrack[38] = gameMove.Piece; var game = new LudoGame(); game.Moves.Add(gameMove); var gameRunner = new GameRunner() { Game = game, Board = board }; //Act gameRunner.ExecuteMove(); //Assert Assert.Null(board.MainTrack[38]); Assert.Equal((GameColor)3, board.MainTrack[3].Color); }
public void Given_NextTurnBlue_And_BlueAtPos43_DiceIs6_Expect_BlueAtPos39() { //Arrange var gamePiece = new GamePiece() { Color = 0, TrackPosition = 43 }; var gamePlayer = new GamePlayer() { Color = 0 }; var diceThrowResult = 6; var board = new GameBoard(); var game = new LudoGame(); var gameMove = new GameMove() { Player = gamePlayer, Piece = gamePiece, OriginalPosition = gamePiece.TrackPosition, DiceThrowResult = diceThrowResult }; game.Moves.Add(gameMove); var gameRunner = new GameRunner() { Game = game, Board = board }; //Act gameRunner.ExecuteMove(); //Assert Assert.Equal(39, gamePiece.TrackPosition); }
public override void InitializeAcademy() { game = FindObjectOfType <LudoGame>(); }
public void CreateNewLudoGame() { var game = new LudoGame(new Diece()); ludoGames.Add(Guid.NewGuid().ToString(), game); }
public JsonResult Put(int gameId) { LudoGame game = _games.GetOrCreateGame(gameId); if (game.GetGameState() == GameState.Ended) { // Retunera spelaren vann return(new JsonResult( new { winner = game.GetWinner() })); } // kontrollera att spelet har startat första gången någon flyttar en pjäs, annars starta spelet först if (game.GetGameState() == GameState.NotStarted) { game.StartGame(); } // Hämta nuvarande spelare Player player = game.GetCurrentPlayer(); // Kasta tärningen int diece = game.RollDiece(); // hämta första pjäsen från spelaren som är på målsträckan Piece piece = player.Pieces.FirstOrDefault(m => m.State == PieceGameState.GoalPath); // om ingen pjäs är på målsträckan, ta en som är på spel planen istället if (piece == null) { piece = player.Pieces.FirstOrDefault(m => m.State == PieceGameState.InGame); } // om ingen pjäs är på spelplanen, ta en från boet if (piece == null) { piece = player.Pieces.FirstOrDefault(m => m.State == PieceGameState.HomeArea); } // vi har en pjäs som spelaren kan flytta if (piece != null) { game.MovePiece(player, piece.PieceId, diece); } // Avsluta spelarens tur, om hen slår sex, får de spela om if (diece != 6) { game.EndTurn(player); } // kontrollera om någon vunnit eller ej if (game.GetGameState() != GameState.Ended) { // Retunera spelaren som spelade, så man kan se pjäsen flyttat på sig return(new JsonResult( new { diece, piece, player })); } else { // Retunera spelaren vann return(new JsonResult( new { winner = game.GetWinner() })); } }
public void Given_NewGameSetUpSavedToDb_Expect_CorespondingDataInDb() { // Arrange var players = new List <GamePlayer>() { new GamePlayer() { Name = "Bob", Color = 0 }, new GamePlayer() { Name = "Rob", Color = (GameColor)1, Type = (PlayerType)1 } }; var newLudoGame = new LudoGame() { GamePlayers = new GamePlayers() { Players = players }, PieceSetup = new List <GamePiece>() { new GamePiece() { Color = (GameColor)0, Number = 1, TrackPosition = null }, new GamePiece() { Color = (GameColor)0, Number = 2, TrackPosition = null }, new GamePiece() { Color = (GameColor)0, Number = 3, TrackPosition = null }, new GamePiece() { Color = (GameColor)0, Number = 4, TrackPosition = null }, new GamePiece() { Color = (GameColor)1, Number = 1, TrackPosition = null }, new GamePiece() { Color = (GameColor)1, Number = 2, TrackPosition = null }, new GamePiece() { Color = (GameColor)1, Number = 3, TrackPosition = null }, new GamePiece() { Color = (GameColor)1, Number = 4, TrackPosition = null } }, NextPlayer = players[0], Status = "Created" }; var firstGameRunner = new GameRunner() { Game = newLudoGame }; var optionsBuilder = new DbContextOptionsBuilder <LudoGameDbContext>(); optionsBuilder.UseInMemoryDatabase("testDb1"); var db = new LudoGameDbContext(optionsBuilder.Options); // Act firstGameRunner.SaveGameToDataBase(db); var secondGameRunner = new GameRunner(); var games = secondGameRunner.LoadAllGamesFromDataBase(db); secondGameRunner.LoadGameFromDatabase(games[0], db); // Assert Assert.Single(games); Assert.Equal("Created", games[0].Status); Assert.Equal(2, secondGameRunner.Game.GamePlayers.PlayerCount); Assert.Equal(8, secondGameRunner.Game.PieceSetup.Count); }