шаг вычисляется либо по вертикальной,
#include "dos.h"
#include "stdio.h"
void mode(), line();
void mempoint(), palette();
void display_object(),update_object();
unsigned char read_point();
int sprite[2][4] =
3,0,3,5,
0,3,5,3
;
main()
union k
char c[2];
int i;
key;
int deltax=0,deltay=0;
mode(4); /*m установка 4 режима графики CGA/EGA */
palette(0); /* палитра 0 */
display_object(sprite,2,1);
do
key.i = bioskey(0);
deltax=0;deltay=0;
if(!key.c[0]) switch(key.c[1])
case 75: /* влево */
deltay= -1;
break;
case 77: /* вправо */
deltay= 1;
break;
case 72: /* вверх */
deltax= -1;
break;
case 80: /* вниз */
deltax= 1;
break;
case 71: /* вверх и влево */
deltay= -1;
deltax= -1;
break;
case 73: /* вверх и вправо */
deltay= 1;
deltax= -1;
break;
case 79: /* вниз и влево */
deltay= -1;
deltax= 1;
break;
case 81: /* вниз и вправо */
deltay= 1;
deltax= 1;
break;
/* стирание текущей позиции спрайта */
display_object(sprite,2,1);
if (is_legal(sprite,deltax,deltay,2))
update_object(sprite,deltax,deltay,2);
/* перезапись спрайта в новую позицию */
displey_object(sprite2,1);
while (key.c[0]!='q');
getchar();
mode(2);
/* Выбор палитры */
void palette(pnum)
int pnum;
union REGS r;
r.h.bh = 1; /* код 4-го графического режима */
r.h.bl = pnum;
r.h.ah = 11;
int86(0x10, &r, &r);
/* Выбор режима */
void mode(mode_code)
int mode_code;
union REGS r;
r.h.al = mode_code;
r.h.ah = 0;
int86(0x10, &r, &r);
/* Изображение линии заданного цвета с использованием
алгоритма Брезенхама */
void line(startx,starty,endx,endy,color)
int startx,starty,endx,endy,color;
register int t,distance;
int x=0,y=0,delta_x,delta_y;
int incx,incy;
/* Вычисление расстояния в обоих направлениях */
delta_x=endx-startx;
delta_y=endy-starty;
/* определение направления шага,
шаг вычисляется либо по вертикальной, либо по горизонтальной
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий