[C#] Le jeu des animaux

Le jeu des animaux [C#] - C#/.NET managed - Programmation

Marsh Posté le 30-05-2006 à 14:23:41    

Vu le titre, vous vous en doutez déjà, je m'emmerde comme un rat mort au taff, et du coup je m'occupe comme je peux avec des petits projets à la con.
 
Je sais pas pour vous, mais moi, quand j'étais petit, je jouais souvent avec ma soeur au jeu des animaux.
Le principe est bête et stupide :
- tu penses à un animal.  
- L'autre te pose des questions.
- Tu ne réponds que par oui ou par non.
- Jusqu'à ce que mort s'en suive (ou qu'un des deux abandonne, à moins que l'animal soit enfin découvert, mais ça c'est plus rare :D)
 
Enfin bref.
 
A l'age de 8 ans, armé de mon Commodore 64 (enfin, celui que mon père utilisait pour son boulot), je découvre une K7 avec ce jeu dessus.
Top moumoute, voilà ma soeur dans le placard, et moi qui fait galérer le pauvre C64 comme un âne pendant des heures pour trouver "drosophyle".
(Le 64, c'est pour 64 Ko de mémoire, pas 64 bits :o ;))
 
Et depuis, j'ai de temps en temps pensé à un algo "qui tiens la route" afin de réécrire ce jeu moi-même.
Sauf que je n'ai jamais pris le temps de m'y mettre.
Et là, du temps, j'ai que ça, donc... Hop, je me suis lancé un peu avant midi, et après une sieste entre-coupée de lignes de codes, voilà mon premier programme "d'AI" (sisi, c'est une forme d'AI :o)
 
Pas très top moumoute d'un point de vue complexité, la source pourrait s'évérer utile pour piger ce qui m'a pris le plus de temps à faire (une heure, j'y crois pas comment j'ai trop galérer) : un fichier XSD
Mais aussi la manipulation de fichiers XML, les forms pas fermables (c'est chiant, mais vu que c'est rigolo, je l'ai laissé :D) et comme d'hab, le code bien gore à la sauce MagicBuzz, qui vaut rien qu'à lui le détour ;)
 
Enfin bref, si votre petite soeur n'a pas fini de déssecher dans le placard, vous pourrez toujours la mettre devant ce jeu à deux balles qui va l'intéresser 5 minutes le temps de comprendre comment fermer la fenêtre "J'ai perdu" :D
 
L'éxécutable (nécessite le Framework .NET 2.0) (6,52 Ko) <- y'en a un qui me dit qu'il le fait en 500 o sur sa Ti92, je le passe pas la fenêtre (il se reconnaîtra ;))
Le source (VS 2005, compatible avec la version Express) (21,0 Ko)
 
La tronche du fichier quand il est "vide" :


<?xml version="1.0" encoding="utf-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="data.xsd">
  <answer text="Est-ce un mamifère ?">
    <yes>
      <animal text="un lapin" />
    </yes>
  </answer>
</root>


 
Le même fichier après quelques parties :


<?xml version="1.0" encoding="utf-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="data.xsd">
  <answer text="Est-ce un mamifère ?">
    <yes>
      <answer text="Est-il carnivoire ?">
        <yes>
          <answer text="Est-il roux ?">
            <yes>
              <animal text="un renard" />
            </yes>
            <no>
              <animal text="un loup" />
            </no>
          </answer>
        </yes>
        <no>
          <animal text="un lapin" />
        </no>
      </answer>
    </yes>
    <no>
      <answer text="Est-ce un insecte ?">
        <yes>
          <answer text="A-t-il un dard ?">
            <yes>
              <answer text="Fait-il du miel ?">
                <yes>
                  <animal text="une abeille" />
                </yes>
                <no>
                  <animal text="une guêpe" />
                </no>
              </answer>
            </yes>
            <no>
              <animal text="une mouche" />
            </no>
          </answer>
        </yes>
      </answer>
    </no>
  </answer>
</root>


 
C'est pas bô ça ?
 
(Vous noterez que je suis toujours aussi nule en anglais... "answer"... Super... Je cherchais une version plus anglophone du mot "question"... J'ai mis dans le mille à côté :sol:)
 
Je vous pond pas de listing du code, je vous laisse découvrir (j'ai trop honte, je pense que je me suis pas mal compliqué la vie pour pas grand chose :D)
M'enfin bon, ça marche, c'est déjà pas mal [:anathema]


Message édité par Arjuna le 30-05-2006 à 14:27:45
Reply

Marsh Posté le 30-05-2006 à 14:23:41   

Reply

Marsh Posté le 30-05-2006 à 15:20:37    

bah alors ? y'a personne qu'a une petite soeur ???
ou si elles sont toutes déssechées au fond du placard ? :o


Message édité par Arjuna le 30-05-2006 à 15:20:52
Reply

Marsh Posté le 30-05-2006 à 15:26:00    

Ben stadire que ton truc, c'est pas une ia ni rien, c'est juste une liste de questions/réponses prédéfinies. A la limite, tu codes tout en dur avec des gros if et ca revient au même [:spamafote]
 
y'avait un truc sur le net, qui te trouvait n'importe quel objet en 10 questions, mais je trouve plus l'url :/

Reply

Marsh Posté le 30-05-2006 à 16:17:33    

ben si, c'est de l'IA "par l'apprentissage" :o
c'est la forme la plus basique d'IA qui existe.
 
tu testes.
tu fais des erreurs.
tu retiens les erreurs et comment les éviter.
et au final tu deviens "intelligent".
 
c'est vraiment la forme la plus basique, mais c'est de l'IA quand même :o

Reply

Marsh Posté le 30-05-2006 à 16:58:51    

ah, j'avais pas compris que ton xml se remplissait tout seul :o

Reply

Marsh Posté le 30-05-2006 à 17:16:58    

/me bite lorill arround a big hole :na:


Message édité par Arjuna le 30-05-2006 à 17:17:17
Reply

Marsh Posté le 30-05-2006 à 20:09:19    

:hello:  
question: le xml ne fait-il pas un fichier extremement volumineux par rapport aux données y figurant?
une autre structure de donnée ne serait elle pas plus simple?

Reply

Marsh Posté le 30-05-2006 à 20:17:38    

Certainement.
Mais le XML est facile à parcourir d'un point de vue programmation.
Et le XML est facile à poster vers une autre application.
Pis c'est pratique pour le débug (et Dieu sait si j'en ai besoin :D)
Maintenant qu'on trouve plus un HD de moins de 80 Go sur le marché...
A raison de 180 octets par animal en moyenne (question + nom + nodes), ça fait...
 
80 * 1024 * 1024 * 1024 / 180 = 477 218 588 animaux à stocker sur un tel HD... Y'a de la marge :D
Bon, après, je suis d'accord que dès quelques Mo, ça va commencer à rammer... Mais ça permet déjà de gérer une base de plusieurs dizaine de milliers d'animaux, donc ça reste totalement viable...
 
Une autre solution serait de distribuer SQL Server Express 2005 avec, mais bon, avant d'arriver à dépasser la taille du moteur de données lui-même, c'est pas gagné ;)
(par contre, point de vue prog, je suis d'accord, c'est encore plus facile :))


Message édité par Arjuna le 30-05-2006 à 20:20:18
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed