DEBUG (BATCH)

Iniciado por FerJGS, 19 Julio 2010, 12:05 PM

0 Miembros y 2 Visitantes están viendo este tema.

leogtz

Cita de: FerJGS en 28 Julio 2010, 11:08 AM

BAT, PY, PERL, DELPHI, C, C# C++ Java JS VBN VBS PHP MySQL ASP


¿Para qué tantos lenguajes?
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Ari Slash

si quieres aprender a hacer algun juego, debes saber para que estan orientados tales lenguajes, por ejemplo de todos los que nombrastes, solo C/C++, python y java servirian para juegos, y a lo mejor vb.net depende de como lo uses.

sabiendo batch dudo que apendas a usar ensamlador desde debug

el lenguaje ensamblador es el mas bajo nivel que hay antes del binario
y no es nada facil como los comunes lenguajes de programacion, debes saber sobre registros del procesador, posiciones de memoria etc etc, es toda una arquitectura.

el siguiente bajo nivel seria C, por eso te decia que lo aprendieras con su biblioteca opengl. Peru bueno si quieres aprender a usar el debug, esta sección de scripting no es para eso
ve al foro de asm o al de electronica


saludos

flony

#12
a ver gente no es para tirar leña al fuego y tampoco leo la cabeza de nadie pero lo de los lenguajes
CitarBAT, PY, PERL, DELPHI, C, C# C++ Java JS VBN VBS PHP MySQL ASP
...se me hace q es por no mandarlo a otro lado.... :laugh: che FerJGS te di dos lugares para leer...http://www.scribd.com/doc/7462877/Debug me parecio el mejorcito y lo busque xq me generaste esa inquietud...y si la verdad que alguno de los chicos que saben deberia hacer un tutorial...digamolo hay comandos que hay poca info solo por citas runas debug WMIC etc y si tienen razon para debug hay q saber algo de asm...pero bue nadie creo q en su sano juicio haga un simulador de vuelo en bat y eso que es para mi, mi inicio, el bat me encanta es simple y sin tanta complicacion como otros lenguajes solo que hay "obras maestras" y decis como hizo este tipo para hacer eso en bat y quiero entender q corno dice su codigo
bue...viendo lo que hace este cristiano aca un pequeño tuto q puso
CitarGráficos con Debug en Batch

¿Qué es Debug?
Debug es un debugger,  un depurador de código ensamblador para 16 bits. Windows lo incorpora por defecto y puede ser usado desde el CMD.
Ensamblador es todo un lenguaje, y obviamente por consecuencia las posibilidades de Debug son infinitas. Sin embargo en este manual se explica de forma sencilla como acceder al segmento de pantalla y poder manipular de una forma potente, sencilla y eficaz los gráficos. Útil para juegos o para darle una apariencia más profesional a los scripts.

El segmento de pantalla.

El segmento de pantalla es un pedazo de la memoria donde todas las computadoras que ejecutan DOS, almacenan sus caracteres junto con sus atributos correspondientes a la consola de comandos.
El citado segmento comienza en la dirección 0800h.
Al escribir datos directamente en un desplazamiento sobre ese segmento, esos datos aparecerán en pantalla.

Posición.

En ese segmento una posición ocupa dos bytes. El primero contiene el carácter y el segundo los atributos de éste.
Trabajando en una consola de x80y25, como es por defecto, veríamos que toda la pantalla ocupa 4000 bytes.
Bien, sabiendo que cada fila ocupa 160 bytes y cada columna ocupa 2 bytes, no es muy difícil hallar la fórmula para calcular la posición donde insertar un carácter.
La fórmula es esta: fila*160+columna*2. Lo que, adaptándolo al plano cartesiano, quedaría así: x*2+y*160. Puesto que las columnas son el eje horizontal X y las filas el eje vertical Y.
Así pues, la coordenada x1y3, por ejemplo, aplicando la fórmula, quedaría así:

1*2+3*160 = 482D = 1E2H

Se ha transformado a hexadecimal ya que es el sistema de numeración empleado en el uso de memoria.

Aplicación a Batch.

Lo que nos interesa es poder usar este sistema para realizar gráficos en batch. Vamos a ver como.

Código:

(
Echo.EB800:1E2 "Û"A
Echo.q
)|Debug>nul

