D'autre forum sur le batch ? (+ quelques questions) - Shell/Batch - Programmation
Marsh Posté le 08-03-2007 à 16:06:27
Au fait si tu trouve d'autres forums ça m'intérrésse poste les liens ici
Marsh Posté le 08-03-2007 à 16:19:38
Wé, j'suis en train de rajouter le code pour savoir quand est ce qu'on a coulé un bateau, sinon là on peut jouer, mais il manque 2, 3 trucs comme ce que j'viens de dire
J'posterais les sources quand tout marchera !
Marsh Posté le 08-03-2007 à 16:24:05
tu peut pas poster la source que je regarde se que sa donne pour l'instant je suis curieu
Marsh Posté le 08-03-2007 à 16:31:57
lol patience ;p
non sérieusement attend quelques heures, j'fini juste les trucs que j'ai commencé et j'post, promis ^^
Marsh Posté le 08-03-2007 à 17:05:58
Bon, tiens ^^
J'ai fini le compteur d'unité allié.
Maintenant faut faire le truc quand une unité est coulé, pas trop dur a faire mais j'crois j'vais pas le faire aujourd'hui parce que c'est quand meme assez chiant de coder -_-
Il y a des executables que tu n'as pas, c'est normal.
listenbat.exe et clientbat.exe c'est netcat en fait
et cmdow.exe c'est pour cacher les fenetres.
Ces 2 programmes telechargeables gratuitement sur internet si tu les veux...
@echo off
setlocal enabledelayedexpansion
title Airad Battle
color 79
tskill clientbat > NUL
tskill listenbat > NUL
cls
echo.
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º º
echo º Airad Battle v0.1 º
echo º by Blast Killer º
echo º BlastKiller@hotmail.fr º
echo º http://blastinfo.free.fr º
echo º Open Source º
echo º Grande pensees a Cecile º
echo º Alias Daria (d'ou Airad) º
echo º º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo.
echo Bienvenue dans Airad Battle, jeu de bataille navale avec multijoueur.
echo.
echo Bon jeu !
echo.
pause
del /F /Q client.bat > NUL
del /F /Q listen.bat > NUL
del /F /Q taille.txt > NUL
del /F /Q input.txt > NUL
del /F /Q output.txt > NUL
cls
::set table variable
set a1=°
set a2=°
set a3=°
set a4=°
set a5=°
set a6=°
set a7=°
set a8=°
set a9=°
set a10=°
set b1=°
set b2=°
set b3=°
set b4=°
set b5=°
set b6=°
set b7=°
set b8=°
set b9=°
set b10=°
set c1=°
set c2=°
set c3=°
set c4=°
set c5=°
set c6=°
set c7=°
set c8=°
set c9=°
set c10=°
set d1=°
set d2=°
set d3=°
set d4=°
set d5=°
set d6=°
set d7=°
set d8=°
set d9=°
set d10=°
set e1=°
set e2=°
set e3=°
set e4=°
set e5=°
set e6=°
set e7=°
set e8=°
set e9=°
set e10=°
set f1=°
set f2=°
set f3=°
set f4=°
set f5=°
set f6=°
set f7=°
set f8=°
set f9=°
set f10=°
set g1=°
set g2=°
set g3=°
set g4=°
set g5=°
set g6=°
set g7=°
set g8=°
set g9=°
set g10=°
set h1=°
set h2=°
set h3=°
set h4=°
set h5=°
set h6=°
set h7=°
set h8=°
set h9=°
set h10=°
set i1=°
set i2=°
set i3=°
set i4=°
set i5=°
set i6=°
set i7=°
set i8=°
set i9=°
set i10=°
set j1=°
set j2=°
set j3=°
set j4=°
set j5=°
set j6=°
set j7=°
set j8=°
set j9=°
set j10=°
set a1k=°
set a2k=°
set a3k=°
set a4k=°
set a5k=°
set a6k=°
set a7k=°
set a8k=°
set a9k=°
set a10k=°
set b1k=°
set b2k=°
set b3k=°
set b4k=°
set b5k=°
set b6k=°
set b7k=°
set b8k=°
set b9k=°
set b10k=°
set c1k=°
set c2k=°
set c3k=°
set c4k=°
set c5k=°
set c6k=°
set c7k=°
set c8k=°
set c9k=°
set c10k=°
set d1k=°
set d2k=°
set d3k=°
set d4k=°
set d5k=°
set d6k=°
set d7k=°
set d8k=°
set d9k=°
set d10k=°
set e1k=°
set e2k=°
set e3k=°
set e4k=°
set e5k=°
set e6k=°
set e7k=°
set e8k=°
set e9k=°
set e10k=°
set f1k=°
set f2k=°
set f3k=°
set f4k=°
set f5k=°
set f6k=°
set f7k=°
set f8k=°
set f9k=°
set f10k=°
set g1k=°
set g2k=°
set g3k=°
set g4k=°
set g5k=°
set g6k=°
set g7k=°
set g8k=°
set g9k=°
set g10k=°
set h1k=°
set h2k=°
set h3k=°
set h4k=°
set h5k=°
set h6k=°
set h7k=°
set h8k=°
set h9k=°
set h10k=°
set i1k=°
set i2k=°
set i3k=°
set i4k=°
set i5k=°
set i6k=°
set i7k=°
set i8k=°
set i9k=°
set i10k=°
set j1k=°
set j2k=°
set j3k=°
set j4k=°
set j5k=°
set j6k=°
set j7k=°
set j8k=°
set j9k=°
set j10k=°
::set boat variable
set start=0
set boat=bateau1
set bateau1=5
set bateau2=4
set bateau3=3
set bateau4=3
set bateau5=2
set bateau1e=1
set bateau2e=1
set bateau3e=1
set bateau4e=1
set bateau5e=1
set fini=0
set where=placing
set where1=fini
set enemy=17
set ally=17
set taille=0
set taillebck=0
:listen
cls
echo.
echo.
echo Sur quel port voullez vous vous mettre en ecoute ?
set /p listen=
if not defined listen goto listen
if %listen% GTR 65535 goto listen
if %listen% LSS 1 goto listen
echo listenbat.exe -L -p %listen% ^> output.txt> listen.bat
echo exit>> listen.bat
cmdow.exe /run /hid listen.bat
:ip
echo.
echo.
echo Veuillez rentrer l'IP de la machine distante avec qui vous aller jouez :
set /P ip=
if not defined ip goto ip
for /f "tokens=1,2,3,4 delims=." %%a in ("%ip%" ) do call :cmdip %%a %%b %%c %%d
:port
echo.
echo.
echo Veuillez rentrer le port de la machine distante avec qui vous aller jouez :
set /P port=
if not defined port goto port
if %port% GTR 65535 goto port
if %port% LSS 1 goto port
:player
echo.
echo.
echo ATTENTION :
echo Votre adversaire doit avoir choisi son port en ecoute avant de repondre a cette question :
echo.
set /p player= Etes vous le premier ou deuxieme joueur (1/2) ?
if %player% EQU 1 goto connextest
if %player% EQU 2 goto connextest
goto player
:connextest
set nbrt=%player%
if %player% EQU 2 set vart=1
if %player% EQU 1 set vart=2
echo.
echo Une connexion de test va etre effectuee avec votre adversaire...
echo test%player%> input.txt
echo clientbat.exe %ip% %port% ^< input.txt> client.bat
echo exit>> client.bat
cmdow.exe /run /hid client.bat
ping -n 2 127.0.0.1 > NUL
qprocess | findstr "clientbat.exe" > NUL
if %errorlevel% EQU 1 goto erreurc
:bouclet
ping -n 2 127.0.0.1 > NUL
dir /-c | findstr /i "output.txt"> taille.txt
for /f "delims=" %%a in (taille.txt) do set taille="%%a"
set taille=%taille:~18,18%
set taille=%taille: =%
if %taille%==%taillebck% goto bouclet
::suite
set taillebck=%taille%
for /f "delims=" %%a in ('type output.txt') do set var=%%a
if not "%var%"=="test%vart%" goto erreurc
echo.
echo La connexion de test a pu etre effectuee.
echo.
pause
tskill clientbat > NUL
goto table
:erreurc
color 3E
echo.
echo La connexion de test n'a pas pu etre effecutee sur %ip%:%port%
echo Veuillez verifier l'IP et le port, le firewall ou le routeur.
echo.
pause
tskill clientbat > NUL
color 79
goto ip
goto table
:cmdip
set ipa=%1
set ipb=%2
set ipc=%3
set ipd=%4
if not defined ipd goto ip
if %ipa% GTR 254 goto ip
if %ipb% GTR 254 goto ip
if %ipc% GTR 254 goto ip
if %ipd% GTR 254 goto ip
goto :eof
:table
if %start% EQU 5 if %boat%==bateau1 set boat=bateau2& set start=0
if %start% EQU 4 if %boat%==bateau2 set boat=bateau3& set start=0
if %start% EQU 3 if %boat%==bateau3 set boat=bateau4& set start=0
if %start% EQU 3 if %boat%==bateau4 set boat=bateau5& set start=0
if %start% EQU 2 if %boat%==bateau5 set fini=1
set /A start+=1
:table1
if %where1%==jeu if !%y%%x%!==X goto cmd
goto table2
:cmd
echo %bateau1c% | findstr "%y%%x%"
if %errorlevel% EQU 0 set /a bateau1-=1
echo %bateau2c% | findstr "%y%%x%"
if %errorlevel% EQU 0 set /a bateau2-=1
echo %bateau3c% | findstr "%y%%x%"
if %errorlevel% EQU 0 set /a bateau3-=1
echo %bateau4c% | findstr "%y%%x%"
if %errorlevel% EQU 0 set /a bateau4-=1
echo %bateau5c% | findstr "%y%%x%"
if %errorlevel% EQU 0 set /a bateau5-=1
:table2
cls
echo.
echo.
echo ³1³2³3³4³5³6³7³8³9³10 ³1³2³3³4³5³6³7³8³9³10 Legende :
echo ---------------------- ---------------------- ° Eau
echo A³%a1%³%a2%³%a3%³%a4%³%a5%³%a6%³%a7%³%a8%³%a9%³%a10% A³%a1k%³%a2k%³%a3k%³%a4k%³%a5k%³%a6k%³%a7k%³%a8k%³%a9k%³%a10k% * Bateau
echo ---------------------- ---------------------- X Touche
echo B³%b1%³%b2%³%b3%³%b4%³%b5%³%b6%³%b7%³%b8%³%b9%³%b10% B³%b1k%³%b2k%³%b3k%³%b4k%³%b5k%³%b6k%³%b7k%³%b8k%³%b9k%³%b10k% O Dans l'eau
echo ---------------------- ----------------------
echo C³%c1%³%c2%³%c3%³%c4%³%c5%³%c6%³%c7%³%c8%³%c9%³%c10% C³%c1k%³%c2k%³%c3k%³%c4k%³%c5k%³%c6k%³%c7k%³%c8k%³%c9k%³%c10k% Bateau allie restant :
echo ---------------------- ---------------------- Porte avion : %bateau1%
echo D³%d1%³%d2%³%d3%³%d4%³%d5%³%d6%³%d7%³%d8%³%d9%³%d10% D³%d1k%³%d2k%³%d3k%³%d4k%³%d5k%³%d6k%³%d7k%³%d8k%³%d9k%³%d10k% Cuirasse : %bateau2%
echo ---------------------- ---------------------- Contre torpilleur : %bateau3%
echo E³%e1%³%e2%³%e3%³%e4%³%e5%³%e6%³%e7%³%e8%³%e9%³%e10% E³%e1k%³%e2k%³%e3k%³%e4k%³%e5k%³%e6k%³%e7k%³%e8k%³%e9k%³%e10k% Sous marin : %bateau4%
echo ---------------------- ---------------------- Lance torpilles : %bateau5%
echo F³%f1%³%f2%³%f3%³%f4%³%f5%³%f6%³%f7%³%f8%³%f9%³%f10% F³%f1k%³%f2k%³%f3k%³%f4k%³%f5k%³%f6k%³%f7k%³%f8k%³%f9k%³%f10k%
echo ---------------------- ---------------------- Bateau ennemi restant
echo G³%g1%³%g2%³%g3%³%g4%³%g5%³%g6%³%g7%³%g8%³%g9%³%g10% G³%g1k%³%g2k%³%g3k%³%g4k%³%g5k%³%g6k%³%g7k%³%g8k%³%g9k%³%g10k% Porte avion : %bateau1e%
echo ---------------------- ---------------------- Cuirasse : %bateau2e%
echo H³%h1%³%h2%³%h3%³%h4%³%h5%³%h6%³%h7%³%h8%³%h9%³%h10% H³%h1k%³%h2k%³%h3k%³%h4k%³%h5k%³%h6k%³%h7k%³%h8k%³%h9k%³%h10k% Contre torpilleur : %bateau3e%
echo ---------------------- ---------------------- Sous marin : %bateau4e%
echo I³%i1%³%i2%³%i3%³%i4%³%i5%³%i6%³%i7%³%i8%³%i9%³%i10% I³%i1k%³%i2k%³%i3k%³%i4k%³%i5k%³%i6k%³%i7k%³%i8k%³%i9k%³%i10k% Lance torpilles : %bateau5e%
echo ---------------------- ----------------------
echo J³%j1%³%j2%³%j3%³%j4%³%j5%³%j6%³%j7%³%j8%³%j9%³%j10% J³%j1k%³%j2k%³%j3k%³%j4k%³%j5k%³%j6k%³%j7k%³%j8k%³%j9k%³%j10k%
echo.
echo.
if %fini% EQU 1 goto %where1%
:placing
if %boat%==bateau1 set /P yx= Entrer les coordonnees du porte avion (5 cases). [ex: A 1] ?
if %boat%==bateau2 set /P yx= Entrer les coordonnees du cuirasse (4 cases). [ex: A 1] ?
if %boat%==bateau3 set /P yx= Entrer les coordonnees du contre torpilleur (3 cases). [ex: A 1] ?
if %boat%==bateau4 set /P yx= Entrer les coordonnees du sous marin (3 cases). [ex: A 1] ?
if %boat%==bateau5 set /P yx= Entrer les coordonnees du lance torpilles (2 cases). [ex: A 1] ?
call :commande %yx%
::verif start
if %start%==1 if not %boat%==bateau5 set ybck1=%y%
if %start%==1 if not %boat%==bateau5 set xbck1=%x%
if %start%==1 goto placingok
::verif placing
if "%yx%"=="%yxbck%" goto erreurpla
::verif x
set /A varx=%xbck%-%x%
if %varx% GTR 1 goto erreurpla
if %varx% LSS -1 goto erreurpla
::verif y
if %y%==A set yn=1
if %y%==B set yn=2
if %y%==C set yn=3
if %y%==D set yn=4
if %y%==E set yn=5
if %y%==F set yn=6
if %y%==G set yn=7
if %y%==H set yn=8
if %y%==I set yn=9
if %y%==J set yn=10
if %ybck%==A set ybckn=1
if %ybck%==B set ybckn=2
if %ybck%==C set ybckn=3
if %ybck%==D set ybckn=4
if %ybck%==E set ybckn=5
if %ybck%==F set ybckn=6
if %ybck%==G set ybckn=7
if %ybck%==H set ybckn=8
if %ybck%==I set ybckn=9
if %ybck%==J set ybckn=10
set /A vary=%ybckn%-%yn%
if %vary% GTR 1 goto erreurpla
if %vary% LSS -1 goto erreurpla
::verif diagonal
set dgnl=0
if %varx% EQU 1 set /a dgnl+=1
if %varx% EQU -1 set /a dgnl+=1
if %vary% EQU 1 set /a dgnl+=1
if %vary% EQU -1 set /a dgnl+=1
if %dgnl% GTR 1 goto erreurpla
::verifalign
if not %boat%==bateau5 if %start%==3 goto verifa
if %boat%==bateau1 if %start%==4 goto verifa
if %boat%==bateau1 if %start%==5 goto verifa
if %boat%==bateau2 if %start%==4 goto verifa
goto placingok
:verifa
set /a varx1=%xbck1%-%xbck%
if %varx1% EQU 0 goto colonne
if %ybck1%==A set ybckn1=1
if %ybck1%==B set ybckn1=2
if %ybck1%==C set ybckn1=3
if %ybck1%==D set ybckn1=4
if %ybck1%==E set ybckn1=5
if %ybck1%==F set ybckn1=6
if %ybck1%==G set ybckn1=7
if %ybck1%==H set ybckn1=8
if %ybck1%==I set ybckn1=9
if %ybck1%==J set ybckn1=10
set /a vary1=%ybckn1%-%ybckn%
if %vary1% EQU 0 goto ligne
goto erreurpla
:ligne
set /a xbcka=%xbck%+1
set /a xbckb=%xbck%-1
if %x% EQU %xbcka% goto placingok
if %x% EQU %xbckb% goto placingok
goto erreurpla
:colonne
set /a ybcka=%ybckn%+1
set /a ybckb=%ybckn%-1
if %yn% EQU %ybcka% goto placingok
if %yn% EQU %ybckb% goto placingok
goto erreurpla
:placingok
set yxbck=%yx%
set ybck=%y%
set xbck=%x%
set %y%%x%=*
set %boat%c=!%boat%c!%y%%x%
goto table
:erreurpla
color 3E
echo.
echo Vous voulez placer votre bateau sur une case incorrecte
echo.
pause
color 79
goto table1
:fini
color 80
echo fini> input.txt
cmdow.exe /run /hid client.bat
ping -n 2 127.0.0.1 > NUL
tskill clientbat > NUL
:bouclef
ping -n 2 127.0.0.1 > NUL
dir /-c | findstr /i "output.txt"> taille.txt
for /f "delims=" %%a in (taille.txt) do set taille="%%a"
set taille=%taille:~18,18%
set taille=%taille: =%
if %taille%==%taillebck% goto bouclef
set taillebck=%taille%
set where1=jeu
:jeu
if %enemy% EQU 0 set win=1
if %enemy% EQU 0 goto fin
if %ally% EQU 0 set win=0
if %ally% EQU 0 goto fin
set /a nbrt+=1
set /a var=%nbrt%/2
set /a var1=%var%*2
if %var1% EQU %nbrt% goto target
goto boucle
:target
set /p target= Entrer les coordonnees du tir [y x] ?
call :commande %target%
echo "%target%"> input.txt
cmdow.exe /run /hid client.bat
ping -n 2 127.0.0.1 > NUL
tskill clientbat > NUL
:boucle
ping -n 2 127.0.0.1 > NUL
dir /-c | findstr /i "output.txt"> taille.txt
for /f "delims=" %%a in (taille.txt) do set taille="%%a"
set taille=%taille:~18,18%
set taille=%taille: =%
if %taille%==%taillebck% goto boucle
if not %var1% EQU %nbrt% goto suite1
:suite
set taillebck=%taille%
for /f "delims=" %%a in ('type output.txt') do set rep=%%a
if %rep%==o set %y%%x%k=X
if %rep%==o set /a enemy-=1
if %rep%==n set %y%%x%k=O
goto table1
:suite1
set taillebck=%taille%
for /f "delims=" %%a in ('type output.txt') do set tir=%%a
set tir=%tir:"=%
call :commande %tir%
if !%y%%x%!==° set %y%%x%=O& set rep1=n
if !%y%%x%!==* set %y%%x%=X& set /a ally-=1& set rep1=o
:tir
echo %rep1%> input.txt
cmdow.exe /run /hid client.bat
ping -n 2 127.0.0.1 > NUL
tskill clientbat > NUL
del /F /Q taille.txt
goto table1
:erreurjeu
color 3E
echo.
echo Ha DTC y'a une erreur (de noob j'en suis sur)
echo.
pause
color 79
goto end
:fin
echo.
if %win%==1 echo Vous etes le vainqueur ! Bien joue
if %win%==0 echo Dommage, vous avez perdu ce combat. Mais la guerre n'est pas fini !
echo.
echo.
pause
:end
tskill listenbat > NUL
del /F /Q client.bat
del /F /Q listen.bat
del /F /Q input.txt
del /F /Q output.txt
del /F /Q taille.txt
endlocal
exit
:commande
if %bateau5% EQU 0 set where=erreurjeu
set y=%1
set x=%2
if not defined y goto %where%
if not defined x goto %where%
if %x% GTR 10 goto %where%
if %x% LSS 1 goto %where%
set testy=0
if %y%==A set /a testy+=1
if %y%==B set /a testy+=1
if %y%==C set /a testy+=1
if %y%==D set /a testy+=1
if %y%==E set /a testy+=1
if %y%==F set /a testy+=1
if %y%==G set /a testy+=1
if %y%==H set /a testy+=1
if %y%==I set /a testy+=1
if %y%==J set /a testy+=1
if not %testy% EQU 1 goto %where%
Marsh Posté le 08-03-2007 à 17:10:34
Que dois-je répondre a cette question ?
Sur quel port voullez vous vous mettre en ecoute ?
Marsh Posté le 08-03-2007 à 17:17:08
lol, wi j'me suis pas trop attardé sur l'explication de tout ça.
C'est pour la connexion multijoueur !
Je sais pas si tu connais bien les connexions donc j'explique vite fait quand meme.
Une connexion schématiquement c'est :
IP:PORT > IP:PORT
par exemple, si on joue ensemble sur internet, on va dire que mon IP c'est 82.238.100.2 et la tienne 82.238.100.3
Là ce sont des IP Free avec freebox donc il faut ouvrir un port sur le routeur, par exemple moi j'ai deja le port 21 d'ouvert on va dire, et toi t'en a aucun, tu ouvres le port 22 et dans le programme moi je met :
port en écoute : 21
IP : 82.238.100.3
port : 21
et toi :
port en écoute : 22
IP : 82.238.100.2
port : 21
Voila !
Marsh Posté le 09-03-2007 à 08:47:02
ça faite deux forum:
http://www.astase.com/forums/viewforum.php?id=2
http://forums.allproginfo.com/f16-Ms-Dos.htm
Si tu en trouve d'autres poste les liens ici
Marsh Posté le 10-03-2007 à 13:54:51
Encore un forum dos:
http://www.win-web.be/forum/index.php?showforum=39
Puis encore un autre:
http://armalithsoftware.forumactif [...] -VBS-C.htm
Marsh Posté le 12-10-2007 à 15:18:36
Y-a-t il des gens qui connaissent d'autre forum ?
Marsh Posté le 07-03-2007 à 19:01:31
J'avais cherché sur internet des forums sur le batch et je n'ai trouvé que celui là !
Et donc j'aimerais bien savoir s'il en existait d'autre ?
Sinon j'ai pas mal codé en batch, et est ce une bonne idée de mettre les sources de mes programmes ici ?
Ce sont surtout des utilitaires (afficher nos IP, optimiser configurer et nettoyer windows, afficher les connexions et les ports ouvert); un outil d'administration a distance et là je viens de finir un jeu de bataille navale avec multijoueur !
Peut etre sa interesserait des gens ?
Message édité par blastkiller le 07-03-2007 à 19:01:58