- 4


unsigned char t;

char xor; /* " "

*/

char far *ptr=(char far *) 0xB8000000; /*

CGA */ bit_mask.i=3; /* 11111111 00111111

*/

if (x<0 || x>199 || y<0 || y>319) return 0;

/*

*/

bit_position=y%4; /*

*/ bit_mask.i<<=2*(3-bit_position);

/* */

index=x*40+(y>>4);

if (x%2) index+=8152; /* ,

*/

/* */

t=*(ptr+index) & bit_mask.c[0];

t>>=2*(3-bit_position);

return t;

/* */

void display_object(ob, sides,cc)

double ob[][4];

int sides,cc;

register int i;

for(i=0; i<sides; i++)

line((int)ob[i][0], (int)ob[i][1],

(int)ob[i][2], (int)ob[i][3], cc|128);

/* ( ) ,

x y

*/

void update_object(ob, x, y, sides)

int ob[][4]; /* */

int x, y; /* */

register int sides; /* */

sides--;

for(; sides>=0; sides--)

ob[sides][0] += x;

ob[sides][1] += y;

ob[sides][2] += x;

ob[sides][3] += y;

/* .

1, , 0-

*/

void is_legal(ob, x, y, sides)

int ob[][4]; /* */

int x, y; /* */

int sides; /* */

if(x==0 && y==0)

return 1; /* */

sides--;

for(; sides>=0; sides--)

/* */ if(ob[sides][0]+x>199 || ob[sides][1]+y>319)