[BATCH] Problème pour aditionner des chaînes de caractères
Résolu
A voir également:
- [BATCH] Problème pour aditionner des chaînes de caractères
- Clavier mac caractères spéciaux - Guide
- Caractères ascii - Guide
- Caractères spéciaux clavier - Guide
- Fichier batch - Guide
7 réponses
barnabe0057
Messages postés
14297
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
8 juin 2023
4 884
30 juin 2022 à 16:40
30 juin 2022 à 16:40
Bonjour,
J'ai l'impression que ton problème vient de la variable 'lignes'.
En effet tu utilises set /a avec cette variable qui contient des chaînes de caractères alors que le commutateur /a sert à effectuer des opérations arithmétiques.
Essaie d'utiliser set à la place de set /a
J'ai l'impression que ton problème vient de la variable 'lignes'.
En effet tu utilises set /a avec cette variable qui contient des chaînes de caractères alors que le commutateur /a sert à effectuer des opérations arithmétiques.
Essaie d'utiliser set à la place de set /a
Nous avons le même code, et le même problème...
Merci, le programme fonctionne presque sauf que j'ai des tas de guillemets qui s'affichent à l'écran...
barnabe0057
Messages postés
14297
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
8 juin 2023
4 884
Modifié le 30 juin 2022 à 16:48
Modifié le 30 juin 2022 à 16:48
Poste ton code en entier, je peux sûrement corriger ça.
Merci d'utiliser les balises de code pour poster.
Merci d'utiliser les balises de code pour poster.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questioncls
@echo off
echo _ _ _ _ _ _ _ _ _
echo _ _ _ _,/ _ _ _ _ ^| ___ __ \ _ _ _ ,
echo _ _ _ _,/ _ _ _ _ /` \ \ \ \ \ \
echo / _ _ _ _ _/` \ \ \ \ \ \ \ \
echo \ \ \ \'__'\ \ \ -------,
echo \ \ \ __ \ \ ------`
echo \ \ \ \' '\ \ \ \
echo \ \ \ \ \ \ \ \ _ _ _ _ /~\ /~\ /~\
echo \ \ \__\ \__\ \ _ _ _ _, \~/ \~/ \~/
echo \--\
echo.
echo.
echo.
echo Appuiez sur une touche pour commencer
pause >nul
:Menu
cls
echo.
echo Démarrer (touche d)
echo.
echo Crédits (touche c)
echo.
echo Quitter (touche q)
echo.
echo.
echo Appuiez sur la touche correspondante à votre action [d; c; q]
choice /C dcq /N /M ">"
if %errorlevel% == 1 (goto Start)
if %errorlevel% == 2 (goto Credits)
if %errorlevel% == 3 (goto Quit)
:Quit
cls
echo Merci d'avoir joué!!
echo.
timeout 5 >nul
exit /b
:Credits
cls
echo Crédits:
echo.
echo Directeur en chef: Quartz
echo Créateurs Graphismes: Quartz
echo Programmations: Quartz
echo.
echo.
echo Cinq premières personnes extérieur
echo à l'entreprise à avoir testé le
echo jeu The:
echo.
echo 1-
echo 2-
echo 3-
echo 4-
echo 5-
echo.
echo Merci à tous pour vos conseils, vos
echo idées, vos merci ou même pour le
echo faites d'avoir joué, chose qui me
echo rend joyeux: avoir fait une jeu
echo que des personnes ont aimé!
echo.
echo.
echo Appuie sur une touche...
pause >nul
goto Menu
:Start
cls
echo Est-ce la première fois que vous jouez?
echo o/n
choice /C on /N /M ">"
if %errorlevel% == 1 goto Instructions
if %errorlevel% == 2 goto Demmarer
:Instructions
cls
echo Vous incarnez un personnage, qui ressemble à une croix et qui peut se déplacer dans le monde. Il peut apprendre
echo des sorts et au fur et à mesure du temps, il deviendra de plus en plus fort.
echo.
echo Vous faites ce que vous voulez sauf faire n'importe quoi vous ne voudriez pas perdre
echo tous vos fichiers, si? XD
echo.
echo Se jeu n'est pas compliqué, ne vous inquiétez pas.
echo.
echo Appuiez sur les touches zsqd pour vous déplacer (z haut; s bas; q gauche; d droite)
echo.
echo.
pause
:Demmarer
set /a x = 78
set /a y = 20
cls
echo Prêts? Appuiez sur une touche pour commencer!
pause >nul
echo off
:Loop
:y
set /a nb=0
:loopy
if %y% == %nb% (goto x)
echo.
set /a nb=nb+1
goto loopy
:x
echo off
set /a nb=0
set lignes=" "
:loopx
if %x% == %nb% (goto afficherPersonnage)
set lignes=%lignes%" "
set /a nb=nb+1
goto loopx
:afficherPersonnage
echo. %lignes%
echo. X
pause
C'est mieux comme ça
Quartz
>
barnabe0057
Messages postés
14297
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
8 juin 2023
30 juin 2022 à 17:07
30 juin 2022 à 17:07
Non, je ne crois pas...
Voici la dernière partie de mon code:
Voici la dernière partie de mon code:
:Demmarer
set /a x = 78
set /a y = 20
cls
echo Prêts? Appuiez sur une touche pour commencer!
pause >nul
echo off
:Loop
:y
set /a nb=0
:loopy
if %y% == %nb% (goto x)
echo.
set /a nb=nb+1
goto loopy
:x
echo off
set /a nb=0
set "lignes= "
:loopx
if %x% == %nb% (goto afficherPersonnage)
set lignes="%lignes% "
set /a nb=nb+1
goto loopx
:afficherPersonnage
echo. %lignes%
echo. X
pause
barnabe0057
Messages postés
14297
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
8 juin 2023
4 884
>
Quartz
30 juin 2022 à 17:08
30 juin 2022 à 17:08
Tu as mal corrigé la deuxième ligne ;)
barnabe0057
Messages postés
14297
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
8 juin 2023
4 884
30 juin 2022 à 17:20
30 juin 2022 à 17:20
@echo off
chcp 65001 >nul
echo _ _ _ _ _ _ _ _ _
echo _ _ _ _,/ _ _ _ _ ^| ___ __ \ _ _ _ ,
echo _ _ _ _,/ _ _ _ _ /` \ \ \ \ \ \
echo / _ _ _ _ _/` \ \ \ \ \ \ \ \
echo \ \ \ \'__'\ \ \ -------,
echo \ \ \ __ \ \ ------`
echo \ \ \ \' '\ \ \ \
echo \ \ \ \ \ \ \ \ _ _ _ _ /~\ /~\ /~\
echo \ \ \__\ \__\ \ _ _ _ _, \~/ \~/ \~/
echo \--\
echo.
echo.
echo.
echo Appuyez sur une touche pour commencer
pause >nul
:Menu
cls
echo.
echo Démarrer (touche d)
echo.
echo Crédits (touche c)
echo.
echo Quitter (touche q)
echo.
echo.
echo Appuyez sur la touche correspondante à votre action [d; c; q]
choice /C dcq /N /M ">"
if %errorlevel% == 1 (goto Start)
if %errorlevel% == 2 (goto Credits)
if %errorlevel% == 3 (goto Quit)
:Quit
cls
echo Merci d'avoir joué!!
echo.
timeout 5 >nul
exit /b
:Credits
cls
echo Crédits:
echo.
echo Directeur en chef: Clément
echo Créateurs Garphismes: Clément
echo Programmations: Clément
echo.
echo.
echo Cinq premières personnes extérieures
echo à l'entreprise à avoir testé le
echo jeu The:
echo.
echo 1-
echo 2-
echo 3-
echo 4-
echo 5-
echo.
echo Merci à tous pour vos conseils, vos
echo idées, vos merci ou même pour le
echo fait d'avoir joué, chose qui me
echo rend joyeux: avoir fait un jeu
echo que des personnes ont aimé!
echo.
echo.
echo Appuie sur une touche...
pause >nul
goto Menu
:Start
cls
echo Est-ce la première fois que vous jouez?
echo o/n
choice /C on /N /M ">"
if %errorlevel% == 1 goto Instructions
if %errorlevel% == 2 goto Demmarer
:Instructions
cls
echo Vous incarnez un personnage, qui ressemble à une croix et qui peut se déplacer dans le monde. Il peut apprendre
echo des sorts et au fur et à mesure du temps, il deviendra de plus en plus fort.
echo.
echo Vous faites ce que vous voulez sauf faire n'importe quoi vous ne voudriez pas perdre
echo tous vos fichiers, si? XD
echo.
echo Se jeu n'est pas compliqué, ne vous inquiétez pas.
echo.
echo Appuiez sur les touches zsqd pour vous déplacer (z haut; s bas; q gauche; d droite)
echo.
echo.
pause
:Demmarer
set /a x = 78
set /a y = 20
cls
echo Prêts? Appuyez sur une touche pour commencer!
pause >nul
echo off
:Loop
:y
set /a nb=0
:loopy
if %y% == %nb% (goto x)
echo.
set /a nb=nb+1
goto loopy
:x
echo off
set /a nb=0
set "lignes= "
:loopx
if %x% == %nb% (goto afficherPersonnage)
set "lignes=%lignes% "
set /a nb=nb+1
goto loopx
:afficherPersonnage
echo. %lignes%
echo. X
pause
barnabe0057
Messages postés
14297
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
8 juin 2023
4 884
>
Quartz
Modifié le 30 juin 2022 à 17:52
Modifié le 30 juin 2022 à 17:52
oui effectivement
Voilà comment faire en simplifiant ton code :
Voilà comment faire en simplifiant ton code :
setlocal enabledelayedexpansion
:Loop
for /L %%A in (1,1,%y%) do echo.
set "lignes="
for /L %%A in (1,1,%x%) do set "lignes=!lignes! "
:afficherPersonnage
echo !lignes! X
pause
Re-Bonjour,
J'ai continué mon code, le but étant que mon personnage se déplace. Mon code fonctionne à moitié, il ne peut se déplacer que verticalement...
Voici le reste du code
Je sais, ce n'est pas le sujet, mais je pense qu'il vaut mieux continuer ici, vu que vous connaissez déjà le fonctionnement de mon programme...
J'ai continué mon code, le but étant que mon personnage se déplace. Mon code fonctionne à moitié, il ne peut se déplacer que verticalement...
Voici le reste du code
:afficherPersonnage
set "lignes=%lignes%X"
echo. %lignes%
:ChoisirDirection
choice /c zsqd /N /M ""
if %errorlevel%==1 (set /a y=%y%-1)
if %errorlevel%==2 (set /a y=%y%+1)
if %errorlevel%==3 (set /a x=%x%-1)
if %errorlevel%==3 (set /a x=%x%+1)
cls
goto Loop
Je sais, ce n'est pas le sujet, mais je pense qu'il vaut mieux continuer ici, vu que vous connaissez déjà le fonctionnement de mon programme...
barnabe0057
Messages postés
14297
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
8 juin 2023
4 884
30 juin 2022 à 18:02
30 juin 2022 à 18:02
En simplifiant un peu le code ça donne ça :
:Demmarer
set /a x=78
set /a y=20
cls
echo Prêts? Appuyez sur une touche pour commencer!
pause >nul
setlocal enabledelayedexpansion
:Loop
cls
for /L %%A in (1,1,%y%) do echo.
set "lignes="
for /L %%A in (1,1,%x%) do set "lignes=!lignes! "
:afficherPersonnage
echo !lignes! X
:ChoisirDirection
choice /c zsqd /N /M ""
if %errorlevel% EQU 1 (set /a y-=1)
if %errorlevel% EQU 2 (set /a y+=1)
if %errorlevel% EQU 3 (set /a x-=1)
if %errorlevel% EQU 4 (set /a x+=1)
goto Loop
Quartz
>
barnabe0057
Messages postés
14297
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
8 juin 2023
30 juin 2022 à 18:05
30 juin 2022 à 18:05
Merci beaucoup pour votre aide!