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