![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 05.04.2010
Сообщений: 14
|
![]()
#include <conio.h>
#include <stdio.h> #include <dos.h> #include <string.h> /////////////////////////////////////////////////////////////// //Параметры текстового режима #define MENUX 35 //Размеры окошка #define MENUY 4 #define FONSIM 177 //Фоновый символ #define FONCOL 0x25 //Фоновый цвет #define ZAGLCOL 0x34 //Цвет заглавия #define MENUCOL 0x24 //Цвет меню #define BACKCOL 0x12 //Теневой цвет /////////////////////////////////////////////////////////////// //Параметры графического режима #define MAXX 640 #define MAXY 200 #define MAXCOL 16 /////////////////////////////////////////////////////////////// //Граф. плата #define EGA_GRAPHICS 0x3ce //Регистры контроллера EGA #define EGA_GR_SET_RESET 0 //Регистр установки/сброса #define EGA_GR_ENABLE_SET_RESET 1 //Регистр разрешения установки/сброса #define EGA_GR_DATA_ROTATE 3 //Регистр сдвига и способа записи #define EGA_GR_MODE 5 //Регистр режима #define EGA_GR_BIT_MASK 8 //Регистр битовой маски /////////////////////////////////////////////////////////////// //Человек, перешагивающий препятствие //Параметры преграды #define PAUSE 250 #define PREGRX 100 //Координаты преграды #define PREGRY 100 #define PREGRC 2 //Цвет char pregr[6]={0xff,0xff,0xff,0xff,0xff,0xff}; //Спрайт //Параметры спрайта человечка ╧1 char man1[14]={0x1c,0x3e,0x3e,0x8,0x3e,0x3e,0x3e ,0x3e,0x3e,0x8,0x8,0x8,0x8,0x8}; char man2[14]={0,0x1c,0x3e,0x3e,0x8,0x3e,0x3e,0x 3e,0x3e,0x3e,0x8,0x8,0x4,0x8}; char man3[14]={0,0,0x1c,0x3e,0x3e,0x8,0x3e,0x3e, 0x3e,0x3e,0x3e,0x4,0x2,0x4}; #define MAN1X 83 #define MAN1Y 92 #define MAN1C 3 #define MAN2X 110 #define MAN2Y 92 #define MAN2C 3 unsigned manx[12]={83,83,85,87,92,95,100,103,106,108 ,110,110}; unsigned many[12]={92,90,88,86,83,83,83,83,86,88,90, 92}; //////////////////////////////////////////////////////////////// //Поднимание/опускание перископа char per1[5][7]={{0,0,0,0,0x7e,0xff,0xff}, {0,0,0,0x18,0x7e,0xff,0xff}, {0,0,0x18,0x18,0x7e,0xff,0xff}, {0,0x18,0x18,0x18,0x7e,0xff,0xff}, {0x18,0x18,0x18,0x18,0x7e,0xff,0xff }}; ///////////////////////////////////////////////////////////////// //Шарик, бегающий по бильярду #define BILCOL 2 //Цвет бильярда #define BILCOL2 4 //Цвет окаймления бильярда //#define BILCOL3 4 //Цвет луз #define BILCOL4 1 //Цвет шарика #define BILADR (88/8+80/8*MAXX) //Адрес бильярда #define CBILX 88 #define CBILY 80 #define BILX 60 //Длина бильярда по x/8 #define BILY 70 //Длина по y //char luz1[4]={0x18,0x66,0xc3,0xc3}; char balls[4]={0x7e,0xff,0xff,0x7e}; ///////////////////////////////////////////////////////////////// void inv (unsigned x,unsigned y, unsigned len) //Инвертация { unsigned i; char far * adr=(char *)MK_FP(0xb800,0); adr+=x*2+y*160+1; for (i=0;i<len;i++,adr+=2) *adr=*adr/16+(*adr % 16)*16; } void emt20 (char * buf,unsigned x,unsigned y) //Вывод текста по (x,y) из *buf { unsigned i; char far * adr=(char *)MK_FP(0xb800,0); adr+=x*2+y*160; for (i=0;i<strlen(buf);i++,adr+=2) *adr=buf[i]; } char bufscr[25*160]; //Буфер текстового экрана void gotograph (void) //Переход в графический режим с запоминанием ситуации { char far * adr=(char *)MK_FP(0xb800,0); unsigned i; for (i=0;i<25*160;i++,adr++) {bufscr[i]=*adr;} //Переход в граф. режим asm { mov AX,0x000E //640*200*16 int 0x10 } } void gototext (void) //Переход в текстовый режим с восстановлением ситуации { unsigned i; char far * adr=(char *)MK_FP(0xb800,0); //Переход в текст. режим asm { mov AX,0x0003 int 0x10 } for (i=0;i<25*160;i++,adr++) {*adr=bufscr[i];} } void outspr (unsigned x,unsigned y,unsigned color,char * sprite,unsigned leny) { char far * adr=(char *)MK_FP(0xa000,0); adr+=y*80+(x/8); //адрес текущего байта outport (EGA_GRAPHICS,EGA_GR_MODE+0); //Режимы чтения и записи 0 outport (EGA_GRAPHICS,EGA_GR_SET_RESET+colo r*256); //Номер цвета outport (EGA_GRAPHICS,EGA_GR_ENABLE_SET_RES ET+0xf00); //Проц. байт не влияет x=7-x % 8; //сдвиг по Оx unsigned i; for (i=0;i<leny;i++) { if (x!=0) { outport (EGA_GRAPHICS,EGA_GR_BIT_MASK+((((( unsigned int)sprite[i])&0xff)<<x)&0xff00)); (*adr)++; } outport (EGA_GRAPHICS,EGA_GR_BIT_MASK+((spr ite[i]<<(8+x))&0xff00)); (*(adr+1))++; adr+=MAXX/8; } } |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
сделайти если не трудно ехе файл, прога есть | Gerberka | Общие вопросы C/C++ | 1 | 08.06.2010 18:30 |
Если exe, допустим, расчитан на то, что бы отправлять запросы на сайт, то надо ли копировать ЕХЕ для за.. | TwiX | Общие вопросы Delphi | 3 | 13.12.2009 11:44 |
Как скомпилировать прогу, если у меня есть только *.cpp файл? | TwiX | Общие вопросы C/C++ | 4 | 13.11.2009 21:13 |
Я-чайник (в excel) - у меня есть к Вам просьба, если есть желание и время - помогите. | rococococo | Microsoft Office Excel | 0 | 04.10.2009 12:16 |
Необходим файл macro.lib. | Жека:) | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 17.01.2009 09:20 |