Quantcast
Channel: Comunidad Underground Hispana
Viewing all articles
Browse latest Browse all 11602

Coordenadas Mouse y Colous en Batch

$
0
0
Coordenadas en Batch

Una ventana del CMD símbolo del sistema, esta compuesta por unos puntos, en los que van las letras, números, símbolos, etc.

dependiendo del tamaño de la ventana, (usando Mode), sabemos cuantos puntos hay en la ventana.

si por ejemplo tenemos una ventana de tamaño de lineas "40", y de columnas "100", podemos decir que:

40x100= 4000, tenemos 4000 puntos en la ventana.

pero como podemos posicionar un carácter, en determinado punto de la ventana?

pues utilizando el sistema de coordenadas cartesianas, tomando las lineas como eje X, y las columnas como eje Y.

El eje X, seria una linea horizontal, que comienza en el punto 0 en el primer punto de la ventana, y termina dependiendo del tamaño de la ventana. (en este caso "100").

El eje Y, seria una linea vertical, que también comienza en el punto 0 de la ventana, y termina, también dependiendo del tamaño de la ventana. (seria "40").

Al unir los dos puntos podemos posicionarnos en cualquier punto de la ventana

X=0 Y=0 seria el primer punto de la ventana

X=100 Y=40 seria el ultimo punto de la ventana

Ejemplos:

* la coordenada X2 Y4 seria:

Código:

-0123456789 + (x)

1
2
3
4  *
5

+
(Y)

X = x + 2  se desplaza a la derecha, (suma)
Y = Y + 4  se desplaza hacia abajo (suma)

* las coordenadas X4 Y5 y X3 Y3 serian:

Código:

-0123456789 + (x)
0     
1
2
3  *
4
5    *

+
(Y)

X1= X + 4
Y1= Y + 5

X2= X + 3
Y2= Y + 3

* si la coordenada M esta en el punto X4 Y4, y se quiere mover al punto X2,Y2 seria:

Código:

-0123456789 + (x)
0     
1
2  M

4    M
5   

+
(Y)

M: X=4,Y=4

X= X - 2    se desplaza a la izquierda (resta)
Y= Y - 2    se desplaza hacia arriba (resta)

M2: X=2,Y=2


Uso de colous

Para dibujar un punto en la ventana, utilizamos:

Código:

Colous COLORTEXTO COLORFONDO X,Y "DIGITO"
Ejemplo:

Código:

COLOUS 12 0 04,05 "*"


Podemos dibujar un cuadro con colous sabiendo la coordenada inicial, y la coordenada final:

Código:

@echo off

:: COORDENADA A (inicial)
set/a ax=1,ay=1

:: COORDENADA B (final)
set/a bx=20,by=20


:IN
set/a x=%ax%,y=%ay%
:: Suma 1 a la coordenada final, para que dibuje el cuadro correctamente
set/a finx=%bx%+1,finy=%by%+1

:Draw
set "mult=%x%"
:: comienza el bucle de dibujo de digitos en linea horizontal, hasta llegar al punto final X
:bucle_mult
set tes=%Tes%$219
set/a mult +=1
if "%mult%"=="%finx%" goto draw2
goto bucle_mult

:draw2
set x1=%x%
set y1=%y%
:: comienza el bucle de multiplicacion de la linea horizontal, hasta llegar al punto final Y
:bucle_crd
set cr=%cr%%x1%,%y1%;
set/a y1 +=1
if "%y1%"=="%finy%" goto end
goto bucle_crd

:end
:: se muestra el cuadro
colous 12 0 %cr% "%tes%"
pause



Dibujo usando Colous /f

Sin duda es la mejor forma de crear un entorno de colores en batch, por la velocidad de la carga de los graficos, y por que se pueden utilizar diferentes
colores a la vez, no como en el comando (colous 12 0 2,2 "hola"), que solo puede mostrar un color a la vez, y es lento.

funciona de la misma manera, solo que con un orden diferente:

EL archivo seria Hola.txt:

Código:

