Exemplo n.º 1
0
        public UiMap(SinglePlayerGame game)
        {
            this.game = game;
            var decisionProvider = game.UserPortal;

            Prompt = decisionProvider.GetCurrent().Prompt;

            var cachedOptions = decisionProvider.GetCurrent().Options;             // cache in case calculated on the fly

            int pad = 0;

            foreach (var o in cachedOptions)
            {
                if (o is IActionFactory factory)
                {
                    pad = Math.Max(pad, factory.Name.Length);
                }
            }

            dict = new Dictionary <string, IOption>();
            var tempList = new List <string[]>();

            int labelIndex = 0;

            foreach (var option in cachedOptions)
            {
                string key;
                string description;
                if (TextOption.Done.Matches(option))
                {
                    key         = option.Text[..1].ToLower();
Exemplo n.º 2
0
        public async Task PlaySimultaneousGamesCallbackCalled()
        {
            var board = new BoardContent(SquareContent.Water);

            board["A1"] = board["C1"] = board["E1"] = SquareContent.Ship;
            var shootingBoard = new BoardContent(SquareContent.Unknown);
            var game          = new SinglePlayerGame(Guid.Empty, 0, board, shootingBoard);
            var games         = new[] { game };

            var playerClientMock = new Mock <IPlayerClient>();

            playerClientMock.Setup(m => m.GetShots(It.IsAny <string>(),
                                                   It.IsAny <IEnumerable <ISinglePlayerGame> >(), It.IsAny <string?>()))
            .ReturnsAsync(new[] { new BoardIndex() });

            var callbackCalls = 0;
            var client        = new GameClient(playerClientMock.Object, Mock.Of <ISinglePlayerGameFactory>());

            Task Callback()
            {
                callbackCalls++;
                return(Task.CompletedTask);
            }

            await client.PlaySimultaneousGames("https://someserver.com/api/", games, 2, Callback, "key", new[] { 1, 1, 1 });

            Assert.Equal(2, callbackCalls);
        }
        public IActionResult PlayPost(SinglePlayerGameFilledBlank obj)
        {
            if (ModelState.IsValid)
            {
                //Save Answer
                _db.SinglePlayerGameFilledBlank.Update(obj);
                _db.SaveChanges();

                //Update Game
                SinglePlayerGame game = _db.SinglePlayerGame.Where(g => g.Id == obj.SinglePlayerGameId).FirstOrDefault();
                game.ActiveMadlibBlankIndex++;

                //If it's the last one, show the results
                if (game.ActiveMadlibBlankIndex > _db.MadlibBlank.Where(b => b.MadlibId == game.MadlibId).Select(b => b.Index).Max())
                {
                    return(RedirectToAction("DisplayResults", game));
                }

                //Otherwise move to the next one
                SinglePlayerGameFilledBlank nextBlank = AddNextBlankToAnswers(game);
                _db.SinglePlayerGame.Update(obj.SinglePlayerGame);
                _db.SaveChanges();

                return(RedirectToAction("Play", nextBlank));
            }
            else
            {
                return(View(obj));
            }
        }
Exemplo n.º 4
0
        public GiftOfStrength_Tests()
        {
            spirit = new VitalStrength();
            User   = new VirtualEarthUser(spirit);
            var gs = new GameState(spirit, Board.BuildBoardA());

            game = new SinglePlayerGame(gs);
        }
Exemplo n.º 5
0
        public SinglePlayerGameTests()
        {
            _mockCoordinates         = Enumerable.Range(0, 5).Select(x => new Coordinate(0, x)).ToList();
            _mockCoordinateGenerator = new Mock <ICoordinateGenerator>();
            _mockCoordinateGenerator
            .Setup(x => x.GenerateCoordinates(BOARD_SIZE, It.IsAny <int>(), It.IsAny <Orientation>()))
            .Returns(_mockCoordinates);

            _game = new SinglePlayerGame(_mockCoordinateGenerator.Object, new Mock <ILogger <Game> >().Object);
        }
Exemplo n.º 6
0
        static void Main(string[] _)
        {
            var gs = new GameState(new RiverSurges())
            {
                Island = new Island(Board.BuildBoardA())
            };

            var game = new SinglePlayerGame(gs);

            new CmdLinePlayer(game).Play();
        }
 //GET - DISPLAYRESULTS
 public IActionResult DisplayResults(SinglePlayerGame game)
 {
     if (game == null)
     {
         return(NotFound());
     }
     Madlib.Models.Madlib madLib  = _db.Madlib.Find(game.MadlibId);
     string[]             Answers = _db.SinglePlayerGameFilledBlank.Where(b => b.SinglePlayerGameId == game.Id).OrderBy(b => b.MadlibBlankIndex).Select(b => b.Answer).ToArray();
     game.Madlib         = madLib;
     game.CompletedStory = string.Format(madLib.Text, Answers);
     return(View(game));
 }
    public MassiveFlooding_Tests() : base()
    {
        // Given: River
        spirit.UsePowerProgression();
        gs = new GameState(spirit, Board.BuildBoardA())
        {
            InvaderDeck = InvaderDeck.Unshuffled(),
            Phase       = Phase.Slow
        };

        game = new SinglePlayerGame(gs);
    }
Exemplo n.º 9
0
        public CmdLinePlayer(SinglePlayerGame game)
        {
            this.game = game;

            // Init UI
            commandMap = new Dictionary <string, Action> {
                ["spirit"]   = ShowSpirit,
                ["island"]   = ShowIsland,
                ["invaders"] = ShowInvaders,
                ["cards"]    = ShowCards,
                ["?"]        = ShowCommands,
                ["q"]        = Quit,
            };
        }
Exemplo n.º 10
0
        private SinglePlayerGameFilledBlank AddNextBlankToAnswers(SinglePlayerGame game)
        {
            MadlibBlank currentBlank = _db.MadlibBlank.Where(b => b.MadlibId == game.MadlibId && b.Index == game.ActiveMadlibBlankIndex).FirstOrDefault();
            SinglePlayerGameFilledBlank nextBlank = new SinglePlayerGameFilledBlank()
            {
                MadlibBlankIndex   = currentBlank.Index,
                CategoryId         = currentBlank.CategoryId,
                SinglePlayerGameId = game.Id
            };

            _db.SinglePlayerGameFilledBlank.Add(nextBlank);
            _db.SaveChanges();
            return(nextBlank);
        }
Exemplo n.º 11
0
        private void StartGameButtonClick(object sender, RoutedEventArgs e)
        {
            Player player = new Player(this.PlayerName.Text);

            if (this.PlayerName.Text == "")
            {
                MessageBox.Show("You must set your player name!", "Error!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            Category         gameCategory = GetCategory();
            Word             gameWord     = gameCategory.GetRandomWord();
            WordChecker      checker      = new WordChecker(gameWord);
            SinglePlayerGame game         = new SinglePlayerGame(player, gameCategory, gameWord, checker);
            SingleGameUI     gameUI       = new SingleGameUI(game);

            this.NavigationService.Navigate(gameUI);
        }
Exemplo n.º 12
0
        public async Task PlaySimultaneousGamesMaximumShots()
        {
            var board = new BoardContent(SquareContent.Water);

            board["A1"] = board["C1"] = board["E1"] = SquareContent.Ship;
            var shootingBoard = new BoardContent(SquareContent.Unknown);
            var game          = new SinglePlayerGame(Guid.Empty, 0, board, shootingBoard);
            var games         = new[] { game };

            var playerClientMock = new Mock <IPlayerClient>();

            playerClientMock.Setup(m => m.GetShots("https://someserver.com/api/",
                                                   It.Is <IEnumerable <ISinglePlayerGame> >(g => g.Count() == 1), "key"))
            .ReturnsAsync(new[] { new BoardIndex() });

            var client = new GameClient(playerClientMock.Object, Mock.Of <ISinglePlayerGameFactory>());
            await client.PlaySimultaneousGames("https://someserver.com/api/", games, 2, null, "key", new[] { 1, 1, 1 });

            playerClientMock.Verify(m => m.GetShots("https://someserver.com/api/",
                                                    It.Is <IEnumerable <ISinglePlayerGame> >(g => g.Count() == 1), "key"), Times.Exactly(2));
        }
Exemplo n.º 13
0
        public SingleGameUI(SinglePlayerGame game)
        {
            InitializeComponent();

            this.game = game;
            this.PlayerName.Content = this.game.Player.PlayerName;
            this.Category.Content   = this.game.Category.CategoryName;

            if (this.game.Word.GameWord.Contains(' '))
            {
                this.WordLength.Content = this.game.Word.GameWord.Length - 1;
            }
            else
            {
                this.WordLength.Content = this.game.Word.GameWord.Length;
            }

            this.wordBuilder = new WordBuilder(this.WordPanel, this.game.Word);
            this.hangman     = new Hangman(this.HangmanDrawing);
            this.letterCount = 0;

            wordBuilder.BuildWord(this.game.Word);
        }
Exemplo n.º 14
0
        public IActionResult Start(Madlib.Models.Madlib obj)
        {
            if (obj == null)
            {
                return(NotFound());
            }
            SinglePlayerGame NewGame = new SinglePlayerGame()
            {
                MadlibId = obj.Id,
                ActiveMadlibBlankIndex = 0
            };

            if (ModelState.IsValid)
            {
                _db.SinglePlayerGame.Add(NewGame);
                _db.SaveChanges();
                SinglePlayerGameFilledBlank nextBlank = AddNextBlankToAnswers(NewGame);
                return(RedirectToAction("Play", nextBlank));
            }
            else
            {
                return(View(obj));
            }
        }
Exemplo n.º 15
0
        /// <summary>
        /// Executes the command of Single Player games
        /// </summary>
        /// <param name="commandLine">The command line.</param>
        /// <param name="client">The client.</param>
        public void ExecuteCommand(string commandLine, TcpClient client)
        {
            var parser = new CommandParser(commandLine);
            SinglePlayerGame sp;

            if (!commands.ContainsKey(parser.CommandKey))
            {
                sp = new SinglePlayerGame(client, "The command " + parser.CommandKey + " isn't known");
                sp.SendMassage();
            }
            else
            {
                var command = commands[parser.CommandKey];
                var packet  = command.Execute(parser.Args, client);

                var result = packet.StringStream;
                if (!packet.MultiPlayer)
                {
                    //create new Single Player game to play with on client
                    sp = new SinglePlayerGame(client, result);
                    sp.SendMassage();
                }
            }
        }