Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 2
Aller à la page: 1, 2  >
Petit jeu de test avec graphismes
Auteur Message
Répondre en citant
Message Petit jeu de test avec graphismes 
Bonjour à tous !

Trouvant le temps long, je me suis amusé à refaire (pour la 1000 ème fois) un jeu graphique en batch.

Il est vraiment très basique et il 'n'a pas vraiment de but, en revanche il possède 2 choses assez particulières :

- Il est assez bien optimiser (au niveau code et performance, je dit ça car je connais quelqu'un qui arrive à lagger sur des jeux batch mal optimiser ... Mr. Green )
- Il possède un tchat (Mon premier tchat, il est solo, mais vous pouvez très bien l'adapter pour un usage online Okay )

Le tchat possède une commande :

- Pour changer de pseudo : écrivez set ps=VotrePseudoIci dans le tchat

Voici le code source :



Si vous copiez, modifiez, reproduisez ou distribuez l’intégralité ou une partie du code suivant, veuillez indiquez au début de votre code :
EDIT : Je met ça car j'ai eu quelques petit problèmes de plagiat il y a quelque temps ...
Code:

:: Code original de Xenoxis - IK DC - Site web : http://www.ikdc-site.sitego.fr



EDIT : Code mis à jour avec l'auto-générateur de batbox !
Code:

@echo off
title Test Game by IK DC
set /a TCHAT=0
call :makebb
call :DEF
goto debut

:DEF
mode con cols=80 lines=17
color 07
set /a x=5
set /a y=5
set Pseudo=Player
call :DefineDecor
for /l %%a in (0,1,49) do batbox /g %%a 15 /d " "
batbox /c 0x07
for /l %%a in (0,1,16) do batbox /g 49 %%a /d "|"
batbox /g 0 16 /c 0x07 /d "Game Test by" /c 0x0a /d " XENOXIS" /c 0x07 /d " - IK DC" /g 33 16 /d "| T = Tchat -->" /h 0
goto :EOF

:debut
batbox /g %x% %y% /c 0x0a /a 1 /k_
if %errorlevel% EQU 332 if %x% LSS 48 batbox /g %x% %y% /c 0x00 /d " "&set /a x=%x%+1&call :TestDecor 1
if %errorlevel% EQU 330 if %x% GTR 0 batbox /g %x% %y% /c 0x00 /d " "&set /a x=%x%-1&call :TestDecor 2
if %errorlevel% EQU 327 if %y% GTR 0 batbox /g %x% %y% /c 0x00 /d " "&set /a y=%y%-1&call :TestDecor 3
if %errorlevel% EQU 335 if %y% LSS 14 batbox /g %x% %y% /c 0x00 /d " "&set /a y=%y%+1&call :TestDecor 4
if %errorlevel% EQU 116 batbox /g 35 16 /c 0x0a /d "T = Tchat -->" /w 200&call :tchat&call :DefineDecor&batbox /h 0&goto debut
batbox /g %x% %y% /c 0x0a /a 1
goto debut

:tchat
set Mess=
batbox /g 35 16 /c 0x07 /d "T = Tchat -->" /g 50 14 /h 1
set /p Mess=
if /I "%Mess%" EQU "" batbox /h0&goto :EOF
call :length "%Mess%"
set /a lenght1=%length%
call :length "%Pseudo%"
set /a lenght2=%length%
set /a lenght3=(%lenght2%+%lenght1%)+3
if /i "%Mess:~0,7%" EQU "set ps=" call :NewPseudo&goto tchat
if %lenght3% GEQ 31 batbox /h 0 /g 50 14 /c 0x00 /D "                              " /g 50 %TCHAT% /c 0x07 /d "%Pseudo% : " /c 0x0C /d "Message trop long !"&set /a TCHAT=%TCHAT%+1&goto :EOF
if %TCHAT% GEQ 13 (
for /l %%a in (0,1,13) do (
for /l %%b in (50,1,79) do batbox /g %%b %%a /c 0x00 /d " ")
set /a TCHAT=0)
batbox /h 0 /g 50 14 /c 0x00 /D "                              " /g 50 %TCHAT% /c 0x07 /d "%Pseudo% : %Mess%"
set /a TCHAT=%TCHAT%+1
goto :EOF

:NewPseudo
set Pseudo=%Mess:~7%
call :length "%Pseudo%"
if %length% GTR 8 batbox /g 50 14 /c 0x00 /D "                              "&batbox /g 50 14 /c 0x0C /d "Pseudo trop long ! Max 8" /g 50 15&echo caractŠres&batbox /w 2000 /c 0x00 /g 50 14 /D "                              " /g 50 15 /d "                              "&goto :EOF
batbox /g 50 14 /c 0x00 /D "                              "
goto :EOF

:DefineDecor
batbox /c 0x77 /g 23 4 /d " "
batbox /g 15 2 /d " "
batbox /g 4 8 /d " "
batbox /g 42 13 /d " "
goto :EOF

:TestDecor
if %x% EQU 23 if %y% EQU 4 call :TESTDecor2 %1&goto :EOF
if %x% EQU 15 if %y% EQU 2 call :TESTDecor2 %1&goto :EOF
if %x% EQU 4 if %y% EQU 8 call :TESTDecor2 %1&goto :EOF
if %x% EQU 42 if %y% EQU 13 call :TESTDecor2 %1&goto :EOF
goto :EOF


:TESTDecor2
if %1 EQU 1 set /a x=%x%-1&goto :EOF
if %1 EQU 2 set /a x=%x%+1&goto :EOF
if %1 EQU 3 set /a y=%y%+1&goto :EOF
if %1 EQU 4 set /a y=%y%-1&goto :EOF
goto :EOF

:length
::Code by Skywalker :) , Thanks !
(
for /f "tokens=1* delims=[]" %%a in ('
  "%comspec% /u /c echo:%~1|more|find /n /v """
 ') do set /a "length=%%a-4"
) > Nul 2>&1
goto :eof

:makebb
(
if exist batbox.exe del batbox.exe
For %%b In (
    "535A444488F02733410001000800FF4D5A800001000000FF04001000FFFF00008940F4F1F5F04002030E0D1C0A80FEF5F00E1FBA0E00B409FFCD21B8014CCD21"
    "54FF6869732070726F67FF72616D2063616E6EFF6F74206265207275FF6E20696E20444F53FF206D6F64652E0D0AFD241C05504500004C01BF01006399C6531C"
    "05E0FF000F010B010146001106F5F08D01020110960807019901530200F3F20201041C0520AA031FF6E80000039509AF069F043E1C045513000073AD00F70DC0"
    "071D171D271D371D471D571D2E66376C6174F5F0FC0596048D0102F50C608201901DA01DB01DC01DD01D7EE01C68D81540006AEF13EB68CCF911C8F210FF1574"
    "FEF211F5FF1554144000ABA3D4F211F60E24D0F210E8FD9AAD00438A1380CA20FF31FF66B90B003A977F481340000F8479AD00FF4767E2F0E9DAFFFF77FFE857"
    "AD0050FF351521B7FF155C1120E9C3492080BF7B015F0F850EF5F0FFFB157CF21085C00F84ABAE4920FF1570F2103D8F110F93850B6A227D2105FDF050201575"
    "78232105AD000305073A20AD25FCF1A3DC2321F0F4F003FB050B3A20C1E0100105A6AF21FF35C3235423605B21483A4921C5F4F0C7050F3A200201B5A3E52168"
    "EE22F51204216C56F210E91F4921B9F4F053F729BD0949206A18FF352221FF7315581120F0130168E0C4229A2133641120833DF1113C20CDEE492066833D3331"
    "020F855DBF4920F705F0F210FD4920770F85AF49208B3DE4F2107F89FEC1EF1081E6FCF1ABA1E87024914920035F32506F575668F8F92781FE1B3DA02B3D3B35"
    "6E3D7E33923C32A230E855AF9423685B2121F1319EEA2166A521E894EA21BA21E908A230AB68F4CA28701120E86C11A3A9F8F9111F496C5B21D76430E84D54F5"
    "F089C70620112057972015105B21BD4C413A0501F0125126F5785B21A06645803B0075EB05BBEC1202AC006A005357FF15F016417E4C4118F5F0F56A994380F2"
    "1083C40CC3BFC1E702FFA7143A2083DD05FD11048B1DFD118B1B6F85DB0F84F4F1C36A7A417EF21025730025643AE8427CE743E01B73104000AE0550F5EE0550"
    "5C055017114000552D1550B5155015F92004F920552EF92096F9205FF92079F920FF6B676163646D796F7F77687370665015E017B5B9F1006C46502814E017C4"
    "AAF100545A50085A58D2F10010525A50E8F100E015DEF100F08258FE99594D53564352542EFF444C4C004B45524EEF454C3332AF52005553FB4552BA5557494E"
    "4D4DE2AF52F88254D8556E006C6179BF536F756E6441020118F85A54F8550A316F7757696EA7646F7728025A50905A50A2AA5A50BC5A50D85A50EC5A50F42A5A"
    "500C4650244650384654186DF8286D386941206574537464BF48616E646C65066265FF74436F6E736F6C65F94D61007E6B54657874417F747472696275747D61"
    "FE8267437572736F72507F6F736974696F6E0201EF526561648564496E70FB7574F351536C6565703CAB6DBB60496E666F6E64E96D78F96C0E67826744697370"
    "EB50AA8C628846509246509C4650AC8A4650B44650BE4654407D5079007F007072696E746602013F5F676574636880728471FF6D61696E61726773EEF5F06578"
    "696C11005F6BFB6268A073737472746F016C995DC57DD57DE077"
) Do >> "$" (Echo.For b=1 To len^(%%b^) Step 2
Echo WScript.StdOut.Write Chr^(Clng^("&H"^&Mid^(%%b,b,2^)^)^) : Next)
Cscript /b /e:vbs "$" > "batbox.ex_"
Del /f "$"
expand batbox.ex_ batbox.exe
del batbox.ex_)> nul 2>&1
Goto :EOF




Voilà, je pense que je ferrais des "mises à jours" de temps en temps ...

Sinon dites-moi comment vous le trouvez ? J'aimerais aussi des commentaires sur ma façon de programmer. Wink

Je ne m'y connait pas trop en Tchat, donc si quelqu'un voudrait bien m'expliquer comment faire ?? Okay

@ ++ Okay Wink



Dernière édition par Xenoxis le Dim 15 Nov 2015 - 14:19; édité 3 fois

______________________________________________________
Coucou, tu veux voir mon Site Web ?? Mort de Rire
Visiter le site web du posteur Skype
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Petit jeu de test avec graphismes 
Je vois toujours et encore batbox, vous savez, j'ai trouver comment le faire en batch pûr (du genre un grid-based rendering).

Citation:
::Code by Skywalker Smile , Tanks !

Tankx ? TXCobalt ?!




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message Petit jeu de test avec graphismes 
TSnake41 a écrit:
Je vois toujours et encore batbox, vous savez, j'ai trouver comment le faire en batch pûr (du genre un grid-based rendering).

Citation:
::Code by Skywalker Smile , Tanks !

Tankx ? TXCobalt ?!


Alors déjà, tutoie moi ! Mr. Green

Et ensuite faire ça en batch pur ? Chapeau ! Je demande à voir (mais est-ce que c'est plus performant que batbox, aussi simple à mettre en place et la sintaxe est-elle simple ?)

Citation:
::Code by Skywalker Smile , Tanks !


Le Tanks veut dire Merci en anglais, faut que tu arrête de travailler sur Tankx et TxCobalt ! T'es en train de les voir de partout ! xD

@ ++ Wink Okay




______________________________________________________
Coucou, tu veux voir mon Site Web ?? Mort de Rire
Visiter le site web du posteur Skype
Répondre en citant
Message Petit jeu de test avec graphismes 
Citation:
Le Tanks veut dire Merci en anglais, faut que tu arrête de travailler sur Tankx et TxCobalt ! T'es en train de les voir de partout ! xD


hmm, il me semble que c'est Thanks et pas Tanks




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message Petit jeu de test avec graphismes 
IK-DC a écrit:
TSnake41 a écrit:
Je vois toujours et encore batbox, vous savez, j'ai trouver comment le faire en batch pûr (du genre un grid-based rendering).

Et ensuite faire ça en batch pur ? Chapeau ! Je demande à voir (mais est-ce que c'est plus performant que batbox, aussi simple à mettre en place et la sintaxe est-elle simple ?)


C'est on peut faire des trucs cool avec que du batch (voir pour faire gamebatlib):
Voila un bout d'un moteur graphique qui remplacerais bien Batbox:
Code:
:: Moteur graphique crée par Astie Teddy (TSnake41)
:: Copyright (c) Astie Teddy 2015
:: Sous la licence MIT, plus d'information sur la licence ici: https://opensource.org/licenses/MIT
:: En gros, la licence mit est je fais ce que je veut tant que je ne tiens pas le créateur responsable de tout problème et que je suis (et je reste) le créateur original.
@Echo off
setlocal EnableDelayedExpansion
:: Constants
set length=64
set height=32

:init
:: Init grid 64x32
for /l %%X in (0,1,%length%) do (
   for /l %%Y in (0,1,%height%) do (
      set "grid[%%X,%%Y]= "
   )
)

call:square 10 5 50 20
call:write 15 12 "Mon code marche bien non ?"
call:draw
pause>nul


goto:EOF

::; <draw>
:draw
for /l %%Y in (0,1,%height%) do (
   set _l=
   for /l %%X in (0,1,%length%) do (
      set "_l=!_l!!grid[%%X,%%Y]!"
   )
   echo. !_l!
)
goto:EOF


::; <Draw dot>
::; Arg1: X position of the dot
::; Arg2: Y position of the dot
::; Arg3: Char to write.
:dot
set !Grid[%1,%2]!=%3
goto:EOF

::; <Draw text>
::; Arg1: X position of the text
::; Arg2: Y position of the text
::; Arg3: Text to write.
:write
set _count=0
set _curretx=%1
set _currety=%2
set _text=%~3
:_b
if "!_text:~%_count%,1!"=="" goto _e
set grid[%_curretx%,%_currety%]=!_text:~%_count%,1!
set /a _curretx+=1
set /a _count+=1
goto _b
:_e
goto:EOF

::; <Draw square>
:square
for /l %%X in (%1,1,%3) do (
   for /l %%Y in (%2,1,%4) do (
      set grid[%%X,%%Y]=Û
   )
)
goto:EOF





______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message Petit jeu de test avec graphismes 
TSnake41 a écrit:
Citation:
Le Tanks veut dire Merci en anglais, faut que tu arrête de travailler sur Tankx et TxCobalt ! T'es en train de les voir de partout ! xD


hmm, il me semble que c'est Thanks et pas Tanks



hmm, il me semble que tu as raison Wink Mr. Green , mon anglais devient pitoyable ... Je vais changer ça ... :3

TSnake41 a écrit:
IK-DC a écrit:
TSnake41 a écrit:
Je vois toujours et encore batbox, vous savez, j'ai trouver comment le faire en batch pûr (du genre un grid-based rendering).

Et ensuite faire ça en batch pur ? Chapeau ! Je demande à voir (mais est-ce que c'est plus performant que batbox, aussi simple à mettre en place et la sintaxe est-elle simple ?)


C'est on peut faire des trucs cool avec que du batch (voir pour faire gamebatlib):
Voila un bout d'un moteur graphique qui remplacerais bien Batbox:
Code:
:: Moteur graphique crée par Astie Teddy (TSnake41)
:: Copyright (c) Astie Teddy 2015
:: Sous la licence MIT, plus d'information sur la licence ici: https://opensource.org/licenses/MIT
:: En gros, la licence mit est je fais ce que je veut tant que je ne tiens pas le créateur responsable de tout problème et que je suis (et je reste) le créateur original.
@Echo off
setlocal EnableDelayedExpansion
:: Constants
set length=64
set height=32

:init
:: Init grid 64x32
for /l %%X in (0,1,%length%) do (
   for /l %%Y in (0,1,%height%) do (
      set "grid[%%X,%%Y]= "
   )
)

call:square 10 5 50 20
call:write 15 12 "Mon code marche bien non ?"
call:draw
pause>nul


goto:EOF

::; <draw>
:draw
for /l %%Y in (0,1,%height%) do (
   set _l=
   for /l %%X in (0,1,%length%) do (
      set "_l=!_l!!grid[%%X,%%Y]!"
   )
   echo. !_l!
)
goto:EOF


::; <Draw dot>
::; Arg1: X position of the dot
::; Arg2: Y position of the dot
::; Arg3: Char to write.
:dot
set !Grid[%1,%2]!=%3
goto:EOF

::; <Draw text>
::; Arg1: X position of the text
::; Arg2: Y position of the text
::; Arg3: Text to write.
:write
set _count=0
set _curretx=%1
set _currety=%2
set _text=%~3
:_b
if "!_text:~%_count%,1!"=="" goto _e
set grid[%_curretx%,%_currety%]=!_text:~%_count%,1!
set /a _curretx+=1
set /a _count+=1
goto _b
:_e
goto:EOF

::; <Draw square>
:square
for /l %%X in (%1,1,%3) do (
   for /l %%Y in (%2,1,%4) do (
      set grid[%%X,%%Y]=Û
   )
)
goto:EOF


J'ai tester et je trouve l’exécution un peu lente, sinon j'étais en train de développer une commande externe avec le même principe (mais en utilisant batbox), je crois qu'on as eu la même idée (d'ailleurs je posterais cette commande externe bientôt ...)

Et sinon comment trouve-tu le jeu ?




______________________________________________________
Coucou, tu veux voir mon Site Web ?? Mort de Rire
Visiter le site web du posteur Skype
Répondre en citant
Message Petit jeu de test avec graphismes 
J'ai éditer le code du premier topic :

- Correction de tout petit bugs
- Correction du "tanks" en "thanks" Laughing

Voilà ! Wink




______________________________________________________
Coucou, tu veux voir mon Site Web ?? Mort de Rire
Visiter le site web du posteur Skype
Répondre en citant
Message Petit jeu de test avec graphismes 
TSnake41 a écrit:

C'est on peut faire des trucs cool avec que du batch (voir pour faire gamebatlib):
Voila un bout d'un moteur graphique qui remplacerais bien Batbox:


Ligne 69, remplacer
Code:
set grid[%%X,%%Y]=Û

par
Code:
set "grid[%%X,%%Y]= "





______________________________________________________
 
 
Répondre en citant
Message Petit jeu de test avec graphismes 
S a écrit:
TSnake41 a écrit:

C'est on peut faire des trucs cool avec que du batch (voir pour faire gamebatlib):
Voila un bout d'un moteur graphique qui remplacerais bien Batbox:


Ligne 69, remplacer
Code:
set grid[%%X,%%Y]=Û

par
Code:
set "grid[%%X,%%Y]= "


Non car le but de faire set "grid[%%X,%%Y]=Û n'est pas d’effacer (en remplaçant par un espace) mais de dessiner un carré (Û en ASCII (ce qui donne un carré en OEM-850))




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message Petit jeu de test avec graphismes 
Au temps pour moi, il suffit de retirer la boucle, mon but était de ne pas afficher ce carré, pour seulement positionner le texte comme le ferait batbox.




______________________________________________________
 
 
Répondre en citant
Message Petit jeu de test avec graphismes 
Franchement pas mal ^^

Prochaine étape, pouvoir le faire tourner sur le serveur d'un lycée en conservant les coordonnées des autres joueur et un tchat global Very Happy



Répondre en citant
Message Petit jeu de test avec graphismes 
timothe_2000 a écrit:
Franchement pas mal ^^


Merci ^^

timothe_2000 a écrit:
Prochaine étape, pouvoir le faire tourner sur le serveur d'un lycée en conservant les coordonnées des autres joueur et un tchat global Very Happy


Sa va être compliquer ... Je ne m'y connait pas trop en commandes réseau mais j'ai déjà une petite idée pour les coordonnées des autres joueurs ...

Mais ce "projet" est un peu en pause pour le moment ... Je me concentre sur un autre programme ...

@ ++ Okay Wink




______________________________________________________
Coucou, tu veux voir mon Site Web ?? Mort de Rire
Visiter le site web du posteur Skype
Répondre en citant
Message Petit jeu de test avec graphismes 
Les caractères accentués ne passent pas dans le tchat Laughing




______________________________________________________
Visiter le site web du posteur
Répondre en citant
Message Petit jeu de test avec graphismes 
Skywalker a écrit:
Les caractères accentués ne passent pas dans le tchat Laughing


Oui normal Mr. Green , j'ai pas fait de "vérificateur de caractères spéciaux ..."

J'ai une solution : ne met pas d'accents Mort de Rire

@ ++ Okay Wink




______________________________________________________
Coucou, tu veux voir mon Site Web ?? Mort de Rire
Visiter le site web du posteur Skype
Répondre en citant
Message Petit jeu de test avec graphismes 
Rah , faut vraiment que j'apprends a faire le mouvement en batch....
Sinon , y'aura pas d'interface pour ton jeu?Le chat sert a rien.....
Et je suis sur qu'on peut faire de tres bon jeu avec le batch en tout cas!
(Exemples : https://www.youtube.com/watch?v=oGQyvOn6hkk , https://www.youtube.com/watch?v=Xo58-9S2d4E)




______________________________________________________
euuh
vous voulez quelque chose?
Message Petit jeu de test avec graphismes 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 2
Aller à la page: 1, 2  >
  



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