12                color texto
0                color fondo
20,20            coordenada (se puede usar multiples coordenadas separados por ";")
Hola mundo!          texto
-                fin (se usa para separar comandos uno del otro)

para mostrar este pequeño grafico, usamos:

Código:

colous /f hola.txt
la principal ventaja es que se puede utilizar un numero indefinido de comandos de esta forma, y el grafico seguiria mostrandose de forma veloz.



Uso del mouse, y Colous.

Colous tiene una función para leer en que coordenada se hizo el click:

"colous mouse"

Esta función devuelve la coordenada de donde se hizo click, así podemos realizar diversas acciones según los clicks.

Código:

for /f "tokens=1,2,3" %%a in ('colous mouse') do (set/a "x=%%b","y=%%c")
if %x%==1 (if %y%==1 (echo. has clickeado, que malvado.))

esta es una forma simple, sin embargo, si tenemos por ejemplo un enorme cuadro al que queremos hacer un boton, tendriamos que:

Código:

for /f "tokens=1,2,3" %%a in ('colous mouse') do (set/a "x=%%b","y=%%c")
if %x%==1 (if %y%==1 (echo. has clickeado, que malvado.))
if %x%==2 (if %y%==1 (echo. has clickeado, que malvado.))
if %x%==3 (if %y%==1 (echo. has clickeado, que malvado.))
if %x%==4 (if %y%==1 (echo. has clickeado, que malvado.))
if %x%==5 (if %y%==1 (echo. has clickeado, que malvado.))
if %x%==1 (if %y%==2 (echo. has clickeado, que malvado.))
if %x%==2 (if %y%==2 (echo. has clickeado, que malvado.))
if %x%==3 (if %y%==2 (echo. has clickeado, que malvado.))
if %x%==4 (if %y%==2 (echo. has clickeado, que malvado.))
if %x%==5 (if %y%==2 (echo. has clickeado, que malvado.))
if %x%==1 (if %y%==3 (echo. has clickeado, que malvado.))
if %x%==2 (if %y%==3 (echo. has clickeado, que malvado.))
if %x%==3 (if %y%==3 (echo. has clickeado, que malvado.))
if %x%==4 (if %y%==3 (echo. has clickeado, que malvado.))
if %x%==5 (if %y%==3 (echo. has clickeado, que malvado.))
if %x%==1 (if %y%==4 (echo. has clickeado, que malvado.))
if %x%==2 (if %y%==4 (echo. has clickeado, que malvado.))
if %x%==3 (if %y%==4 (echo. has clickeado, que malvado.))
if %x%==4 (if %y%==4 (echo. has clickeado, que malvado.))
if %x%==5 (if %y%==4 (echo. has clickeado, que malvado.))

Ademas de que ocupa mucho código, es un poco lento en grandes cantidades, y queda feo xD

utilizamos entonces este método:

Código:

for /f "tokens=1,2,3" %%a in ('colous mouse') do (set/a "x=%%b","y=%%c")
for %%a in ( 1:1 2:1 3:1 4:1 5:1 1:2 2:2 3:2 4:2 5:2 1:3 2:3 3:3 4:3 5:3 1:4 2:4 3:4 4:4 5:4 ) do (if "%x%:%y%"=="%%a" (echo. has clickeado, que malvado.))

como ven en una linea se simplifica mucho el trabajo tedioso.


Luego mejorare este mini tutorial ya que lo que había hecho originalmente se me borro, justo cuando estaba haciendo vista previa en la pagina ¬¬, creo que es uno de esos errores extraños...

por ahora les dejo mis herramientas, cada una tiene su explicación en su código, de como se utilizan, para hacer los gráficos y demás, de forma rápida.

DDKtools

también les dejo el colous.exe:

colous

y un ejemplo de lo que pueden hacer con todo esto, mi querido DDKX xD:

DDKx v1
ok, editare esto para agregar cosas o explicar mejor cuando lo vea necesario, saludos.

Viewing all articles
Browse latest Browse all 11602

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>