home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
QBasic & Borland Pascal & C
/
Delphi5.iso
/
C
/
Samples
/
C-ASM_VI.ARJ
/
PROGC.ZIP
/
PROGC092.C
< prev
next >
Wrap
Text File
|
1988-05-26
|
3KB
|
78 lines
/************************************************************************/
/* Display black and white sprite and move it using arrow keys */
/************************************************************************/
demo_cursor()
{
#define MAX_X (640 - 16)
#define MAX_Y (350 - 16)
#define KEY_ESC 0x011B
#define KEY_UP 0x4800
#define KEY_DOWN 0x5000
#define KEY_LEFT 0x4B00
#define KEY_RIGHT 0x4D00
#define KEY_ENTER 0x1C0D
static char and_mask[] = {
0x00,0x00, 0x00,0x00, 0x00,0x00, 0x1F,0xF8,
0x1F,0xF8, 0x1F,0xF8, 0x1F,0xF8, 0x1F,0xF8,
0x1F,0xF8, 0x1F,0xF8, 0x1F,0xF8, 0x1F,0xF8,
0x1F,0xF8, 0x00,0x00, 0x00,0x00, 0x00,0x00};
static char xor_mask[] = {
0xFF,0xFF, 0x80,0x01, 0xBF,0xFD, 0xA0,0x05,
0xA0,0x05, 0xA0,0x05, 0xA0,0x05, 0xA0,0x05,
0xA0,0x05, 0xA0,0x05, 0xA0,0x05, 0xA0,0x05,
0xA0,0x05, 0xBF,0xFD, 0x80,0x01, 0xFF,0xFF};
int key, x, y, i;
/* Draw a background pattern and a solid white box */
clear_screen();
for (i = 0; i < 640; i += 20) line(320,100,i, 0,i/20);
for (i = 0; i < 640; i += 20) line(320,100,i,199,i/20);
for (i = 0; i < 200; i += 10) line(320,100,0, i,i/10);
for (i = 0; i < 200; i += 10) line(320,100,639,i,i/10);
solid_box(320,100,150,150,15);
/* Set cursor shape and color, and display the first cursor */
set_cursor(and_mask, xor_mask, 0, 15);
x = 320; /* initial position of cursor */
y = 100;
move_cursor(x,y); /* show cursor at initial pos */
/* Loop while keys are pressed */
do
{
switch (key = get_key())/* Move cursor according to key */
{
case KEY_ESC:
case KEY_ENTER:
remove_cursor();
break;
case KEY_UP:
y = (y -1) > 0 ? --y : 0;
move_cursor(x, y);
break;
case KEY_DOWN:
y = (y + 1) < MAX_Y ? ++y : MAX_Y;
move_cursor(x, y);
break;
case KEY_RIGHT:
x = (x + 1) < MAX_X ? ++x : MAX_X;
move_cursor(x, y);
break;
case KEY_LEFT:
x = (x - 1) > 0 ? --x : 0;
move_cursor(x, y);
break;
default:
break;
}
} while (key != KEY_ENTER);
}