public HangmanViewModel()
        {
            SelectedCategoryName = string.Empty;
            termRepository       = new TermRepository();
            InitData();

            NewGameCommand = new Command(async() => await StartNewGame());

            KeyCommand = new Command((letter) =>
            {
                if (!Term.ToUpper().Contains(letter.ToString()))
                {
                    NoOfWrongAttemps++;
                    WrongLetters += string.IsNullOrEmpty(WrongLetters) ? letter : $",{letter}";
                }

                DiscoveredLetters = string.Join(";", SelectedKeys);

                if (NoOfWrongAttemps >= 6 || !Term.ToUpper().Any(x => !string.IsNullOrWhiteSpace(x.ToString()) && !SelectedKeys.Contains(x.ToString())))
                {
                    OnFinishGame(NoOfWrongAttemps < 6);
                }
            });

            SelectCategoryCommand = new Command(async() =>
            {
                TermCategoryModel currentCategory = selectedCategory;
                await GetTermCategory();
                if (currentCategory.Id != selectedCategory.Id)
                {
                    await StartNewGame();
                }
            });
        }
Пример #2
0
        public TermModel GetTermByCategory(long id)
        {
            var category = realmRepository.Get <TermCategory>(id);

            var categoryModel = new TermCategoryModel
            {
                Id   = category.Id,
                Name = category.Name
            };

            List <Term> terms = category.Terms.ToList()
                                .GroupBy(x => x.NoOfOccurrence)
                                .OrderBy(x => x.Key)
                                .FirstOrDefault()
                                .ToList();
            Random random       = new Random();
            int    index        = random.Next(0, terms.Count());
            Term   selectedTerm = terms.ElementAt(index);

            realmRepository.Update(() =>
            {
                selectedTerm.NoOfOccurrence++;
            });

            return(new TermModel
            {
                Category = categoryModel,
                ID = selectedTerm.Id,
                Value = selectedTerm.Value
            });
        }
        private async Task GetTermCategory()
        {
            var    options = categoryModels.Select(x => x.Name).ToArray();
            string result  = await App.Current.MainPage.DisplayActionSheet("Izaberite kategoriju", "Nasumično", null, options);

            if (result == null || result.Equals("Nasumično"))
            {
                Random random = new Random();
                int    index  = random.Next(0, categoryModels.Count());
                selectedCategory = categoryModels.ElementAt(index);
            }
            else
            {
                selectedCategory = categoryModels.FirstOrDefault(x => x.Name.Equals(result));
            }

            SelectedCategoryName = selectedCategory.Name;
        }
Пример #4
0
        private void InitData()
        {
            TermCategoryModel categoryMovies = new TermCategoryModel {
                Name = "Filmovi"
            };
            TermCategoryModel categorySports = new TermCategoryModel {
                Name = "Sportovi"
            };
            TermCategoryModel categoryCities = new TermCategoryModel {
                Name = "Gradovi"
            };
            TermCategoryModel categoryCountries = new TermCategoryModel {
                Name = "Drzave"
            };

            TermModel moviesTerm1 = new TermModel {
                Category = categoryMovies, Value = "Ko to tamo peva"
            };
            TermModel moviesTerm2 = new TermModel {
                Category = categoryMovies, Value = "Balkanski špijun"
            };
            TermModel moviesTerm3 = new TermModel {
                Category = categoryMovies, Value = "Kad porastem biću kengur"
            };
            TermModel moviesTerm4 = new TermModel {
                Category = categoryMovies, Value = "Tesna koža"
            };
            TermModel moviesTerm5 = new TermModel {
                Category = categoryMovies, Value = "Munje"
            };


            TermModel sportsTerm1 = new TermModel {
                Category = categorySports, Value = "Fudbal"
            };
            TermModel sportsTerm2 = new TermModel {
                Category = categorySports, Value = "Vaterpolo"
            };
            TermModel sportsTerm3 = new TermModel {
                Category = categorySports, Value = "Karling"
            };
            TermModel sportsTerm4 = new TermModel {
                Category = categorySports, Value = "Boćanje"
            };
            TermModel sportsTerm5 = new TermModel {
                Category = categorySports, Value = "Stoni tenis"
            };

            TermModel citiesTerm1 = new TermModel {
                Category = categoryCities, Value = "Rio de žaneiro"
            };
            TermModel citiesTerm2 = new TermModel {
                Category = categoryCities, Value = "Madrid"
            };
            TermModel citiesTerm3 = new TermModel {
                Category = categoryCities, Value = "Venecija"
            };
            TermModel citiesTerm4 = new TermModel {
                Category = categoryCities, Value = "Smederevo"
            };
            TermModel citiesTerm5 = new TermModel {
                Category = categoryCities, Value = "Moskva"
            };

            TermModel countriesTerm1 = new TermModel {
                Category = categoryCountries, Value = "Srbija"
            };
            TermModel countriesTerm2 = new TermModel {
                Category = categoryCountries, Value = "Brazil"
            };
            TermModel countriesTerm3 = new TermModel {
                Category = categoryCountries, Value = "Češka"
            };
            TermModel countriesTerm4 = new TermModel {
                Category = categoryCountries, Value = "Meksiko"
            };
            TermModel countriesTerm5 = new TermModel {
                Category = categoryCountries, Value = "Nigerija"
            };


            AddTerm(moviesTerm1);
            AddTerm(moviesTerm2);
            AddTerm(moviesTerm3);
            AddTerm(moviesTerm4);
            AddTerm(moviesTerm5);

            AddTerm(sportsTerm1);
            AddTerm(sportsTerm2);
            AddTerm(sportsTerm3);
            AddTerm(sportsTerm4);
            AddTerm(sportsTerm5);

            AddTerm(citiesTerm1);
            AddTerm(citiesTerm2);
            AddTerm(citiesTerm3);
            AddTerm(citiesTerm4);
            AddTerm(citiesTerm5);

            AddTerm(countriesTerm1);
            AddTerm(countriesTerm2);
            AddTerm(countriesTerm3);
            AddTerm(countriesTerm4);
            AddTerm(countriesTerm5);
        }