[BATCH] Problème pour aditionner des chaînes de caractères
Résolu
Quartz
-
Quartz -
Quartz -
Bonjour, je veux crée un jeu en batch, où le personnage (une croix) peut se déplacer. Pour cela, en fonction des coordonnées, l'ordinateur crée plus ou moins de lignes avant la croix, et plus ou moins d'espaces avant croix. Malheureusement, je n'arrive pas à définir un nombre d'espace avant la croix. Voici le bout de code important:
: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 /a lignes=" "
:loopx
if %x% == %nb% (goto afficherPersonnage)
set /a lignes=%lignes%" "
set /a nb=nb+1
goto loopx
:afficherPersonnage
echo. %lignes%
echo. X
pause
L'erreur que je reçoit?
Il manque un opérande
Bonne journée
: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 /a lignes=" "
:loopx
if %x% == %nb% (goto afficherPersonnage)
set /a lignes=%lignes%" "
set /a nb=nb+1
goto loopx
:afficherPersonnage
echo. %lignes%
echo. X
pause
L'erreur que je reçoit?
Il manque un opérande
Bonne journée
A voir également:
- [BATCH] Problème pour aditionner des chaînes de caractères
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Fichier batch - Guide
- Caractères spéciaux mac - Guide
7 réponses
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
Merci, le programme fonctionne presque sauf que j'ai des tas de guillemets qui s'affichent à l'écran...
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
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
@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
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...
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