MS-DOS // IA

Fermé
Thelignebest - 8 sept. 2009 à 23:29
 Thelignebest - 9 sept. 2009 à 22:38
Bonjour, je suis en cours d'une IA en MS-DOS, un fou ? non !
J'ai fait un code mais il ne marche pas, voyez vous même :
@echo off
title Binbatflym -- une Intelligence Artificielle PAR YARFLAM
if not exist pseudo.cfg goto save
cls
goto question

:save
cls
@echo Mon nom est Binbatflym
@echo Je suis un garcon issu/nee de chauves souris !
@echo Aussi je peux vous repondre sur different sujet :
@echo -Programmation
@echo -Jdr (Jeux de role)
@echo -TV/Film
@echo -Jeux video
@echo -Sciences et nouvelles technologies
@echo -Calcule mathematique simple
@echo -Expression/Orthographe francaise
@echo -Meteo/Info/Net
@echo -Telechargement gratuit
@echo Appuyez toujours sur entrer pour continuer ...
pause>nul
cls
set /p gname=Votre nom de famille : 
set /p sbname=Votre prenom : 
set /p ns=Naissance (01/01/90) : 
set /p hbt=Lieu d'habitation (Pays) : 
cls
@echo Bonjour %sbname% ! Nee le %ns%, et habitant en %hbt%
@echo Votre ip est toutes les informations de l'ordinateur sont : 
pause>nul
ipconfig /all
pause>nul
cls
@echo Maintenant vous pouvez enregistrer vos donnees et
@echo commencer a jouer ! Appuyez sur entrer ...
pause>nul
@echo %gname%;%sbname%;%ns%;%hbt%; > pseudo.cfg
goto question

:question
cls
FOR /F "tokens=1 delims=;" %%G IN (pseudo.cfg) DO set gname=%%G
FOR /F "tokens=2 delims=;" %%G IN (pseudo.cfg) DO set sbname=%%G
FOR /F "tokens=3 delims=;" %%G IN (pseudo.cfg) DO set ns=%%G
FOR /F "tokens=4 delims=;" %%G IN (pseudo.cfg) DO set hbt=%%G
@echo IA)=Bonjour %sbname% > tmp.txt
@echo IA)=Nee le %ns% ! C'est bien en %hbt% >> tmp.txt
cls
@echo IA)=Bonjour %sbname%
@echo IA)=Nee le %ns% ! C'est bien en %hbt%
set /p msg=%sbname%: 
set msg=%msg: =;%
set msg=%msg%;
@echo %msg% > msg.txt
cls
set /a bcl1=0
set /a bcl2=1
set /a bcl3=0
set frps=IA)=
goto lecture

:lecture
cls
set /a bcl1=bcl1+1
set /a bcl2=bcl2+1
FOR /F "tokens=%bcl1% delims=;" %%G IN (msg.txt) DO set fd1=%%G
FOR /F "tokens=%bcl2% delims=;" %%G IN (msg.txt) DO set fd2=%%G
if %fd1%==%fd2% goto interpret
goto lecture

:interpret
cls
set /a bcl3=bcl3+1
if %bcl3% GTR %bcl1% goto fin
FOR /F "tokens=%bcl3% delims=;" %%G IN (msg.txt) DO set dbn=%%G
set /a nxbl=1
FOR /F "tokens=1 delims=;" %%G IN (db.cfg) DO set /a xbl=%%G
goto load

:load
cls
set /a nxbl=nxbl+1
@echo Chargement %nxbl% sur %xbl% ... Partie %bcl3% sur %bcl1% ...
if %nxbl% GTR %xbl% goto erreur
FOR /F "tokens=%nxbl% delims=;" %%G IN (db.cfg) DO set dbs=%%G
if %dbs%==%dbn% set /a nxbl=nxbl+1
if %dbs%==%dbn% FOR /F "tokens=%nxbl% delims=;" %%G IN (db.cfg) DO set rps=%%G
if %dbs%==%dbn% set frps=%frps%%rps%
if %dbs%==%dbn% goto interpret
goto load

