[Résolu] Vérifier si un mot existe dans une liste

Questions à propos du GUI, y compris la partie script.
CyrilDt
Messages : 5
Inscription : 17 Mars 2021 06:51

[Résolu] Vérifier si un mot existe dans une liste

Message par CyrilDt » 20 Mars 2021 09:58

Bonjour tout le monde !

Je suis débutant et je suis entrain de créer un WordGame sur Unity.

J'ai un Inputfield dans lequel le joueur doit rentrer des mots et j'aimerais que le jeu check dans un liste de mots s'il existe. En l'occurrence j'ai un fichier .txt contenant la liste de tous les mots de la langue française et c'est cette liste que je voudrais utiliser pour vérifier si le mot est "validé" ou non.

J'avoue que je suis perdu sur la façon d'arriver à mes fins. J'ai les conditions de victoire ou non c'est à dire que si le mot est validé j'ai un code qui permet au joueur de passer au tour suivant, s'il ne se trouve pas dans la liste j'ai un code qui met fin à la partie.

Maintenant j'aimerais savoir comment je peux faire pour déclarer que mon mot est validé ou non.

Est ce que quelqu'un aurait une piste pour moi ? Ca serait tellement cooool :)

Merci d'avance !
Dernière édition par CyrilDt le 23 Mars 2021 07:55, édité 1 fois.

Avatar de l’utilisateur
Max
Messages : 8242
Inscription : 30 Juil 2011 13:57
Contact :

Re: Vérifier si un mot existe dans une liste

Message par Max » 20 Mars 2021 10:52

Bonjour,

première question: comment sont inscrit ces milliers de mots dans le fichier texte ? Juste les mots (pas leur définitions), rangés les uns derrière les autres séparé par un espace ?
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

CyrilDt
Messages : 5
Inscription : 17 Mars 2021 06:51

Re: Vérifier si un mot existe dans une liste

Message par CyrilDt » 20 Mars 2021 19:57

Salut Max !

Ils sont en liste donc avec un retour à la ligne après chaque mot et il n'y a que les mots, pas les définitions en effet.

Avatar de l’utilisateur
Max
Messages : 8242
Inscription : 30 Juil 2011 13:57
Contact :

Re: Vérifier si un mot existe dans une liste

Message par Max » 21 Mars 2021 11:18

Hello,

ça doit faire déjà un beau fichier avec tous ces mots :mrgreen:

La première étape est donc de charger le fichier txt. Pour se faire tu peux passer par la classe File (System.IO), où tu peux écrire quelque chose comme string allwords = File.ReadAllText(path);.
En suite, tu verras à travers certaines méthodes de la classe string pour traiter tout cela.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

CyrilDt
Messages : 5
Inscription : 17 Mars 2021 06:51

Re: Vérifier si un mot existe dans une liste

Message par CyrilDt » 23 Mars 2021 07:54

Hello !

Je reviens après quelques jours et voici comment j'ai codé ça :

Code : Tout sélectionner

using UnityEngine;
using System.Collections;
using System.IO;
using System.Collections.Generic;
using Assets.Scripts.Tests;

public class ListeDictionnaire : MonoBehaviour
{
    public TextAsset text;

    public bool IsTextInDictionary(string textToValidate)
    {
        var dictionary = new List<string>(text.text.Split("\r"[0], "\n"[0]));

        var validator = new TextInputValidator(dictionary);

        return validator.IsTextInDictionary(textToValidate);
    }
}

Code : Tout sélectionner

using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

namespace Assets.Scripts.Tests
{
    public class TextInputValidator
    {
        private List<string> _dictionary { get; set; }
        
        public TextInputValidator(List<string> dictionary)
        {
            _dictionary = dictionary;
        }

        public bool IsTextInDictionary(string text)
        {
            var lowercaseText = text.ToLower();
            return _dictionary.Contains(lowercaseText); 
        }
    }
}
Et tout fonctionne ! Le seul soucis présentement c'est qu'à chaque fois que j'écris un mot dans l'inputField il lit toute la liste de mot et donc entre le moment ou je valide mon mot avec Enter et celui ou l'action demandée se déclenche il se passe environ 1 seconde et demie avec mon ordi donc j'imagine 3 ou 4 avec une config moins puissante.

Faut que je trouve le moyen pour que le jeu lise la liste au start de la scène et garde ça en mémoire. Je me dis que ça règlerait peut être le soucis !

EN tout cas en attendant ça marche !

Merci Max pour ta piste :)

Répondre

Revenir vers « L'interface GUI »