コード例 #1
0
    protected void ButtonGiveUp_Click(object sender, EventArgs e)
    {
        WordGuess wordguess = new WordGuess();

        wordguess = (WordGuess)Session["wordguess"];

        ImageBase.ImageUrl = "~/Images/State" + 6 + ".png";
        AutoGenerateWordDisplay(wordguess);
        ReStart();
        LabelStatus.Text = "You Lose";
    }
コード例 #2
0
 public void AutoGenerateWordDisplay(WordGuess wordguess)
 {
     wordguess.letters.Clear();
     foreach (char letter in wordguess.theWord.word)
     {
         if (!wordguess.letters.Contains(letter))
         {
             wordguess.letters.Add(letter);
         }
     }
     GenerateWordDisplay(wordguess);
 }
コード例 #3
0
    protected void ButtonGuess_Click(object sender, EventArgs e)
    {
        WordGuess wordguess = new WordGuess();

        wordguess = (WordGuess)Session["wordguess"];


        LabelStatus.Text       = "";
        wordguess.wordprogress = "";

        try
        {
            char guessletter = TextBoxGuess.Text.ToLower().First();
            if (!wordguess.letters.Contains(guessletter))
            {
                wordguess.letters.Add(guessletter);
                GenerateWordDisplay(wordguess);

                if (!wordguess.theWord.word.Contains(guessletter))
                {
                    wordguess.guesscounter++;
                }



                if (wordguess.wordprogress == wordguess.theWord.word)
                {
                    ReStart();

                    LabelStatus.Text = "You win!";
                }

                ImageBase.ImageUrl = "~/Images/State" + wordguess.guesscounter + ".png";

                if (wordguess.guesscounter > 5)
                {
                    AutoGenerateWordDisplay(wordguess);
                    ReStart();
                    LabelStatus.Text = "You Lose";
                }
                LabelMissWords.Text = wordguess.DisplayMissedLetters();
            }
            else
            {
                LabelStatus.Text = "You already gave that letter";
            }
        }
        catch (Exception)
        {
            LabelStatus.Text = "Please enter a letter";
        }
        TextBoxGuess.Text = "";
    }
コード例 #4
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            JObject jo             = JObject.Load(reader);
            bool?   isLetterGuess  = (bool?)jo["IsLetter"];
            bool?   isLetterGuess2 = (bool?)jo["isLetter"];

            Guess item;

            if (isLetterGuess.GetValueOrDefault() || isLetterGuess2.GetValueOrDefault())
            {
                item = new CharGuess();
            }
            else
            {
                item = new WordGuess();
            }

            serializer.Populate(jo.CreateReader(), item);

            return(item);
        }
コード例 #5
0
    protected void ButtonStart_Click(object sender, EventArgs e)
    {
        int    previousword     = 0;
        string previouscategory = "Animals";

        if (Session["previousword"] != null)
        {
            previousword = (int)Session["previousword"];
        }
        if (Session["previousword"] != null)
        {
            previouscategory = (string)Session["previouscategory"];
        }

        WordGuess wordguess = new WordGuess();
        WordGen   word      = new WordGen();

        wordguess.theWord = word;
        wordguess.theWord.ChooseTopic(DropDownListCategories.SelectedValue, previousword, previouscategory);
        Session["previousword"]     = wordguess.theWord.words.ToList().FindIndex(a => a == wordguess.theWord.word);
        Session["previouscategory"] = DropDownListCategories.SelectedValue;
        wordguess.letters.Clear();
        wordguess.missedletters.Clear();
        LabelMissWords.Text = wordguess.DisplayMissedLetters();
        wordguess.ResetCounter();
        wordguess.WordLength(wordguess.theWord);
        ImageBase.ImageUrl             = "~/Images/State" + 0 + ".png";
        ButtonGiveUp.Visible           = true;
        TextBoxGuess.Visible           = true;
        ButtonGuess.Visible            = true;
        LabelWordToGuess.Visible       = true;
        LabelWordToGuess.Text          = "";
        LabelWordToGuess.Text          = wordguess.wordprogress;
        LabelMissWords.Visible         = true;
        LabelStatus.Text               = "";
        LabelCategories.Visible        = false;
        DropDownListCategories.Visible = false;
        ButtonStart.Visible            = false;
        Session["wordguess"]           = wordguess;
    }
コード例 #6
0
        private bool compareWords(WordGuess firstWordGuess, WordGuess secondWordGuess)
        {
            var firstWordModel = new WordModel
            {
                Word = firstWordGuess.Word.ToLower().Trim()
            };

            var secondWordModel = new WordModel
            {
                Word = secondWordGuess.Word.ToLower().Trim()
            };


            var stringArray = new string[] { firstWordModel.Word, secondWordModel.Word };

            var metaphone        = new Metaphone();
            var soundex          = new Soundex();
            var similarMetaphone = metaphone.IsSimilar(stringArray);
            var similarSoundex   = soundex.IsSimilar(stringArray);

            return(similarMetaphone || similarSoundex);
        }
