Mostrando resultados del 1 al 9 de 9

Tema: [Tutorial] Batch Game Programming - by SmartGenius

  1. #1
    Colaborador Avatar de SmartGenius
    Fecha de Ingreso
    mayo-2009
    Mensajes
    339
    Gracias obtenidos: 108

    Predeterminado [Tutorial] Batch Game Programming - by SmartGenius

    [TUTORIAL] Batch Game Programming by :: SmartGenius ::

    Bueno, pues como algunos usuarios hicieron la petición de que por favor explicase esos códigos tan intrincados a los cuales he llamados Batch Games, pues me de dado a la tarea de realizar un juego simple, paso a paso, mientras voy explicando algunos conceptos.

    Para este tema debemos tener buen conocimiento de Batch, o por lo menos entender su lógica y sintaxis, y aparte de eso manejar o entender el concepto de coordenadas, porque es la base de todo lo que he realizado.

    Link: [SOLO LOS USUARIOS REGISTRADOS PUEDEN VER LOS ENLACES. ]

    Luego de haber leído toda esta chachara pues tenemos que pensar que tipo de juego es el que vamos a realizar, saber los requerimientos del mismo y hacer un bosquejo de lo que necesitamos realizar.

    En la parte de Batch habría tres tipos de juegos, según la interacción que tienen con el usuario, basándose en que tanto dependen de la entrada que el mismo haga por teclado.

    • Aquellos juegos que necesitan de que el usuario introduzca un dato, de acuerdo a una opción y que luego presione Enter (o cualquier otra tecla) para que el programa siga su curso normal, de este tipo tenemos el Tres en Raya, el Piedra Papel y Tijera, el Ahorcado y Similares.


    • Juegos que interactúan directamente con el usuario, dependiendo de que tecla presione, realizando automáticamente una opción, tiene una gran flexibilidad en cuanto a las posibilidades de teclas presionables, aunque esta limitada a una por vez, de este tipo tenemos el PushBox, el BattleShip, el Laber.


    • Son juegos que interactúan en base a lo introducido por el usuario, de acuerdo a unas opciones, definidas también por el resultado de unas teclas presionadas, es como una combinación de la 1 y la 2, pero la ventaja de este es que permite que el juego siga su curso aun cuando el usuario no ha introducido nada después de un tiempo determinado. de este tipo tenemos al Pacman y al PinPon.



    Dependiendo de lo que hayamos escogido pues haremos uso de diferentes formas de preguntar al usuario, bien sea usando SET /P, mediante KEYBOARD o mediante CHOICE.

    Teniendo esto claro debemos revisar que tipo de juego es el que vamos a crear, y que tipo de interacción tendrá con el usuario.

    Después de esto debemos definir que "objetos" llámese en Batch variables, serán las que usemos para representar cada uno de los aspectos de los mismo, sea la representación del jugador en pantalla, objetivos o demás cosas...variando de cuerdo al tipo de juego.

    Empecemos por algo básico, un simple juego de laberinto, en el cual es objetivo es recoger unos objetos y llegar a la salida, luego el tipo de juego será el 2.

    Definimos que "objetos" utilizaremos, los cuales servirán de control para la dinámica del Juego.

    1. Jugador: carácter que representara en pantalla la posición actual del jugador.
    2. Bordes: Los limites dentro de los cuales puede moverse el jugador
    3. Tablero: Es el área de juego en la cual el jugador tiene libertad de moverse.
    4. Puntos: Los objetivos que se deben alcanzar o que suman puntos.
    5. Salida: El punto de salida, el objetivo final, que hace que el juego termine.


    Código:
     @echo off
    echo. variables
    echo.
    echo. Borde:  Û
    echo. Tablero: " " (espacio vacio " ")
    echo. Jugador: 
    echo. Punto:  
    echo. Salida: °
    echo.
    pause
    exit

    Ahora que ya tenemos definidos los objetos que usaremos, es hora de que se haga un mapa o bosquejo del tablero principal de juego, para poder definir de que dimensiones sera...y que ubicacion tendran cada uno de los objetos en el mismo.

    Código:
     @echo off
    echo.
    echo. 01234567
    echo.0 ÛÛÛÛÛÛÛÛ
    echo.1 ÛÛ  Û
    echo.2 Û  ÛÛ Û
    echo.3 Û ÛÛÛ °
    echo.4 Û ÛÛÛ Û
    echo.5 Û  ÛÛ
    echo.6 ÛÛÛÛÛÛÛÛ
    echo.
    echo. Tablero de X=7 Y=6
    echo.
    pause
    exit

    Esta parte puede ser algo complicada, porque hay que generar las coordenadas (X1Y1,X3Y0,etc..) para cada uno de los objetos que seran mostrados en pantalla, luego he diseñado una herramienta que les facilita el trabajo, el Batch Designer.

    Link: [SOLO LOS USUARIOS REGISTRADOS PUEDEN VER LOS ENLACES. ]

    Con esta herramienta podremos “diseñar” de forma rapida y facil, lo que seria el aspecto grafico del tablero principal de juego, y exportar esos datos a coordenadas.

    Una vez que ya tenemos la ubicación de todos los posibles objetos en pantalla, es hora de pasar a la parte de logica del juego, según el tipo de hallamos escogido, pues tenemos que ver que tipo de acciones realiza el jugador, moverse en pantalla y agarrar objetos, para lo cual debemos hacer los calculos respectivos de los cuatro movimientos basicos (arriba, abajo, izquierda, derecha) y en casos especiales los movimientos diagonales.

    Para esto usaremos matematicas, y todo el trabajo se facilita gracias a lo mismo que es la base de todo, las coordenadas.

    Empezamos por definir un par de variables que nos seran muy utiles y que son los limites, que definen dentro de que rango de la pantalla o tablero podra moverse nuestro jugador.

    En base a esos limites es que se “dibuja” el tablero de juego, y en el cual se define la posicion inicial del jugador, nuestra primera funcion, que tambien contendra las variables globales que representan los demas objetos del juego.

    Código:
    :Vars
    ::Limite Lateral Derecho X=7
    Set LimX=7
    ::Limite Inferior Y=6
    Set LimY=6
    ::Limite Lateral Izquierdo X=0
    Set IniX=0
    ::Limite Superior Y=0
    Set IniY=0
    ::Inicializacion de Variables de Movimieto en los Ejes XY
    Set MovX=0
    Set MovY=0
    ::Variable que representa el Borde.
    Set "Bound=Û"
    ::Variable para el tablero de juego, por donde nos moveremos.
    Set "Space= "
    ::Variable para el Jugador.
    Set "Player=
    ::variable para los puntos
    Set "Point=*"
    Variable para la salida.
    Set "Exit=°"
    Ahora la funcion que nos inicializara las variables del tablero.

    Código:
    :Init
    For /l %%a in (%IniX%,1,%LimX%) do (
    For /l %%b in (%IniY%,1,%LimY%) do (
    Set X%%aY%%b=%Space%))
    :: X0Y0,X0Y1,X0Y2…..X1Y0,X1Y1……X7Y5,X7Y6
    Esto significa, que desde la variable X0Y0 hasta X7Y6, se definiran con un valor basico, en este caso un espacio vacio que sera la mayor parte del tablero, y por donde nos podremos mover.

    Despues de esto llamaremos a una funcion que sera la encargada de definir cada una de las coordenadas de los diferentes objetos que habran en pantalla (bordes, puntos, salida) y ubicarlos en el tablero, todo esto realizado con la ayuda del Batch Designer para obtener de manera rapida las coordenadas de todos ellos.

    Código:
    Call :Nivel_1
    ::: Resto del Codigo...
    ::
    ::
    
    :Nivel_1
    ::Coordenadas XY para el Primer Nivel
    For %%a in (X4Y4,X6Y5) do (Set %%a=%Point%)
    For %%a in (X7Y3) do (Set %%a=%Exit%) 
    For %%a in (X0Y0,X0Y1,X0Y2,X0Y3,X0Y4,X0Y5,X0Y6,X1Y0,X1Y6,X2Y0,X2Y1,X2Y4,X2Y6,X3Y0,X3Y3,X3Y4,X3Y6,X4Y0,X4Y2,X4Y3,X4Y6,X5Y0,X5Y2,X5Y3,X5Y4,X5Y5,X5Y6,X6Y0,X6Y6,X7Y0,X7Y1,X7Y2,X7Y4,X7Y5,X7Y6) do (Set %%a=%Bound%) 
    Goto :Eof
    Ahora definimos la posición inicial que tendra nuestro jugador, y basandonos en el bosquejo anteriormente hecho veremos que empezara en la posición X1Y1, por lo tanto le daremos valor a dicha variable con el “objeto” que representa al jugador en pantalla, y luego asignaremos una variable que sera llamada “posición actual” (CurPos) y que contendra el par de coordenadas en el cual esta ubicado el jugador.

    Código:
    Set "X1Y1=%Player%"
    Set Curpos=X1Y1
    Luego una vez que ya hemos definido la posición de cada uno de los diferentes objetos en el tablero, pasamos a mostrar en pantalla todo lo hecho hasta ahora, la primera vista del juego, para después pasar a pedir datos por teclado.

    Código:
    :Init
    For /l %%a in (%IniX%,1,%LimX%) do (
    For /l %%b in (%IniY%,1,%LimY%) do (
    Set X%%aY%%b=%Space%))
    Call :Nivel_1
    Set "X1Y1=%Player%"
    Set Curpos=X1Y1
    Goto :Graphic
    
    :Graphic
    Call :Clear
    For /l %%d in (%IniX%,1,%LimY%) do (
    For /l %%e in (%IniX%,1,%LimX%) do (
    Set Lin_%%d=!Lin_%%d!!X%%eY%%d!))
    Echo.
    For /l %%f in (0,1,%LimY%) do (echo. !Lin_%%f!)
    La funcion Graphic se encarga de crear unas lineas que son el conjunto de coordenadas para cada valor de Y (Linea 0 = X0Y0,X1Y0,etc), lineas que posteriormente son mostradas en pantalla, lo que conforma el tablero de juego, osea lo que se muestra al usuario.

    La entrada por teclado la pedimos en este caso mediante el comando KEYBOARD, el cual establece la variable del sistema ERRORLEVEL con el valor ASCII de la tecla presionada, para este caso necesitamos los valores de las teclas de direccion que corresponden a:

    Arriba: 72
    Abajo: 80
    Izquierda: 75
    Derecha: 77


    Para otras teclas se puede comprobar usando el mismo comando KEYBOARD y ver el retorno del valor en la variable %errorlevel%, o usando el siguiente codigo:

    Código:
     @echo off
     @title Errorlevels
    ::ErrorLevel Checker
    ::Coded by SmartGenius
    setlocal enabledelayedexpansion
    
    if not exist "keyboard.exe" (Call :NoKey)
    
    :Menu
    cls
    echo. ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
    echo. º ErrorLevel Check º
    echo. ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
    echo.
    echo. ÛßßÛßßßßßßßßßßßßßßßÛ
    echo. Û1.Û ErrorLevel  Û
    echo. ÛßßÛßßßßßßßßßßßßßßßÛ
    echo. Û2.Û Generar Lista Û
    echo. ÛßßÛßßßßßßßßßßßßßßßÛ
    echo. Û3.Û Salir     Û
    echo. ßßßßßßßßßßßßßßßßßßßß
    echo.
    keyboard
    if "%errorlevel%"=="49" (Goto :Custom)
    if "%errorlevel%"=="50" (Goto :Gen)
    if "%errorlevel%"=="51" (Goto :Exit)
    Goto :Menu
    
    :Custom
    cls
    echo.
    echo. Presione una tecla para conocer
    echo. su valor ASCII que sera establecido
    echo. en la variable %%errorlevel%%
    echo.
    keyboard
    echo. Valor: %errorlevel%
    echo.
    pause
    Goto :Menu
    
    :Gen
    cls
    echo.
    echo. Listado de ErrorLevels
    set Uppercase=A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
    set Lowercase=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
    set Numbers=0,1,2,3,4,5,6,7,8,9
    for %%a in (%Uppercase%,%Lowercase%,%Numbers%) do (
    (echo %%a)|keyboard
    echo. Tecla: %%a = Valor de Error: !errorlevel!
    )
    pause
    Goto :Eof
    
    :Exit
    msg * ErrorLevel by SmartGenius
    endlocal
    exit
    
    :NoKey
    cls
    echo. Cargando...
    call :keyboard
    ping -n 2 0.0.0.0 >nul
    Goto :Eof
    
    :keyboard
    (
    echo n keyboard.dat
    echo e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
    echo e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
    echo e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
    echo rcx
    echo 002E
    echo w0
    echo q
    echo.
    )>keyboard.dat
    type keyboard.dat|debug>NUL 2>&1
    del /f/q/a "keyboard.exe">NUL 2>&1
    ren keyboard.dat "keyboard.exe"
    Goto :Eof
    Para el uso del comando CHOICE.COM los valores de error son establecidos de acuerdo a la posicion de la tecla, dentro de las seleccionadas para poder usarse, si especificaramos las teclas WASD los valores serian 1,2 3 y 4 respectivamente.

    Ahora, de acuerdo a la tecla presionada debemos llamar a la funcion especifica, en este caso a las funciones de movimiento, que se basan en las coordenadas para saber cual sera la proxima casilla a la cual debe ir el jugador, y alli hacer las diferentes comprobaciones de acuerdo a los posibles tipos de datos en dicha casilla.

    Basandonos en que empezamos en la posicion (CurPos) X1Y1, para poder movernos hacia los lados debemos modificar el valor que acompaña a X, y para los movimientos hacia arriba y abajo debemos modificar el valor que acompaña a Y, luego un movimiento hacia abajo corresponderia a la siguiente casilla X1Y2, entonce veamos dicha funcion.

    La primera instruccion es la del FOR que se encarga de separar el valor de la variable CurPos, el cual es pasado como parametro a la funcion, en los diferentes valores para X y para Y.

    for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (

    Esto asigna a la variable %%p del FOR el valor que acompaña a X, y a %%q con el valor que acompaña a Y (declaracion implicita), entonces debemos realizar el calculo usando la variable %%q, pero antes comprobando que no este fuera de los limites ya preestablecidos

    if "%%q"=="%LimY%" Goto :Eof

    Si la posicion en Y es igual al limite entonces se devuelve a mostrar la pantalla sin realizar ningun cambio, de lo contrario continua con la ejecucion del codigo.

    set /a MovY=%%q+1

    Como ya hicimos el calculo, enotnces lo que sigue es obtener que "objeto" se encuentra en la nueva posicion, X 1 (%%p) Y !MovY! (%%q + 1)

    Call Set NMovY=%%X%%pY!MovY!%%

    En la variable NMovY se guardara un objeto que es el correspondiente al mostrado en la casilla X1Y2 del tablero, con el cual haremos la comprobacion y ver a que tipo de objeto es y luego que hacer con el.

    Si la siguiente casilla es un espacio, como es el area por la cual nos podemos mover entonces simplemente no haremos nada y pasaremos al siguiente objeto...el borde

    Si es igual al Borde (ladrillo, pared, etc) entonces volvera al tablero de Juego sin hacer cambios.

    if "!NMovY!"=="%Bound%" (Goto :Eof)

    Si es igual al valor de Salida (EXit) entonces simplemente se va a otra etiqueta que indicara que ha finalizado el juego, o que pasa a otro nivel.

    if "!NMovY!"=="%Exit%" (Goto :Win)

    Si es igual a un Punto, entonces aumentaremos el valor de los puntos, luego realizaremos el cambio de la casilla y asignaremos la nueva posicion obtenida.

    if "!NMovY!"=="%Point%" (Set /a Points+=5)
    Set "X%%pY!MovY!=%Player%"
    Set "CurPos=X%%pY!MovY!"


    Despues de esto asignaremos la casilla anterior con un espacio vacio, dicha casilla es la obtenida en el primer parametro (%~1) recibido en la funcion puesto que la bariable de posicion actual (CurPos) ya ha cambiado sus valores.

    Set "%~1=%Space%"

    Despues de esto se cerraria el ciclo del FOR y se procederia a volver de nuevo al tablero de juego, esto nos daria como resultado una funcion de movimiento de la siguiente manera.

    Código:
    ::Movimiento Vertical hacia Abajo
    :MovY+
    For /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
    if "%%q"=="%LimY%" Goto :Eof
    Set /a MovY=%%q+1
    Call Set NMovY=%%X%%pY!MovY!%%
    
    if "!NMovY!"=="%Bound%" (Goto :Eof)
    
    if "!NMovY!"=="%Exit%" (Goto :Win)
    
    if "!NMovY!"=="%Point%" (Set /a Points+=5)
    
    Set X%%pY!MovY!=%Player%
    Set CurPos=X%%pY!MovY!
    Set "%~1=%Space%")
    Goto :Eof
    Que corresponde a moverse hacia abajo en el tablero, para moverse hacia arriba es casi la misma funcion pero realizando el calculo restando a la variable %%q, en vez de sumar como en este caso, y para los movimientos laterales debemos hacer los calculos en base a la variable %%p.

    Funcion de Movimiento Lateral a la Derecha

    Código:
    :MovX+
    For /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
    if "%%p"=="%LimX%" Goto :Eof
    Set /a MovX=%%p+1
    Call Set NMovX=%%X!MovX!Y%%q%%
    if "!NMovX!"=="%Bound%" (Goto :Eof)
    if "!NMovX!"=="%Exit%" (Goto :Win)
    if "!NMovX!"=="%Point%" (Set /a Points+=5)
    Set "X!MovX!Y%%q=%Player%"
    Set "CurPos=X!MovX!Y%%q"
    Set "%~1=%Space%")
    Goto :Eof
    Luego de ya poder movernos y poder comprobar cada una de las situaciones que posiblemente se puedan presentar, podemos armar todo el codigo y tener nuestro juego completamente listo.

    Código:
     @echo off
     @title Game
     @mode con cols=16 lines=10
    ::Batch Game Demo
    ::Laberint Walker
    ::Coded by SmartGenius
    
    setlocal enabledelayedexpansion
    
    if not exist "keyboard.exe" (Call :NoKey)
    
    :Vars
    ::Limite Lateral Derecho X=7
    Set LimX=7
    ::Limite Inferior Y=6
    Set LimY=6
    ::Limite Lateral Izquierdo X=0
    Set IniX=0
    ::Limite Superior Y=0
    Set IniY=0
    ::Inicializacion de Variables de Movimieto en los Ejes XY
    Set MovX=0
    Set MovY=0
    ::Variable que representa el Borde.
    Set "Bound=Û"
    ::Variable para el tablero de juego, por donde nos moveremos.
    Set "Space= "
    ::Variable para el Jugador.
    Set "Player="
    ::variable para los puntos
    Set "Point=*"
    ::Variable para la salida.
    Set "Exit=°"
    
    :Init
    For /l %%a in (%IniX%,1,%LimX%) do (
    For /l %%b in (%IniY%,1,%LimY%) do (
    Set X%%aY%%b=%Space%))
    Call :Nivel_1
    Set "X1Y1=%Player%"
    Set Curpos=X1Y1
    Goto :Graphic
    
    :Graphic
    Call :Clear
    For /l %%d in (%IniX%,1,%LimY%) do (
    For /l %%e in (%IniX%,1,%LimX%) do (
    Set Lin_%%d=!Lin_%%d!!X%%eY%%d!))
    Echo.
    Echo.
    For /l %%f in (0,1,%LimY%) do (echo.  !Lin_%%f!)
    Echo.
    Keyboard
    If "%errorlevel%"=="77" (call :MovX+ "%CurPos%")
    If "%errorlevel%"=="75" (call :MovX- "%CurPos%")
    If "%errorlevel%"=="80" (call :MovY+ "%CurPos%")
    If "%errorlevel%"=="72" (call :MovY- "%CurPos%")
    If "%errorlevel%"=="88" (pause&exit)
    If "%errorlevel%"=="120" (pause&exit)
    Goto :Graphic
    
    ::Movimiento Vertical hacia Abajo
    :MovY+
    ::Separar el arumento en sus valores X Y
    For /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
    ::Coprobar el valor de Y contra el limite
    if "%%q"=="%LimY%" Goto :Eof
    ::Realizar el calculo del nuevo posible valor de Y
    Set /a MovY=%%q+1
    ::Obtener el onjeto contenido en la nueva casilla
    Call Set NMovY=%%X%%pY!MovY!%%
    ::Comparar dicho objeto contra un borde
    if "!NMovY!"=="%Bound%" (Goto :Eof)
    ::Compararlo con el objeto "salida"
    if "!NMovY!"=="%Exit%" (Goto :Win)
    ::Compararlo con el objeto punto
    if "!NMovY!"=="%Point%" (Set /a Points+=5)
    ::Asiognar el jugador a la nueva casilla
    Set X%%pY!MovY!=%Player%
    ::Asignar los valores XY correspondientes a la nueva posicion
    Set CurPos=X%%pY!MovY!
    ::Asignar la posicion anterior con un espacio vacio
    Set "%~1=%Space%")
    ::Volver al tablero
    Goto :Eof
    
    ::Movimiento Vertical hacia Arriba
    :MovY-
    For /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
    if "%%q"=="%IniY%" Goto :Eof
    Set /a MovY=%%q-1
    Call Set NMovY=%%X%%pY!MovY!%%
    if "!NMovY!"=="%Bound%" (Goto :Eof)
    if "!NMovY!"=="%Exit%" (Goto :Win)
    if "!NMovY!"=="%Point%" (Set /a Points+=5)
    Set "X%%pY!MovY!=%Player%"
    Set "CurPos=X%%pY!MovY!"
    Set "%~1=%Space%")
    Goto :Eof
    
    :MovX+
    For /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
    if "%%p"=="%LimX%" Goto :Eof
    Set /a MovX=%%p+1
    Call Set NMovX=%%X!MovX!Y%%q%%
    if "!NMovX!"=="%Bound%" (Goto :Eof)
    if "!NMovX!"=="%Exit%" (Goto :Win)
    if "!NMovX!"=="%Point%" (Set /a Points+=5)
    Set "X!MovX!Y%%q=%Player%"
    Set "CurPos=X!MovX!Y%%q"
    Set "%~1=%Space%")
    Goto :Eof
    
    :MovX-
    For /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
    if "%%p"=="%LimX%" Goto :Eof
    Set /a MovX=%%p-1
    Call Set NMovX=%%X!MovX!Y%%q%%
    if "!NMovX!"=="%Bound%" (Goto :Eof)
    if "!NMovX!"=="%Exit%" (Goto :Win)
    if "!NMovX!"=="%Point%" (Set /a Points+=5)
    Set "X!MovX!Y%%q=%Player%"
    Set "CurPos=X!MovX!Y%%q"
    Set "%~1=%Space%")
    Goto :Eof
    
    :Clear
    for /l %%m in (0,1,%LimY%) do (set Lin_%%m=)
    Goto :Eof
    
    :Win
    Cls
    Echo.
    Echo. Felicitaciones
    Echo.
    Echo. Completaste
    Echo.  El Nivel
    Echo.
    Echo. Puntos:%Points%
    Echo.
    Pause >nul
    Exit
    
    :Nivel_1
    ::Coordenadas XY para el Primer Nivel
    For %%a in (X4Y4,X6Y5) do (Set %%a=%Point%)
    For %%a in (X7Y3) do (Set %%a=%Exit%) 
    For %%a in (X0Y0,X0Y1,X0Y2,X0Y3,X0Y4,X0Y5,X0Y6,X1Y0,X1Y6,X2Y0,X2Y1,X2Y4,X2Y6,X3Y0,X3Y3,X3Y4,X3Y6,X4Y0,X4Y2,X4Y3,X4Y6,X5Y0,X5Y2,X5Y3,X5Y4,X5Y5,X5Y6,X6Y0,X6Y6,X7Y0,X7Y1,X7Y2,X7Y4,X7Y5,X7Y6) do (Set %%a=%Bound%) 
    Goto :Eof
    
    :NoKey
    cls
    echo.
    Echo. Cargando...
    Call :Keyboard
    ping -n 1 0.0.0.0 >nul
    Goto :Eof
    
    :keyboard
    (
    echo n keyboard.dat
    echo e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
    echo e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
    echo e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
    echo rcx
    echo 002E
    echo w0
    echo q
    echo.
    )>keyboard.dat
    type keyboard.dat|debug>NUL 2>&1
    del /f/q/a "keyboard.exe">NUL 2>&1
    ren keyboard.dat "keyboard.exe"
    Goto :Eof
    A partir de aqui es cuestion de imaginacion para realizar diferentes tipos de juegos, recordar que la base de todo es el sistema de coordenadas, los calculos de movimiento entre las mismas y las comprobaciones de los valores contenidos en dichas coordenadas.

    Aqui les dejo parte del codigo usado, y las herramientas: [SOLO LOS USUARIOS REGISTRADOS PUEDEN VER LOS ENLACES. ]

    Cualquier duda, comentario o sugerencia es bienvenido =D

    Saludos.

  2. #2
    Experto Avatar de nax_hh
    Fecha de Ingreso
    junio-2008
    Ubicación
    En mi casa y tu?
    Mensajes
    2.602
    Gracias obtenidos: 29

    Predeterminado Re: [Tutorial] Batch Game Programming - by SmartGenius

    me pareció muy interesante...

    ahora entiendo un poco mas tu lógica de programación

    salu2
    nax


    Gracias ubun

    [SOLO LOS USUARIOS REGISTRADOS PUEDEN VER LOS ENLACES. ]

    Ya no estoy por aqui

  3. #3
    -KuTeR-
    Guest

    Predeterminado Re: [Tutorial] Batch Game Programming - by SmartGenius

    Muchas gracias lo estaba esperando

    Salu2!

  4. #4
    Miembro
    Fecha de Ingreso
    agosto-2008
    Mensajes
    141
    Gracias obtenidos: 2

    Predeterminado Re: [Tutorial] Batch Game Programming - by SmartGenius

    Muy Bien SmartGenius.

    Haber si ahora con este tutorial hay más personas que se animen a hacer más Batch Games.

    Saludos

  5. #5
    Veterano Avatar de ninfas
    Fecha de Ingreso
    enero-2009
    Mensajes
    918
    Gracias obtenidos: 72

    Predeterminado Re: [Tutorial] Batch Game Programming - by SmartGenius

    Muy bueno Smart , gracias por ayudarnos a comprender tus Batch Game

    Muchas gracias con esto ya te pasastes, llevabamos algun tiempo esperandolo

    SAludos



  6. #6
    Master Avatar de JMB
    Fecha de Ingreso
    abril-2007
    Ubicación
    Mexico
    Mensajes
    6.563
    Gracias obtenidos: 46

    Predeterminado Re: [Tutorial] Batch Game Programming - by SmartGenius


    !dios¡ soy grande pero tan pequeño
    gracias

    que tiempo el tuyo smart
    SI SUPIERAS LA MITAD DE LO QUE SE .... JMB



  7. #7
    Miembro Avatar de hacker108
    Fecha de Ingreso
    agosto-2011
    Ubicación
    España
    Mensajes
    139
    Gracias obtenidos: 18

    Predeterminado Respuesta: Re: [Tutorial] Batch Game Programming - by SmartGenius

    oscuaaaaaaa
    pero deberias ponerle nivel 2 y3

  8. #8
    Veterano Avatar de jino139
    Fecha de Ingreso
    agosto-2011
    Ubicación
    EL SALVADOR
    Mensajes
    900
    Gracias obtenidos: 134

    Predeterminado Respuesta: Re: [Tutorial] Batch Game Programming - by SmartGenius

    revivir ppooooooooooost zombieeeeee

  9. #9
    Moderador
    Fecha de Ingreso
    noviembre-2006
    Mensajes
    2.662
    Gracias obtenidos: 335

    Predeterminado Respuesta: Re: [Tutorial] Batch Game Programming - by SmartGenius

    Esta bien, los post tipo "tutoriales" se pueden revivir, los de tipo "dudas" o/y "descargas" esos no; ahi te haces un nuevo tema para plantear tu dudo y si va relacionada con otro tema indicas la url.

    kj
    [SOLO LOS USUARIOS REGISTRADOS PUEDEN VER LOS ENLACES. ]

Temas Similares

  1. [Batch Game] Adventure Game - by SmartGenius
    By SmartGenius in forum Batch
    Respuestas: 9
    Último mensaje: 24-sep-2009, 22:53
  2. Respuestas: 15
    Último mensaje: 24-abr-2009, 01:03
  3. [Batch Game] PushBox v 1 - by :: SmartGenius ::
    By SMARTGENIUS in forum Batch
    Respuestas: 20
    Último mensaje: 28-mar-2009, 22:32
  4. [Batch Game] PacMan v 1 - by :: SmartGenius ::
    By SMARTGENIUS in forum Batch
    Respuestas: 7
    Último mensaje: 19-feb-2009, 17:33
  5. [Batch Game] PingPong v 1 - by :: SmartGenius ::
    By SMARTGENIUS in forum Batch
    Respuestas: 17
    Último mensaje: 06-feb-2009, 07:49

Normas de Publicación

  • No puedes crear nuevos temas
  • No puedes responder mensajes
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •