public GamePlayPage(IPlayer player, Level level) { InitializeComponent(); viewModel = new GamePlayViewModel(player, level); DataContext = viewModel; AddPanelsToList(); }
public void SetUp() { var gameEngine = new GameEngine(Substitute.For <ITileSetFactory>()); gamePlayViewModel = new GamePlayViewModel(gameEngine); gamePlayViewModel.StartNewGameCommand.Execute(null); }
/// <summary> /// Returns the Play view /// </summary> /// <returns>The play view</returns> public IActionResult Play() { var viewModel = new GamePlayViewModel() { GamePlay = this.getUserCurrentGamePlay().Result }; return(View(viewModel)); }
protected override void OnClosing(CancelEventArgs e) { GamePlayViewModel data = GamePlayViewModel.getInstaince(); data.gamePlay.gameState.stop(); base.OnClosing(e); Application.Current.Shutdown(); }
public async Task <ActionResult> Play(string id) { if (id == null || id.Length != TechnicalConstants.GameIdLength) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } using (UnitOfWork unitOfWork = new UnitOfWork()) { GameState gameState = await unitOfWork.GameRepository.GetGameStateAsync(id); if (gameState == GameState.Undefined) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound)); } switch (gameState) { case GameState.Playing: GamePlayViewModel gamePlayVM = await unitOfWork.GameQuestionsRepository.GetGamePlayVMAsync(id); return(View("Play", gamePlayVM)); case GameState.LastQuestionAnswered: GuessViewModel firstGuessVM = await unitOfWork.GameRepository.GetGuessVMAsync(id); return(View("FirstGuessFeedback", firstGuessVM)); case GameState.FirstGuessMarkedCorrect: case GameState.SelectedFromTopGuessesList: case GameState.EnteredWhoItWas: GuessViewModel guessVM = await unitOfWork.GameRepository.GetGuessVMAsync(id); return(View("CorrectGuess", guessVM)); case GameState.FirstGuessMarkedIncorrect: TopGuessesViewModel topGuessesVM = await unitOfWork.GameEntityRepository.GetTopGuessesVMAsync(id); return(View("TopGuesses", topGuessesVM)); case GameState.MustEnterWhoItWas: SubmitNewEntityViewModel newEntitySubmissionVM = new SubmitNewEntityViewModel { AccessID = id, SubmittedEntity = new Entity() }; return(View("SubmitNewEntity", newEntitySubmissionVM)); default: return(null); } } }
public void Execute(object parameter) { if (parameter.ToString() == "gamePlay") { Debug.WriteLine("View update to gameplay view command fired"); GamePlayViewModel.getInstaince().gamePlay.gameState.play(); this.viewModel.selectedViewModel = GamePlayViewModel.getInstaince(); } else if (parameter.ToString() == "mainMenue") { Debug.WriteLine("View update to main menue view command fired"); this.viewModel.selectedViewModel = MainMenueViewModel.getInstaince(); } else if (parameter.ToString() == "controls") { Debug.WriteLine("View update to controls menue view command fired"); this.viewModel.selectedViewModel = ControlsViewModel.getInstaince(); } }
public async Task <JsonResult> NextQuestion(string gameAccessId) { try { using (UnitOfWork unitOfWork = new UnitOfWork()) { GamePlayViewModel gamePlayVM = await unitOfWork.GameQuestionsRepository.GetGamePlayVMAsync(gameAccessId); return(Json( AjaxActionResult.List( this.RenderPartialView("~/Views/Game/PlayPartial/_AnsweredQuestionsPartial.cshtml", gamePlayVM.AnsweredQuestions), gamePlayVM.CurrentQuestion.QuestionBody, gamePlayVM.AnsweredQuestions.Count + 1, gamePlayVM.IsLastQuestion))); } } catch (Exception ex) { return(Json(AjaxActionResult.Fail(-1, "Error processing request!" + System.Environment.NewLine + ex.Message))); } }
public GameLogic(GamePlayViewModel user) { _user = user; _computer = new Computer(this); _playingField = new List <List <string> >(); _playingField.Add(new List <string> { "null", "null", "null" }); _playingField.Add(new List <string> { "null", "null", "null" }); _playingField.Add(new List <string> { "null", "null", "null" }); _currentSymbol = "X"; WhoIsWho(); _computer.Symbol = ComputerSymbol; if (ComputerSymbol == "X") { StartAsync(); } }
public GameplayView() { InitializeComponent(); data = GamePlayViewModel.getInstaince(); for (int i = 0; i < 20; i++) { RadarGrid.RowDefinitions.Add(new RowDefinition()); RadarGrid.ColumnDefinitions.Add(new ColumnDefinition()); Button button = new Button(); button.SetValue(Grid.RowProperty, i); button.SetValue(Grid.ColumnProperty, i); } for (int j = 0; j < 20; j++) { TextBlock txtBox = new TextBlock(); txtBox.Text = j.ToString(); txtBox.Foreground = Brushes.WhiteSmoke; Grid.SetColumn(txtBox, 0); Grid.SetRow(txtBox, j); RadarGrid.Children.Add(txtBox); } for (int j = 1; j < 20; j++) { TextBlock txtBox = new TextBlock(); txtBox.Text = j.ToString(); txtBox.Foreground = Brushes.WhiteSmoke; Grid.SetColumn(txtBox, j); Grid.SetRow(txtBox, 20); RadarGrid.Children.Add(txtBox); } }
public GamePage() { InitializeComponent(); BindingContext = new GamePlayViewModel(); }
public async Task <GamePlayViewModel> GetGamePlayVMAsync(string gameAccessId) { Game game = await this.unitOfWork.GameRepository.GetGameFromAccessIdAsync(gameAccessId); GameQuestion lastAskedQuestion = await this.dbSet .Where(g => g.Game.IDGame == game.IDGame) .Where(g => g.QuestionIndex == this.dbSet.Where(t => t.Game.IDGame == game.IDGame).Max(t => t.QuestionIndex)) .Include(g => g.Question) .FirstOrDefaultAsync(); GamePlayViewModel gamePlayVM = new GamePlayViewModel(); gamePlayVM.AccessID = gameAccessId; gamePlayVM.AnsweredQuestions = await this.GetAnsweredQuestionsAsync(game.IDGame); if (gamePlayVM.AnsweredQuestions == null) { gamePlayVM.AnsweredQuestions = new List <GameQuestion>(); } if (lastAskedQuestion != null && lastAskedQuestion.GivenAnswer == AnswerType.Undefined) { gamePlayVM.CurrentQuestion = lastAskedQuestion.Question; return(gamePlayVM); } if ((lastAskedQuestion != null && lastAskedQuestion.QuestionIndex < GamePlayConstants.MaxQuestionsUntilFirstGuess && !lastAskedQuestion.IsLastQuestion) || lastAskedQuestion == null) { Entity topEntity = await this.FulfillsShortcutConditions(game.IDGame, gamePlayVM.AnsweredQuestions.Count); gamePlayVM.IsLastQuestion = (topEntity != null && (await this.CanEarlyGuess(game.IDGame))); if (topEntity != null) { gamePlayVM.CurrentQuestion = await this.GetShortcutQuestion(topEntity.IDEntity, game.IDGame); } else { Question[] potentialNext = new Question[TechnicalConstants.PickAmongstNumber]; int topCandidatesCount = await this.dbContext.Database.SqlQuery <int>( @" select count(*) from GameEntities where Game_IDGame = {0} and Fitness = ( select max(Fitness) from GameEntities where Game_IDGame = {0} )" , game.IDGame).FirstOrDefaultAsync(); if (topCandidatesCount > 1) { potentialNext = await GetBinarySplitQuestion(game.IDGame, topCandidatesCount); } else { potentialNext = await GetTopEnforcementQuestion(game.IDGame); } if (potentialNext == null || potentialNext.Length == 0) { // TODO: pick a random question or something gamePlayVM.CurrentQuestion = null; } else { gamePlayVM.CurrentQuestion = potentialNext[r.Next(potentialNext.Length)]; } } // update asked stats for current question await this.dbContext.Database.ExecuteSqlCommandAsync( @" update Questions set FirstAsked = case when FirstAsked is null then GETDATE() else FirstAsked end, LastAsked = GETDATE(), TimesAsked = TimesAsked + 1 where IDQuestion = {0}" , gamePlayVM.CurrentQuestion.IDQuestion); gamePlayVM.IsLastQuestion |= gamePlayVM.AnsweredQuestions.Count + 1 == GamePlayConstants.MaxQuestionsUntilFirstGuess; await this.dbContext.Database.ExecuteSqlCommandAsync( @" insert into GameQuestions ( QuestionIndex, GivenAnswer, Game_IDGame, Question_IDQuestion, IsLastQuestion) values ( {0}, {1}, {2}, {3}, {4})" , gamePlayVM.AnsweredQuestions.Count + 1, (int)AnswerType.Undefined, game.IDGame, gamePlayVM.CurrentQuestion.IDQuestion, gamePlayVM.IsLastQuestion); return(gamePlayVM); } // If we get here, we tried to answer a non-existing question or one that was already answered. // This should never happen through the interface, so the user must be trying to cheat. Therefore, // we can just return null and let them get errors. return(null); }