gotoxy em C [RESOLVIDO]

1. gotoxy em C [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 29/06/2016 - 23:13h

Eai pessoal blz?
Galera pesquisei em vários fóruns mas não consegui, meu problema é: estou estudando programação em C/C++, uso ubuntu mas algumas coisas faço no Windows como o uso da biblioteca<conio.h> e quero usar o gotoxy ( ); e estou usando o dev c++, só que não compila.
Alguém pode me ajudar? Sei que o gotoxy é do Turbo C++ mas vejo tutoriais de pessoas usando o gotoxy no dev C++ como este no exemplo:

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

int main (void)
{
gotoxy (15,15);
printf("Hello World");

}
E no tutorial compila direito, e quando vou tentar fazer não consigo.
Alguém pode me ajudar ?


  


2. Re: gotoxy em C

Paulo
paulo1205

(usa Ubuntu)

Enviado em 30/06/2016 - 10:58h

A ConIO (de CONsole Input and Output) é uma versão reduzida e adaptada apenas para PCs da biblioteca Termcap (TERMinal CAPabilities) do mundo UNIX. Funcionalidades básicas da ConIO, tais como clrscr(), gotoxy() ou textcolor(), podem ser substituídas por funções da Termcap ou de sua sucessora, chamada Terminfo (de TERMinal INFOrmation).

Algumas funções mais avançadas, como manipulação mais intensiva de elementos na tela, menus, painéis e até mesmo suporte rudimentar a mouse, são geralmente feitas através da biblioteca Curses (CURSor addrESsing).

Segue abaixo um exemplo de uso de Terminfo. O programa desenha cubos mostrando (parte) das cores disponíveis para uso, primeiro num terminal compatível com ANSI X3.64 (8 cores, de 0 a 7), e depois as 216 cores (16 a 231) de um terminal compatível com XTerm com 256 cores. No final, ele imprime texto usando todas as cores disponíveis. Programa típico de ConIO, mas usando as bibliotecas do UNIX.

#include <term.h>
#include <stdio.h>
#include <unistd.h>


inline void gotoxy(int x, int y){
putp(tparm(cursor_address, y, x));
}


int main(void){
int r, g, b;
int fg_color, bg_color;
const double sin60=0.86602540378444, cos30=sin60;
const double cos60=0.5, sin30=cos60;
int xc, yc;
int x, y;
int rep;
int n, step;

setupterm(NULL, STDOUT_FILENO, NULL); // Carrega parâmetros do terminal e associa a saída padrão (stdout).

// columns e lines são variáveis globais da terminfo.
xc=columns/2;
yc=lines/2;

// putp() envia para o terminal um parâmetro da Terminfo.
// Os parâmetros, por sua vez, são variáveis globais ou macros.
putp(exit_attribute_mode);
rep=0;
do {
step=1;
n=1;
while(n>0){
putp(exit_attribute_mode);
putp(clear_screen);
for(r=0; r<n; r++){
for(g=0; g<n; g++){
for(b=0; b<n; b++){
bg_color=4*b+2*g+r;
fg_color=(r+g+b>2? 0: 7);
x=xc+5*(g-r)*cos30;
y=yc-2*(b-(g+r)*sin30);
putp(tparm(set_a_foreground, fg_color));
putp(tparm(set_a_background, bg_color));
gotoxy(x, y-1);
printf(" ");
gotoxy(x, y);
printf(" %3d ", bg_color);
}
}
}
fflush(stdout); // Força atualização imediata do terminal (stdio normalmente bufferiza operações).
//sleep(1);
usleep(250000);
if(n==2)
step=-step;
n+=step;
}
} while(rep++<10);
rep=0;

if(max_colors>16){ // max_colors é uma variável global da Terminfo.
do {
step=1;
n=1;
while(n>0){
putp(exit_attribute_mode);
putp(clear_screen);
for(r=0; r<n; r++){
for(g=0; g<n; g++){
for(b=0; b<n; b++){
bg_color=16+36*r+6*g+b;
fg_color=16+(r+g+b>8? 0: 215);
x=xc+5*(g-r)*cos30;
y=yc-2*(b-(g+r)*sin30);
putp(tparm(set_a_foreground, fg_color));
putp(tparm(set_a_background, bg_color));
gotoxy(x, y-1);
printf(" ");
gotoxy(x, y);
printf(" %3d ", bg_color);
}
}
}
fflush(stdout);
//sleep(1);
usleep(250000);
if(n==6)
step=-step;
n+=step;
}
} while(rep++<10);
}
putp(exit_attribute_mode);
putp(tparm(cursor_address, lines-3, 0));
for(int cor=0; cor<max_colors; cor++){
putp(tparm(set_a_foreground, cor));
printf("Cor %d normal ", cor);
putp(enter_bold_mode);
printf("e \"bold\".\n");
putp(exit_attribute_mode);
}
putp(exit_attribute_mode);
printf("Cor reset normal ");
putp(enter_bold_mode);
printf("e \"bold\".\n");
putp(exit_attribute_mode);

return 0;
}


Para compilá-lo, não esqueça de linkar a biblioteca Terminfo (opção -ltinfo na linha de comando). Por exemplo:

gcc -Wall -Werror -O2 -std=gnu99 colorcube.c -o colorcube -ltinfo 


Se você o executar no terminal com o tipo definido como “xterm”, que é o mais comum, só vai obter 8 ou 16 cores. Se quiser forçar o uso de 256 cores, pode ter de mudar a variável de ambiente que indica o tipo do terminal.

env TERM=xterm ./colorcube           # provavelmente usará 8 cores
env TERM=xterm-16color ./colorcube # provavelmente usará 16 cores
env TERM=xterm-256color ./colorcube # provavelmente usará 256 cores



3. Re: gotoxy em C [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 01/07/2016 - 17:05h

valew cara. Ajudou muito


4. Re: gotoxy em C [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 03/07/2016 - 16:33h

Marque o tópico como resolvido (e, se puder, marque a resposta como “melhor resposta”).






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts