[C]Guida alla funzione gotoxy e i suoi utilizzi

« Older   Newer »
  Share  
Brutus Wolf
view post Posted on 24/11/2010, 20:16




La funzione di cui andremo a parlare oggi , si chiama gotoxy , e non è presente di default in nessuna libreria. La sua sintassi è la seguente :

CODICE
#include <windows.h>

void  GotoXY(int x, int  y) {
COORD CursorPos = {x, y};
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hConsole, CursorPos);
}


Quindi per usarla le vie sono due : o creiamo un file header che richiamiamo in testa a ogni programma oppure incolliamo quello snippet in ogni programma , io ho scelto la via più breve cioè la prima . La funzione una volta richiamata riceve una cordina x e una cordinata y , queste due insieme indicano in punto dello schermo .

Esempio :

CODICE
#include <gotoxy.h>

main ()

{
GotoXY(10,5);
printf("prova");

getch ();

}


Con queste poche righe abbiamo scritto prova circa a metà della finestra dove è stato eseguito lo script . L’utilizzo principale che si può fare di questa funzione è creare piccoli giochini (molto banali ) . Mettiamo che volessimo creare una navicella che si muove a destra e sinistra premendo i tasti A e D . Ecco il ciò di cui abbiamo bisogno :

* Printf per stampare la “navicella”
* GotoXY per la posizione della navicella
* getch(); per rilevare i tasti premuti

Iniziamo includendo l’header contenente gotoxy e creando la variabile x intera :

CODICE
#include <gotoxy.h>

main ()

{
int x ;


Ora passiamo a disegnare la navicella in centro alla schermo :

CODICE
#include <gotoxy.h>

main ()

{
int x ;

x=32;y=15;

GotoXY (x,y) ;
printf("!-||-!");

Fatto questo creiamo un ciclo DO-WHILE dove la condizione di uscita è premere il tasto esc
info
#include <gotoxy.h>

main ()

{
int x,muovi ;

x=32;y=15;

GotoXY (x,y) ;
printf("!-||-!");

do {

muovi = getch();

} while (muovi!=27) ;

return 0;

}


Ora non ci rimane che assegnare i movimenti , ecco il programma finito :

CODICE
#include <gotoxy.h>

main ()

{
int x,y,muovi ;

x=32;y=15;

GotoXY (x,y) ;
printf("!-||-!");

do {

muovi = getch();

if (muovi == 100 )  {

system("cls") ;
x++;
GotoXY (x,y) ;
printf("!-||-!");

}

else if (muovi == 97 )  {

system("cls") ;
x--;
GotoXY (x,y) ;
printf("!-||-!");

}

} while (muovi!=27) ;

return 0;

}


Con sole 39 righe abbiamo creato un “giochino” , i valori 100 e 97 sono riferiti alle pressione rispettivamente di A e D. Se volessimo conoscere i valori di altri tasti possiamo lavorare in questo modo :

CODICE
main ()

{
int muovi ;

muovi=getch();

printf("%d",muovi);

return 0;

}


Il risultato che viene restituito è il valore del tasto ;) RICORDO CHE QUESTI SNIPPET NON FUNZIONANO SU LINUX

fonte
 
Top
¬Black Viper
view post Posted on 24/11/2010, 20:57




xD grazie
 
Top
Forceman25
view post Posted on 27/11/2018, 20:06




ho un dubbio , perchè alla fine mettere while (muovi !=27); cioè perchè mettere DIVERSO != e non uguale == visto che dovrebbe essere uguale cioè alla pressione del tasto esc quindi il getch prende il 27...
 
Top
2 replies since 24/11/2010, 20:16   1892 views
  Share