• Jueves 14 de Noviembre de 2024, 22:47

Autor Tema:  Funcion para obtener un char de la pantalla  (Leído 1056 veces)

betops

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Funcion para obtener un char de la pantalla
« en: Sábado 6 de Noviembre de 2010, 08:54 »
0
Hola gente!! soy nuevo en el foro y esta es mi primera consulta!! estoy programando en C con codeblocks y mingw un jueguito para la facu, un Battle Tank, si jugaban a atari o family lo recordaran, la historia es que necesito una funcion (creada, o de alguna biblioteca) que dandole la coordenada de la pantalla en la consola de windows, me retorne el char que hay en ese lugar.

Pero no me sirve pasar como parametro mi matriz pantalla, ya que ella solo se imprime al principio, y no cambia (por el momento).
Son los tanques los que se mueven dentro de los limites de la matriz, y yo lo que necesito es evaluar las pocisiones de alrededor para mover el tanke.
Por ejemplo si el tanke va hacia arriba necesito evaluar las pocisiones de la pantalla (consola) (no mi matriz pantalla) que estan justo arriba de el, y si todas son espacios el tanke puede avanzar, de lo contrario, si hay pared o algun otro tanke, el tanke se detiene.

Gracias a todos!! y si sale esto y logro terminar el juego para el 16 que es la entraga prometo colgar mi jueguito en la pagina para que les agarre el vicio!!

Saludos!!

Betops

posman

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Funcion para obtener un char de la pantalla
« Respuesta #1 en: Sábado 6 de Noviembre de 2010, 19:39 »
0
Todo lo que se ve escrito en pantalla (en modo consola) comienza en la posicion de memoria 0xB8000 en modo protegido (en modo real seria B800:0000).

Desde ahi, cada palabra (o sea cada 2 bytes) contiene el caracter y su atributo. El primer byte contiene el codigo ASCII del caracter escrito y el segundo byte contiene los atributos como color del texto y del fondo.

Por ejemplo, si declararas un apuntador a la posicion de memoria de video
Código: C
  1. char *video = 0xB8000;
  2.  

El caracter en la linea 0, columna 0 estaria en video[0] y sus atributos en video[1].
El caracter en la linea 0, columna 1 estaria en video[2] y sus atributos en video[3]

Tendrias que hacer las multiplicaciones y sumas necesarias para sacar el valor del caracter segun las coordenadas que quieras