Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[A moitié resolu]Goto était inattendu
Auteur Message
Répondre en citant
Message [A moitié resolu]Goto était inattendu 
Bonjour à tous, s'il vous plaît, aidez moi ! Je ne sais plus quoi faire !!

Alors je m'explique, je vient de commencer le batch (depuis une ou deux semaines) en regardant des tutos sur Youtube.
Mais j'ai deux problèmes, le premier depuis deux, trois jours, et le second depuis ce matin. Je commence par le plus embêtant : j'ai commencer un petit programme pour faire un petit jeux de hasard dont je mettrais le code en dessous, mais quand je lance le programme, tout commence bien jusqu'au moment où le programme affiche très rapidement avant de crasher : "goto était inattendu". J'ai chercher sur internet mais je n'ai pas trouver de solution donc svp pas de "Google est ton ami" et de lien comme réponse, je serais plutôt pour une réponse complète, expliquée avec patience et facile a comprendre pour un débutant et, même si je me doute que vous en aurez le temps, l'essayer sur votre propre pc. Okay

Mon deuxième "problème" est plutôt une question, je n'ai pas vraiment eu le temps de chercher, mais je me suis dis que tant qu'à faire, autant y inclure dans ce topic.
C'est parti, donc comme vous le verrez, mon jeu dispose d'un système de points, et je voudrais pouvoir le faire recommencer jusqu'à ce que le score soit à zéro en conservant les points gagnés ou perdus durant le jeu (le départ serait fixé à 500 points, un perdu serait de 50 points et un gagnés de 100 points).

Je met le code comme fichier(lien) et sur le topic directement: (il n'est pas tout à fait terminé). Wink
Code:
 @echo off
:début
echo Points%points%=500

set/a%monnombre%=%random%%%21





echo Je choisi un nombre entre 0 et 20...       C'est bon, j'ai trouve !      A toi de trouver mon nombre, bonne chance ;)
set /p /p=
cls
echo Choisi un nombre
set/p%tonnombre%=

if %tonnombre% equ %monnombre% goto :WIN
if %tonnombre% neq %monnombre% goto :LOSE

:WIN
echo Bravo, tu as trouve mon nombre !
echo Mon nombre etait %monnombre% !
set /p /a=
cls
%points%=500+100
echo Points=%points%

:LOSE
echo Oh, tu n'as pas trouve mon nombre...
echo Mon nombre etait %monnombre% !
set /p /z=
cls
%points%=500-50
echo Points=%points%



goto>nul








http://www.sendspace.com/file/6c7nua

Merci d'avance.
Corentin7301



Dernière édition par Corentin7301 le Mer 3 Aoû 2016 - 10:45; édité 3 fois
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Re: Goto était inattendu 
Corentin7301 a écrit:

set/a%monnombre%=%random%%%21
set/p%tonnombre%=
set /p /p=
set /p /a=
set /p /z=
%points%=500+100
%points%=500-50

Tout ça, ce n'est pas possible!
On fait "set variable=valeur".
Pour calculer, "set /a total=%nombre1%+%nombre2%".
Pour demander, "set /p variable=Entrez une valeur :"




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message Re: Goto était inattendu 
Hugo7 a écrit:

Tout ça, ce n'est pas possible!
On fait "set variable=valeur".
Pour calculer, "set /a total=%nombre1%+%nombre2%".

Pour demander, "set /p variable=Entrez une valeur :"



C'est à dire que pour calculer, par exemple le total, je fais :

(Au début du programme)
"%Nombre1%=500"
"%Nombre2%=100"
"%Nombre3%=50"

(Et dans le programme)

"set /a total=%nombre1%+%nombre2%"




Et pour demander je fais :

"set /p variable="

ou bien ?

"set /p variable=Entrez une valeur:"



Merci beaucoup pour cette rectification de code, et donc la réponse à ma deuxième question, mais tu n'as pas répondu à mon premier problème... Laughing

Eclaire moi stp Very Happy



Répondre en citant
Message Re: Goto était inattendu 
Corentin7301 a écrit:

"%Nombre1%=500"
"%Nombre2%=100"
"%Nombre3%=50"

En fait pour définir ces variables, il faudrait faire :
Code:
set Nombre1=500
set nombre2=100
set nombre3=50





Corentin7301 a écrit:

Et pour demander je fais :

"set /p variable="

ou bien ?

"set /p variable=Entrez une valeur:"

