#include #include unsigned char xCenter; unsigned char yCenter; struct text_info oldTextInfo; /* Prototypes */ void intializeScreen (void); void moveRobot (void); void redrawRobot (int newX, int newY); void cleanupOnExit (void); void main ( void ) { /* =================================== */ /* Main function for the robot program */ /* ----------------------------------- */ /* This program will read text cursor */ /* movement keys from a user. */ /* =================================== */ intializeScreen ( ); moveRobot (); cleanupOnExit (); } /* Modules */ void intializeScreen (void) { gettextinfo (&oldTextInfo); xCenter = (oldTextInfo.winright - oldTextInfo.winleft + 1) / 2; yCenter = (oldTextInfo.winbottom - oldTextInfo.wintop + 1) / 2; clrscr (); gotoxy (xCenter, yCenter); textcolor (10); putch (0xB2); gotoxy (wherex()-1, wherey()); } void redrawRobot ( int newX, int newY) { textcolor (0); putch (0xB2); gotoxy (newX, newY); textcolor (10); putch (0xB2); gotoxy (newX, newY); } /* redrawRobot */ /* intializeScreen */ void moveRobot ( void ) { int userStop; char userMove; char extended; userStop = 0; do { userMove = getch (); switch (userMove) { case 'q': case 'Q': userStop = 1; break; /* zero */ case 0: { extended = getch (); switch (extended) { case 75: if (wherex() > 1) redrawRobot (wherex() -1, wherey()); break; case 77: if (wherex() < oldTextInfo.winright) redrawRobot (wherex() +1, wherey()); break; case 72: if (wherey() > 1) redrawRobot (wherex(), wherey()-1); break; case 80: if (wherey() < oldTextInfo.winbottom) redrawRobot (wherex(), wherey()+1); break; } }; break; } }while (userStop ==0); } /* moveRobot */ void cleanupOnExit ( void ) { textcolor (7); window (oldTextInfo.winleft, oldTextInfo.wintop, oldTextInfo.winright, oldTextInfo.winbottom); clrscr (); }