funcion gotoxy ( x , x )

Iniciado por GuilleSPA, 17 Diciembre 2005, 01:14 AM

0 Miembros y 1 Visitante están viendo este tema.

GuilleSPA

weno pos no m funciona la funcion  gotoxy ( x , x );
con q biblioteca se abre?   xq m da error ¿? el codigo es este

#include<stdio.h>
#include<conio.h>

int main(){

    printf("uno\n");
    printf("dos\n");
    printf("tres\n");
   
    getch();
     gotoxy( 20, 10 );

    return 0;
}

sch3m4

int gotoxy(SHORT x, SHORT y)
{
   COORD coord;
   HANDLE h_stdout;
   
   coord.X = x;
   coord.Y = y;
   
   if ((h_stdout = GetStdHandle(STD_OUTPUT_HANDLE)) == INVALID_HANDLE_VALUE)
      return 0;
   
   if (SetConsoleCursorPosition(h_stdout, coord) == 0)
      return 0;

   return 1;
}


;)
SafetyBits

"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..

Juan_Perez

La función gotoxy (int columna, int fila) es una función declarada en el encabezado <conio.h>, la cual viene en los compiladores de la línea de Turbo C (y también Borland C++) de la compañía Borland. Si usas otro compilador debes de buscar una función equivalente. En el compilador Dev C++ hay una emulación de las funciones declaradas en <conio.h>, pero antes tienes que bajarte esta librería y compilarla para poder usarla. Windows ofrece un conjunto de funciones para manejar la consola, entre las cuales está una equivalente a gotoxy, pero para poder usar estas funciones tienes que verificar si tu compilador puede usarlas. Esto lo puedes ver buscando el archivo de encabezado windows.h en el directorio include de tu compilador. La función es SetConsoleCursorPosition (HANDLE hConsoleOutput, COORD coord), pero su uso no es inmediato como la función gotoxy. Te muestro un ejemplo sencillo que mueve el cursor a la posición (10, 10) (aquí tienes que tomar en cuenta de que con gotoxy el origen es (1,1), mientras que con la otra función comienza en (0, 0))

#include <windows.h>
main ()
{
   HANDLE hConsoleOutput;
   COORD coord;
   hConsoleOutput = GetStdHandle (STD_OUTPUT_HANDLE);
   coord.X = 10; coord.Y = 10;
   SetConsoleCursorPosition (hConsoleOutput, coord);
}
.
   Si programas bajo GNU/Linux puedes usar la función move(int fila, int columna), que viene en la librería NCURSES la cual funciona en casi todas las distribuciones.

Juan_Perez

ANELKAOS, me parece que estás confundiendo la instrucción goto del lenguaje C/C++, la cual interrumpe el flujo secuencial del programa saltándose a un lado que tu le especificas, con la función gotoxy (x, y), la cual mueve el cursor a una línea y columna específica, cuando programas en modo consola.

redHat

No la utilices, es un crimen, es la llamada programación spaguetti xD
Calaberas traseras transparentes $80.00, defensa de Honda Civic 2000, $1000.00, cambiarte 4 carriles con menos de 5 metros de espacio, no tiene precio.....

GuilleSPA


anietru

 :D
después de investigar un poco en los archivos de dev c++ encontré un archivo de ejemplo donde esta un programa similar al siguiente que me mostró como poner color y posicionar el texto. Me puse muy feliz al poderlo hacer ya que he batallado un poco al respecto y a si quedo mi primer intento  :rolleyes:

Espero les sirva.
 
#include <constream>
using namespace conio;
using namespace std;

int main() {
   
    cout << setattr(BLUE) << setxy(15,15) << "Y DAR COORDENADAS A EN LA PANTALLA";
    cout << setattr(YELLOW) << setxy(10, 10) << "POR FIN!!!";
    cout << setattr(GREEN) <<setxy(13,13) << "PUDE CAMBIAR EL COLOR";
    cout << setattr(BROWN) <<setxy(20,20) << ":)";
   
    getch();
    return 0;
}
;-)

Maurice_Lupin

Buena función sch3m4, yo me instalaba el conio2 para dev C++  :xD
Un error se comete al equivocarse.

raver1983

//La definicion de gotoxy me da errores, el codigo que pusieron:
//Código:
int gotoxy(SHORT x, SHORT y)
{
   COORD coord;
   HANDLE h_stdout;
   
   coord.X = x;
   coord.Y = y;
   
   if ((h_stdout = GetStdHandle(STD_OUTPUT_HANDLE)) == INVALID_HANDLE_VALUE)
      return 0;
   
   if (SetConsoleCursorPosition(h_stdout, coord) == 0)
      return 0;

   return 1;
}

/*Mi prefunta es: que cabeceras ocupa este codigo para que funcione?, porque al definir la funcion y tratar de usarla me marca multiples errores de compilacion, yo solo inclullo la stdio.h , pero al parecer no es suficiente con esta cabecera para poder definir correctamente esta funcion*/