Pascalos gotoxy(); használata C-ben

Aki pascalon kezdett el programozni, az amikor C-ben az adatok kiíratásánál szeretne gotoxy(); utasítást használni, a már jól berögzült módon, az gyorsan szembesül a dologgal, hogy C-ben nincsenek elkényeztetve ilyen csilivili „grafikai” eszközökkel a fejlesztők. Anno Pascalban íródott „kergetős játékom”-at szerettem volna átírni C-re, amikor az alap utasítást helyettesítő parancsot kerestem. Most egy nagyon alap (és nem ajánlott) függvényt fogok bemutatni, ami a gotoxy(); utasítást fogja implementálni.

#include
#include

void clrscr(void) {
int i;

for (i = 0; i < 100; i++) // A bunch of new lines for now. It's blank, hey! putchar('\n'); } int gotoxy(int x, int y) { char essq[100]; // String variable to hold the escape sequence char xstr[100]; // Strings to hold the x and y coordinates char ystr[100]; // Escape sequences must be built with characters /* ** Convert the screen coordinates to strings */ sprintf(xstr, "%d", x); sprintf(ystr, "%d", y); /* ** Build the escape sequence (vertical move) */ essq[0] = '\0'; strcat(essq, "\033["); strcat(essq, ystr); /* ** Described in man terminfo as vpa=\E[%p1%dd ** Vertical position absolute */ strcat(essq, "d"); /* ** Horizontal move ** Horizontal position absolute */ strcat(essq, "\033["); strcat(essq, xstr); // Described in man terminfo as hpa=\E[%p1%dG strcat(essq, "G"); /* ** Execute the escape sequence ** This will move the cursor to x, y */ printf("%s", essq); return 0; } /* ** Example */ int main () { clrscr(); gotoxy(40, 12); printf("Coordinates: x = 40; y = 12;\n"); gotoxy(100, 90); printf("Coordinates: x = 100; y = 90;\n"); return 0; }

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük