Foros - Stratos

Stratos => Principiantes => Mensaje iniciado por: Pumuki en 10 de Abril de 2009, 06:02:16 PM

Título: Ayuda con astedisco que se mueve en consola
Publicado por: Pumuki en 10 de Abril de 2009, 06:02:16 PM
Estoy probando cosas de programación c y se me ocurrió hacer un astedisco moviendose por pantalla. Estoy utilizando la libreria de borland para mover el cursor.

El problema esta en que cuando llego al miembro numero 26 de la fila de la tabla multidimensioanl que he creado, el astedisco desaparece, peró el contador de la posición que tengo sigue contando, si lo muevo hacia arriba pasando la franja roja vuelve a aparecer.

Si alguien fuese tan amable de decir que sucede para que pase me haria un favor. Dejo la captura de imagen y el codigo. He marcado con un circulo el lugar donde aparece el astedisco al sobrepasar la linea, parece que se queda alli y por eso no se visualiza.

(http://img11.imageshack.us/img11/7930/capturaprograma.th.jpg) (http://img11.imageshack.us/my.php?image=capturaprograma.jpg)

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
int main(int argc, char *argv[])
{
  int x=75;
  int y=75;
  char tetramino='*';
  char arriba = 'w';
  char abajo = 'x';
  char izquierda = 'a';
  char derecha = 'd';
  int teclado=0;
  int posx=3;
  int posy=3;
  int cuadricula [x][y];
     
      //BUCLE PRINCIPAL
      while(1)
      {   
          //ENTRADA DE DATOS POR TECLADO
          teclado = _getch();
          switch(teclado)
          {         
             case 'w':  --posy;
             break;
             case 'x': ++posy;
             break;
             case 'a': --posx;
             break;
             case 'd': ++posx;
             break;
          }
           
      //SALIDA DE DATOS POR PANTALLA
      cuadricula [posx][posy]= tetramino;
      gotoxy(posx,posy);
      printf("%c", cuadricula[posx][posy]);
      gotoxy(1,1);
      printf("%d ",posx);   
      gotoxy(1,2);
      printf("%d ",posy); 
      }     

  system("pause");
  return 0;
}
Título: Re: Ayuda con astedisco que se mueve en consola
Publicado por: Juan Mellado en 10 de Abril de 2009, 06:46:12 PM
La consola de MS-DOS (pantallita negra sobre la que dibujas) tiene por defecto una resolución (tamaño) de 80x25. Es decir, 80 columnas (horizontal) y 25 filas (vertical). Es normal que no puedas escribir más allá de la fila 25.

Nota: Se escribe "asterisco" y no "astedisco"
Título: Re: Ayuda con astedisco que se mueve en consola
Publicado por: Zaelsius en 10 de Abril de 2009, 06:48:30 PM
Iba a decir lo mismo que Juan Mellado. En la página 360 de este libro hay un comentario idéntico:
http://www.scribd.com/doc/7606157/C12

Aunque hagas la ventana más grande, el terminal de Windows solo te permitirá usar esas 80x25 celdas.
Título: Re: Ayuda con astedisco que se mueve en consola
Publicado por: Pumuki en 10 de Abril de 2009, 07:21:33 PM
XD. Pues muchas gracias, llevo horas dándole vueltas.
Título: Re: Ayuda con astedisco que se mueve en consola
Publicado por: tamat en 11 de Abril de 2009, 01:17:33 PM
prueba de pasarte a otra libreria, quiero decir, si te motiva pintar cosas en pantalla y coger el input deberias mirarte alguna de las librerias que ha desarrollado gente del foro, o coger algo como SDL.

Lo digo porque te sorprenderas de ver que no es tan complicado pintar una imagen por pantalla y moverla o coger el input, mucho mejor que ir pintando 'astediscos'
Título: Re: Ayuda con astedisco que se mueve en consola
Publicado por: Tei en 15 de Abril de 2009, 05:03:43 PM
Sorprende que alguien este haciendo esto en el 2009.

Pero por algun sitio hay que empezar.

Tienes buenas librerias para hacer graficos, puede que incluso te resulte mas facil y rapido que el modo texto (?).

Si te empeñas en el modo texto, incluso tienes librerias especificas.

Si no quieres usar librerias, y lo quieres hacer a pelo. Lo que se solia hacer era escribir directamente en memoria de video, asi poner un caracter asteroide seria  algo asi como   pantalla[x +  y * TAMFILA] =  'a';  donde pantalla es un puntero definido al principio de la parte donde esta esto.

Esto es como lo harias en Windows.  En UNIX llamarias a algo como las secuencias de escape de la terminal, o alguna pajolada de estas.

Curiosamente, la gente de Dwarf Fortress, uno de los juegos de consola (juas) mas famosos ultimamente emulan el modo de texto mediante no se si direct-x u opengl o algo de esto.

Título: Re: Ayuda con astedisco que se mueve en consola
Publicado por: Pumuki en 16 de Abril de 2009, 03:00:13 AM
Bueno, ya me mire la sdl bien. Y la verdad es que tampoco era tan complicada, tengo un muñeco moviendose en un escenario con su sistema de colisiones. Y si , la verdad es que es mas practico, me pensaba que seria mucho mas dificil que hacerlo por modo consola. Es mas comodo.