Beispiel #1
0
        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);
        }
Beispiel #2
0
        public void StartGame_StartsLudoGameWithNoPlayers_Exception()
        {
            // Arrange
            LudoGame sut = new LudoGame();

            // Act + Assert
            Assert.Throws <Exception>(() => sut.StartGame());
        }
Beispiel #3
0
        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));
        }
Beispiel #5
0
        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));
        }
Beispiel #6
0
 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();
 }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        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()
            }));
        }
Beispiel #12
0
        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());
        }
Beispiel #13
0
        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);
        }
Beispiel #14
0
        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);
        }
Beispiel #15
0
        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));
        }
Beispiel #16
0
        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()
            });
        }
Beispiel #19
0
        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);
        }
Beispiel #20
0
        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());
        }
Beispiel #21
0
        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);
        }
Beispiel #22
0
        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);
        }
Beispiel #23
0
        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);
        }
Beispiel #27
0
 public override void InitializeAcademy()
 {
     game = FindObjectOfType <LudoGame>();
 }
Beispiel #28
0
        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);
        }