コード例 #7
0
    public void GenerateWordDisplay(WordGuess wordguess)
    {
        string wordprogressdisplay = "";

        bool lettermatch = false;
        //first letter of secound word
        bool twofirst    = false;
        int  lettercount = 1;

        foreach (char letter in wordguess.theWord.word)
        {
            if (letter == ' ')
            {
                twofirst = true;
                wordguess.wordprogress = wordguess.wordprogress + ' ';
                wordprogressdisplay    = wordprogressdisplay + " ";
            }

            else
            {
                foreach (char givenletter in wordguess.letters)
                {
                    if (letter == givenletter)
                    {
                        char displayletter = givenletter;
                        if (lettercount == 1 || twofirst)
                        {
                            displayletter = displayletter.ToString().ToUpper().First();
                        }
                        if (lettercount == wordguess.theWord.word.Length)
                        {
                            wordprogressdisplay = wordprogressdisplay + displayletter;
                        }
                        else
                        {
                            wordprogressdisplay = wordprogressdisplay + displayletter + " ";
                        }
                        wordguess.wordprogress = wordguess.wordprogress + givenletter;
                        lettermatch            = true;
                    }
                    else
                    {
                        if (!wordguess.missedletters.Contains(givenletter) && !wordguess.theWord.word.Contains(givenletter))
                        {
                            wordguess.missedletters.Add(givenletter);
                        }
                    }
                }
                twofirst = false;

                if (!lettermatch)
                {
                    if (lettercount == wordguess.theWord.word.Length)
                    {
                        wordprogressdisplay = wordprogressdisplay + "_";
                    }
                    else
                    {
                        wordprogressdisplay = wordprogressdisplay + "_ ";
                    }
                }
                lettermatch = false;
            }
            lettercount++;
        }
        LabelWordToGuess.Text = wordprogressdisplay;
    }
コード例 #8
0
        public List <GameScoringModel> CalculateScoreForGame(Game game)
        {
            /*
             * Scoring algorithm:
             *
             * 1. If first word matches final word:
             *   - game creator gets equivalent number of points to game passes
             *
             * 2. If a user guesses the same word as the previous usr was trying to draw:
             *   - both the drawer and the guesser get one point each
             *
             * 3. If this is a timed game
             *   - both drawers and guessers get double points
             *
             */

            //await Task.Run(() =>
            //{
            var gameScores      = new List <GameScoringModel>();
            var scoreMultiplier = game.TimerInSeconds == 0 ? 1 : 2;

            List <Guess> guesses      = game.Guesses.OrderBy(g => g.Order).ToList();
            var          startingWord = new WordGuess()
            {
                Word     = game.StartingWord,
                Order    = 0,
                NextUser = guesses.ElementAt(0).User
            };

            guesses.Insert(0, startingWord);

            var wordGuesses = guesses.Where(g => g is WordGuess).ToList();



            //Other guesses
            for (int i = 0; i < wordGuesses.Count - 1; i++)
            {
                var word1 = wordGuesses.ElementAt(i);
                var word2 = wordGuesses.ElementAt(i + 1);

                var similar = compareWords((WordGuess)word1, (WordGuess)word2);
                if (similar)
                {
                    gameScores.Add(new GameScoringModel()
                    {
                        GameId   = game.Id,
                        UserId   = word1.NextUser.Id,
                        UserName = word1.NextUser.Username,
                        Score    = 1 * scoreMultiplier
                    });

                    gameScores.Add(new GameScoringModel()
                    {
                        GameId   = game.Id,
                        UserId   = word2.User.Id,
                        UserName = word2.User.Username,
                        Score    = 1 * scoreMultiplier
                    });
                }
            }

            //First and last word
            var firstWord = wordGuesses.First();
            var lastWord  = wordGuesses.Last();

            if (firstWord is WordGuess && lastWord is WordGuess)
            {
                var similar = compareWords((WordGuess)firstWord, (WordGuess)lastWord);
                if (similar)
                {
                    //Check if the game creator has already scored in this game
                    if (gameScores.Any(s => s.UserId == game.Creator.Id))
                    {
                        var score = gameScores.Find(s => s.UserId == game.Creator.Id);
                        score.Score += (game.NumberOfGuesses * scoreMultiplier);
                    }
                    else
                    {
                        gameScores.Add(new GameScoringModel()
                        {
                            GameId   = game.Id,
                            UserId   = game.Creator.Id,
                            UserName = game.Creator.Username,
                            Score    = game.NumberOfGuesses * scoreMultiplier
                        });
                    }
                }
            }

            return(gameScores);
            //});

            //return null;
        }