Tu met ce que tu veux après le "=", en fait c'est ce que t'affiches, tu peux poser une question ou pas, comme tu veux, même si tu met rien!




Pour le premier problème, c'est simple : si une variable n'est pas correctement définie (avec set comme il faut), elle n'est tout simplement pas définie du tout, en d'autres termes, la variable n'existe pas, ce qui fait buguer les IF, et quand tu auras correctement défini les variables avec des syntaxes exactes, ton goto ne buguera plus!


EDIT : Attends je te corrige ton code et je le teste Okay


EDIT : Voici ton code corrigé et expliqué :
Code:
@echo off
set points=0
:début
:: Correction : le 500 sert à rien, à mon avis tu voulais afficher le nombre de points,
:: donc on va commencer à 0 (avec le "set points=0" que j'ai ajouté plus haut) et on va
:: afficher le score :
echo Vous avez : %points% points.

:: Correction : jamais de % avant le =, et ne pas oublier de mettre des espaces!
:: Ancien code : set/a%monnombre%=%random%%%21
:: Nouveau code :
set /a monnombre=%random%%%21
 

 
:: Pour un truc plus clair, j'ai remis à la ligne les phrases.
echo Je choisis un nombre entre 0 et 20...
echo C'est bon, j'ai trouve !
echo A toi de trouver mon nombre, bonne chance ;)

:: Correction :
:: Ton code : set /p a=     ça sert à rien, si tu veux mettre une pause pour que
:: l'utilisateur ait le temps de lire avant le cls, met :
pause

cls

:: Correction : voir deuxième correction + on peut afficher une question sur cette ligne :
set /p tonnombre=Choisis un nombre :

:: Correction : ceci n'est pas obligatoire, mais pour éviter les bugs déclenchés
:: par une variable vide, on met des guillemets. Pas besoin de ":" avec GOTO
if "%tonnombre%" equ "%monnombre%" goto WIN
if "%tonnombre%" neq "%monnombre%" goto LOSE
 
:WIN
echo Bravo, tu as trouve mon nombre !
echo Mon nombre etait %monnombre% !

:: Correction : même remarque que précédemment pour la pause
pause

cls

:: Correction : ça c'est pas possible, il faut mettre une syntaxe correcte
:: Ton code %points%=500+100
:: On va ajouter 100 au score du joueur
set /a points=%points%+100

:: Correction :  ne pas oublier le "goto début" sinon le joueur ne pourra pas rejouer!
goto début

 
:LOSE
echo Oh, tu n'as pas trouve mon nombre...
echo Mon nombre etait %monnombre% !
:: Correction : pareil concernant PAUSE
pause
cls

:: Correction : pareil, mais je me suis permis de soustraire 5 points au lieu de 50
:: car 50 ça fait énormément beaucoup ^^'
set /a points=%points%-5

:: Correction : pareil pour le goto
goto début
 
:: Correction : ceci ne sert à rien :
:: goto>nul





______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message Re: Goto était inattendu 
Super, c'est génial !!
Merci bcp pour tes précisions et pour le code, tu m'as beaucoup aidé !



Répondre en citant
Message Re: Goto était inattendu 
Je revient vers toi car j'ai toujours le même problème de "goto était inattendu" après avoir rectifié mon code comme le tien...
Je te le met en dessous mais je ne trouve tjr pas le problème Question Question Sad Mad Mad


Code:
@echo off
set points=0
:debut
set/a monnombre=%random%%%21





echo Je choisi un nombre entre 0 et 20...
echo C'est bon, j'ai trouve !
echo A toi de trouver mon nombre, bonne chance ;)
pause



cls



set/p tonnombre=Choisis un nombre entre 0 et 20 :

if "%tonnombre%"equ"%monnombre%" goto WIN
if "%tonnombre%"neq"%monnombre%" goto LOSE

:WIN
echo Bravo, tu as trouve mon nombre !
echo Mon nombre etait %monnombre% !
pause
cls
set /a points=%points%+100
goto debut

:LOSE
echo Oh, tu n'as pas trouve mon nombre...
echo Mon nombre etait %monnombre% !
pause
cls
set /a points=%points%-5
goto debut




Répondre en citant
Message Re: Goto était inattendu 
Corentin7301 a écrit:
Je revient vers toi car j'ai toujours le même problème de "goto était inattendu" après avoir rectifié mon code comme le tien...
Je te le met en dessous mais je ne trouve tjr pas le problème Question Question Sad Mad Mad


