MS-DOS // IA

Thelignebest -  
 Thelignebest -
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 817 Statut Membre 161
 
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
Thelignebest
 
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