En ese código hemos escrito desde Debug en la posición EB800:1E2. Hemos escrito dos bytes, que son los mencionados al comienzo de este manual: el carácter a escribir (1º byte) y su atributo (2º byte).
El carácter se encierra entre comillas, y posteriormente le sigue su atributo, que es un color en hexadecimal.
El atributo puede contener dos números hexadecimales, que corresponden al color de fondo de la coordenada en cuestión y al color del carácter, respectivamente.
Por lo tanto, al escribir en el segmento de pantalla algo así:

Código:

EB800:1E2 "A"AF


Lo que hicimos fue escribir en x1y3 la letra "A"; darle un fondo verde brillante a la casilla y un color blanco brillante a la letra.

Esto es todo, tan sólo hay que usar el ingenio para conseguir realizar gráficos más complejos y automatizar el cálculo de coordenadas hexadecimales.






Copyright © Binary_Death
si un problema no tiene solucion entonces no es un problema...es algo inevitable

FerJGS

Gracias flony, por fin alguien que me entiende y opina igual que yo, sé de gente que en cuestión de un año ha aprendido hasta 7 lenguajes de programación y lo cierto es que tampoco me interesan tantos lenguajes pero necesito especializarme primer en batch para ir preparado al siguiente nivel. No estoy aprendiendo a programar en BATCH para hacer juegos, ¿qué consigo con eso? mover bolas en una consola, hacer como coches? Esos juegos son más cutres que los de los años 60. Yo lo que quiero es hacerlos para poner en práctica el debug y no solo juegos, también comandos como hizo "bolivianito" su famoso Colous. Y cosas relacionadas con la utilización del ratón en la consola que me vendrán muy bien. El tutorial del debug es básico pero creo que podré ir aclarándome. Gracias.

FerJGS

Otra cosa...¿cómo hago para que batch detecte las coordenadas del ratón con debug?

FerJGS

Hola...¿puede alguien responder a mi pregunta?

DA KILLER

Alex sabe de eso, a todo esto dejo una duda: ¿Que estoy haciendo mal en este code?

Código (dos) [Seleccionar]
@echo off
mode con cols=40 lines=20
echo.
echo. ######################################
echo. ####### -= PRUEBA CON DEBUG =- #######
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
pause >nul
(
Echo.EB800:A0 "R" 1F
Echo.EB800:A2 "o" 1F
Echo.EB800:A4 "d" 1F
Echo.EB800:A6 "r" 1F
Echo.EB800:A8 "i" 1F
Echo.EB800:AA "g" 1F
Echo.EB800:AC "o" 1F
Echo.EB800:AE " " 1F
Echo.EB800:B0 "K" 1F
Echo.EB800:B2 "I" 1F
Echo.EB800:B4 "L" 1F
Echo.EB800:B6 "L" 1F
Echo.EB800:B8 "E" 1F
Echo.EB800:BA "R" 1F
)|Debug>nul
pause >nul


En fin, lo que hace es tras la pausa escribir "Rodrigo KILLER" en formato de color F1 (letras blancas sobre azul), pero no se porque me cambia el valor de las columnas no importa el numero que ponga, a 85 que es el tamaño por default.

Me podrían echar un cable?

Desde ya gracias.

PD: Fer, busca info sobre el comando EXTERNO mouse.com o el antiguo click.com creo que era, saluDoS
.: DA KILLER :.



SmartGenius



EddyW

Debug usa el valor default de las columnas 80Col, a lo que se no puedes cambiarlo ;)
Además te falto el Q de Quit en el debug:
Código (dos) [Seleccionar]
@echo off
mode con cols=40 lines=20
echo.
echo. ######################################
echo. ####### -= PRUEBA CON DEBUG =- #######
For /l %%_ In (1 1 16) Do (
echo. ######################################)
(
Echo.EB800:A0 "R"1F"o"1F"d"1F"r"1F"i"1F"g"1F"o"1F" "1F"K"1F"I"1F"L"1F"L"1F"E"1F"R"1F
Echo.Q
)|Debug>nul
pause >nul


Mejor?

SaluDOS!!!

flony

bue aca la pregunta que significa esta parte del code
Echo.EB800:A0 "R"1F"o"1F"d"1F"r"1F"i"1F"g"1F"o"1F" "1F"K"1F"I"1F"L"1F"L"1F"E"1F"R"1F
o seas s q es para ingresar letras pero
1)porque EB800 y no EB799
2)porque A0 y no A1
3)1F y no F sola
si un problema no tiene solucion entonces no es un problema...es algo inevitable