Code:
@echo off
set points=0
:debut
set/a monnombre=%random%%%21





echo Je choisi un nombre entre 0 et 20...
echo C'est bon, j'ai trouve !
echo A toi de trouver mon nombre, bonne chance ;)
pause



cls



set/p tonnombre=Choisis un nombre entre 0 et 20 :

if "%tonnombre%"equ"%monnombre%" goto WIN
if "%tonnombre%"neq"%monnombre%" goto LOSE

:WIN
echo Bravo, tu as trouve mon nombre !
echo Mon nombre etait %monnombre% !
pause
cls
set /a points=%points%+100
goto debut

:LOSE
echo Oh, tu n'as pas trouve mon nombre...
echo Mon nombre etait %monnombre% !
pause
cls
set /a points=%points%-5
goto debut



Code:

::remplace ça :
if "%tonnombre%"equ"%monnombre%" goto WIN
if "%tonnombre%"neq"%monnombre%" goto LOSE
::par ça
if %tonnombre% equ %monnombre%  goto WIN
if %tonnombre% neq %monnombre%  goto LOSE


Je n'ai pas testé le code mais je crois que ça vient de la.
Il ne faut pas mettre de guillemets dans des if si on utilise GEQ,LEQ,EQU,NEQ.....

Je teste le code et j'éditerais le post si besoin.
Bonne chance

EDIT : ouais,ça venait des guillemets !
N'oblie pas d'améliorer le code pour faire genre si on se trompe de nombre ,on dit si le nombre mystère est plus grand ou plus petit.

Sinon,il y a une autre façon de faire les IF :
Code:
if "%tonnombre%"=="%monnombre%" goto WIN
if "%tonnombre%"=="%monnombre%" goto LOSE

ou plus simple (mais qui peut buger) :
Code:
if "%tonnombre%"=="%monnombre%" (goto WIN) else (goto LOSE)

Voila ,je t'ai corrigé ton code à 3 façons!




______________________________________________________
Compte inactif à partir de décembre 2016.
Ancien site
Nouveau site et site en contruction
Nombre de vues du profil :
Visiter le site web du posteur Skype
Répondre en citant
Message Re: Goto était inattendu 
Super merci beaucoup de ton aide Smile Smile Very Happy Mr. Green Okay



Répondre en citant
Message [A moitié resolu]Goto était inattendu 
Corentin7301 a écrit:
Super merci beaucoup de ton aide Smile Smile Very Happy Mr. Green Okay


Content que ça te fasse plaisir ! N'oublie pas de mettre ton sujet en résolu Okay




______________________________________________________
Compte inactif à partir de décembre 2016.
Ancien site
Nouveau site et site en contruction
Nombre de vues du profil :
Visiter le site web du posteur Skype
Répondre en citant
Message Re: Goto était inattendu 
logan T a écrit:
Il ne faut pas mettre de guillemets dans des if si on utilise GEQ,LEQ,EQU,NEQ.....

Pardon??! Shocked Shocked Shocked

logan T a écrit:
Code:

::remplace ça :
if "%tonnombre%"equ"%monnombre%" goto WIN
if "%tonnombre%"neq"%monnombre%" goto LOSE
::par ça
if %tonnombre% equ %monnombre%  goto WIN
if %tonnombre% neq %monnombre%  goto LOSE


Oui, si on oublie les espaces, ok, mais ça :
Code:
 if "%truc%" GEQ "%machin%"
fonctionne bien, hein Shocked




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message Re: Goto était inattendu 
Hugo7 a écrit:
logan T a écrit:
Il ne faut pas mettre de guillemets dans des if si on utilise GEQ,LEQ,EQU,NEQ.....

Pardon??! Shocked Shocked Shocked

logan T a écrit:
Code:

::remplace ça :
if "%tonnombre%"equ"%monnombre%" goto WIN
if "%tonnombre%"neq"%monnombre%" goto LOSE
::par ça
if %tonnombre% equ %monnombre%  goto WIN
if %tonnombre% neq %monnombre%  goto LOSE


Oui, si on oublie les espaces, ok, mais ça :
Code:
 if "%truc%" GEQ "%machin%"
fonctionne bien, hein Shocked

Bonjour,
c'est bon,l’erreur est humaine Laughing !




______________________________________________________
Compte inactif à partir de décembre 2016.
Ancien site
Nouveau site et site en contruction
Nombre de vues du profil :
Visiter le site web du posteur Skype
Message [A moitié resolu]Goto était inattendu 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch