Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Ayuda con astedisco que se mueve en consola

Iniciado por Pumuki, 10 de Abril de 2009, 06:02:16 PM

« anterior - próximo »

Pumuki

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.



#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;
}

Juan Mellado

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"

Zaelsius

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.

Pumuki

XD. Pues muchas gracias, llevo horas dándole vueltas.

tamat

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'
Por un stratos menos tenso

Tei

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.


Pumuki

#6
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.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.