:fin
cls
@echo %frps% >> tmp.txt
cls
type tmp.txt
set /p msg=%sbname%: 
set msg=%msg: =;%
set msg=%msg%;
@echo %msg% > msg.txt
cls
set /a bcl1=0
set /a bcl2=1
set /a bcl3=0
goto lecture

:erreur
cls
@echo UNE ERREUR S'EST PRODUITE ou alors le mots n'est pas repertorier !
@echo Appuyez sur espace pour revenir a l'ancien message !
pause>nul
cls
type tmp.txt
set /p msg=%sbname%: 
set msg=%msg: =;%
set msg=%msg%;
@echo %msg% > msg.txt
cls
set /a bcl1=0
set /a bcl2=1
set /a bcl3=0
goto lecture


Maintenant je vais te donner l'expression française (Utile pour comprendre) : {Eu j'ai pas tout faite mais c'est pas grave !}
=>Discution
Récupere donnée UTILISATEUR (Nom, Prénom, Née le, Lieux)
Efface l'ancienne discution
Creation d'une nouvelle discution dans tmp.txt
MSG=Demande du message de %nom%
Transforme les espaces en ; => MSG
Et rajoute dans MSG un ; à la fin
Ecrit dans %msg% > msg.txt
n1=0
n2=1
n3=0
iamsg=IA)=
va a boucle1

=>Boucle1
n1=n1+1
n2=n2+1
Calcule le nombre de * données qu'il y a dans msg.txt séparé par des ";" => o1
Si d%n1% == d%n2% Va a Boucle2
Va a boucle1

=>Boucle2
n3=n3+1
Si %n3% > %n1% va a FIN
Retrouve la donnée %n3% dans msg.txt => o2
n4=1
n5=valeur maximum
va a Boucle3

=>Boucle3
n4=n4+1
Affichage progression n4 sur n5 ... Partie %n3% sur %o1%
if %n4% > %n5% Va a erreur
Retrouve la donnée %n4% dans db.cfg => o3
Si %o2%==%o3% Va a IN
Va a Boucle3

:IN
cls
Set /a n4=n4+1
Retrouve la donnée %n4% dans db.cfg => o4
set iamsg=%iamsg%%o4%
Va a Boucle2

:FIN
cls
@echo %iamsg% >> tmp.txt
cls
Affiche tmp.txt
MSG=Demande du message de %nom%
Transforme les espaces en ; => MSG
Et rajoute dans MSG un ; à la fin
Ecrit dans %msg% > msg.txt
n1=0
n2=1
n3=0
iamsg=IA)=
va a boucle1

:Erreur
cls
@echo UNE ERREUR S'EST PRODUITE ou alors le mots n'est pas repertorier !
@echo Appuyez sur espace pour revenir a l'ancien message !
pause>nul
cls
Affiche tmp.txt
MSG=Demande du message de %nom%
Transforme les espaces en ; => MSG
Et rajoute dans MSG un ; à la fin
Ecrit dans %msg% > msg.txt
n1=0
n2=1
n3=0
iamsg=IA)=
va a boucle1


Merci d'avance !
A voir également:

2 réponses

zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 161
9 sept. 2009 à 10:55
Bonjour,
Si tu veux une reponse, je pense que tu devrais poser une question precise, genre je voudrais faire ceci, j'ai code comme cela et cela ne marche pas
0
Re bonjour, pour répondre à ta question, je n'arrive pas a voir l'erreur, c'est pourquoi j'aimerais peut être qu'on dise certaine chose sur mon code.
C'est vrai que j'ai remarqué une faute : Je ne doit pas supprimer les espaces et je doit utiliser 2 DB
L'une les question et l'autre les réponses au même étage:
DB 1 :
4;Bonjour;Au revoir;Merci;

DB 2 :
4;Bonjour;Au revoir et à bientôt;De rien !


Mais oublions ce petit détail ... j'aimerais savoir où je me suis trompé ...
D'habitude mon code est plus simple (J'utilise pas autant de variable) donc je m'y perd là ^^

Merci d'avance
0