Batch "Pong"
Posté : 07 juil. 2011 19:53
Voici un code batch pour faire un ''pong''
@ECHO OFF
CLS
rem ------------------------------------
rem Initialisations
rem ------------------------------------
SET /A X=5
SET /A dX=1
SET /A Y=2
SET /A dY=1
SET VAR=O
SET VAR_MUR=±
:debut
Color 0A
rem ------------------------------------
rem Création de la ligne du curseur
rem ------------------------------------
rem --- décalage colonne ---
SET /A colonne=0
:decal_col_avant
IF %colonne% GEQ %X% GOTO decal_col_avant_termine
SET VAR=^ %VAR%
SET /A colonne+=1
GOTO decal_col_avant
:decal_col_avant_termine
rem --- décalage colonne pour le mur de droite ---
SET /A X_restant=25-%X%
:decal_col_apres
IF %X_restant% EQU 0 GOTO decal_col_apres_termine
SET VAR_MUR=^ %VAR_MUR%
SET /A X_restant-=1
GOTO decal_col_apres
:decal_col_apres_termine
SET VAR=±%VAR%%VAR_MUR%
rem ------------------------------------
rem Affichage
rem ------------------------------------
CLS
ECHO ±±±±±±±±±±±±±±±±±±±±±±±±±±±±
rem --- décalage ligne avant ---
SET /A Y_decal_ligne=%Y%-1
FOR /L %%j IN (0,1,%Y_decal_ligne%) DO (
ECHO ± ±
)
rem --- ligne curseur ---
ECHO %VAR%
rem --- décalage ligne après ---
SET /A Y_restant=11-%Y%
FOR /L %%j IN (0,1,%Y_restant%) DO (
ECHO ± ±
)
ECHO ±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ECHO === X=%X% (%dX%), Y=%Y% (%dy%) ===
rem ------------------------------------
rem Calculs des rebonds
rem ------------------------------------
IF %Y% EQU 12 SET /A dY*=-1
IF %Y% EQU 0 SET /A dY*=-1
IF %X% EQU 25 SET /A dX*=-1
IF %X% EQU 0 SET /A dX*=-1
rem ------------------------------------
rem Réinitialisation de variables
rem pour la prochaine boucle
rem ------------------------------------
SET VAR=O
SET VAR_MUR=±
SET /A X+=dX
SET /A Y+=dY
SET /A nb-=1
rem ------------------------------------
rem Temporisation si nécessaire (à décommenter)
rem XP: utiliser choice avec temporisation
rem et donner la possibilité de quitter
rem ------------------------------------
rem ping 127.0.0.1 -n 2 > NUL 2> NUL
echo.
echo.
echo.
goto debut
@ECHO OFF
CLS
rem ------------------------------------
rem Initialisations
rem ------------------------------------
SET /A X=5
SET /A dX=1
SET /A Y=2
SET /A dY=1
SET VAR=O
SET VAR_MUR=±
:debut
Color 0A
rem ------------------------------------
rem Création de la ligne du curseur
rem ------------------------------------
rem --- décalage colonne ---
SET /A colonne=0
:decal_col_avant
IF %colonne% GEQ %X% GOTO decal_col_avant_termine
SET VAR=^ %VAR%
SET /A colonne+=1
GOTO decal_col_avant
:decal_col_avant_termine
rem --- décalage colonne pour le mur de droite ---
SET /A X_restant=25-%X%
:decal_col_apres
IF %X_restant% EQU 0 GOTO decal_col_apres_termine
SET VAR_MUR=^ %VAR_MUR%
SET /A X_restant-=1
GOTO decal_col_apres
:decal_col_apres_termine
SET VAR=±%VAR%%VAR_MUR%
rem ------------------------------------
rem Affichage
rem ------------------------------------
CLS
ECHO ±±±±±±±±±±±±±±±±±±±±±±±±±±±±
rem --- décalage ligne avant ---
SET /A Y_decal_ligne=%Y%-1
FOR /L %%j IN (0,1,%Y_decal_ligne%) DO (
ECHO ± ±
)
rem --- ligne curseur ---
ECHO %VAR%
rem --- décalage ligne après ---
SET /A Y_restant=11-%Y%
FOR /L %%j IN (0,1,%Y_restant%) DO (
ECHO ± ±
)
ECHO ±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ECHO === X=%X% (%dX%), Y=%Y% (%dy%) ===
rem ------------------------------------
rem Calculs des rebonds
rem ------------------------------------
IF %Y% EQU 12 SET /A dY*=-1
IF %Y% EQU 0 SET /A dY*=-1
IF %X% EQU 25 SET /A dX*=-1
IF %X% EQU 0 SET /A dX*=-1
rem ------------------------------------
rem Réinitialisation de variables
rem pour la prochaine boucle
rem ------------------------------------
SET VAR=O
SET VAR_MUR=±
SET /A X+=dX
SET /A Y+=dY
SET /A nb-=1
rem ------------------------------------
rem Temporisation si nécessaire (à décommenter)
rem XP: utiliser choice avec temporisation
rem et donner la possibilité de quitter
rem ------------------------------------
rem ping 127.0.0.1 -n 2 > NUL 2> NUL
echo.
echo.
echo.
goto debut