Ejemplo n.º 1
0
        //----Phrases----//

        public async Task GeneratePhrases(User user, User gm, PhoneticPhrases generated)
        {
            // Procedura generiranja frazi

            // Generira se fraza po fraza. Igrač koji je GameMaster ima ulogu suca koji dobiva
            // originalnu, generiranu frazu. Ostali igrači u Sessionu dobivaju fonetski ekvivalent.
            // Sudac (GameMaster) treba sam prosuditi tko je pobjednik u kojoj rundi (na osnovu
            // tko je točno odgovorio i bio najbrži). Ako se fraza nije generirala, onda se šalje
            // novi zahtjev prema REST API-ju

            if (gm.PrivateAddress == user.PrivateAddress)
            {
                GameMaster     = user;
                GMConnectionId = Context.ConnectionId;
            }

            generated = restApi.GeneratePhoneticEquivalents();
            if (!string.IsNullOrEmpty(generated.PhraseGenerated) && !string.IsNullOrEmpty(generated.PhrasePhonetic))
            {
                await Clients.GroupExcept(user.PublicAddress, GMConnectionId).SendAsync("PhrasesGenerated", generated.PhrasePhonetic);

                await Clients.Client(GMConnectionId).SendAsync("ListAllPlayers", 0);

                await Clients.Client(GMConnectionId).SendAsync("OriginalPhraseFetched", generated.PhraseGenerated);

                await Clients.Group(user.PublicAddress).SendAsync("SetupTimer", 0);
            }

            else
            {
                await Clients.Groups(user.PublicAddress).SendAsync("PhrasesNotGenerated", generated);
            }
        }
Ejemplo n.º 2
0
        private PhoneticPhrases GetPhoneticEquivalents(string phrase)
        {
            // Dohvaća i generira fonetske ekvivalente
            List <PhoneticEquivalentPair> phoneticPairs = new List <PhoneticEquivalentPair>();
            bool flag = false;

            string[] dissected = phrase.Split();
            foreach (string word in dissected)
            {
                var request = (HttpWebRequest)WebRequest.Create("https://api.datamuse.com/words?sl=" + word);
                request.UserAgent = "curl";
                request.Method    = "GET";
                var responseData = "";
                using (WebResponse response = request.GetResponse())
                {
                    using (var reader = new StreamReader(response.GetResponseStream()))
                    {
                        responseData = reader.ReadToEnd();
                    }
                }


                PhoneticEquivalent[]      phonEquiv             = JsonConvert.DeserializeObject <List <PhoneticEquivalent> >(responseData).ToArray();
                List <PhoneticEquivalent> highestScorePhonetics = new List <PhoneticEquivalent>();

                foreach (PhoneticEquivalent pe in phonEquiv)
                {
                    if (pe.Score > 92 && pe.Score <= 99)
                    {
                        highestScorePhonetics.Add(pe);
                    }
                }

                if (highestScorePhonetics.Count == 0)
                {
                    flag = true;
                }

                phoneticPairs.Add(new PhoneticEquivalentPair(highestScorePhonetics, word));
            }

            if (flag)
            {
                return(new PhoneticPhrases("", ""));
            }
            else
            {
                PhoneticPhrases phoneticPhrase = GenerateRandomPhonetic(phoneticPairs, phrase);
                return(phoneticPhrase);
            }
        }