Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

графика на си

15K
22 марта 2006 года
студент
9 / / 12.03.2006
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
void SHIP(int x, int y, int l,int h,int color_ship, int color_sail)
{
//Выбираем тип линии
setlinestyle(SOLID_LINE,0,NORM_WIDTH);
//Второй операнд задаёт тип линии пользователя, если первый параметр
// - USERBIT_LINE
int koordinat[14];
koordinat[0]= x; koordinat[1]= y+2*h/3;
koordinat[2]=koordinat[0]+1/3; koordinat[3]=koordinat[1];
koordinat[4]=koordinat[0]+1/2; koordinat[5]=koordinat[1]-2*h/3;
koordinat[6]=koordinat[0]+2*1/3; koordinat[7]=koordinat[1];
koordinat[8]=koordinat[0]+1; koordinat[9]=koordinat[1];
koordinat[10]=koordinat[6]; koordinat[11]=koordinat[1]+h/3;
koordinat[12]=koordinat[2]; koordinat[13]=koordinat[11];
setfillstyle (SOLID_FILL, color_sail) ;
// рисуем и закрашиваем многоугольник по шаблону, заданному setfillstyle
// цвет линии рисования задан по умолчанию WHITE
fillpoly (7, koordinat);
line (koordinat[2], koordinat[3], koordinat[6], koordinat[7]);
// задание шаблона для закрашивания области паруса
setfillstyle (SOLID_FILLf color_ship) ;
// по шаблону, заданному setfillstyle
//закрашиваем область паруса, ограниченную белой линией,
// узнав точку с координатами (x,y) внутри этой области
floodfill (koordinat[4], koordinat[11]-h/6,WHITE);
}
void SHIP_MOV (int xt,int yt,int l,int h) //(int st)
{
int max_x=getmaxx();
int xb=xt+l, yb=yt+h;
SHIP( xt, yt, l,h, RED, BLUE);
// определение размера памяти для хранения графического изображения
// и выделение её
void* bitmap=new char [ imagesize(xt,yt,xb,yb) ];
//запоминание изображения
getimage(xt,yt,xb,yb,bitmap);
//организация движения
for ( int i=xt; i< max_x-1; i=i+4)
{
//размещение изображения на экране
putimage (i, yt, bitmap, COPY_PUT) ; // 0
delay(lOO); // задержка
// стирание изображения на экране
putimage(i,yt,bitmap, XOR_PUT); // 1
}
putimage (i,yt,bitmap,COPY__PUT) ; // 0
delete [ ]bitmap; // освобождение памяти
}

void main (void)
{
int graph_driver, graph_mode;
graph_driver =DETECT; /* автоопределение драйвера*/
initgraph (&graph_driver, &graph_mode, “c:\\bc31\\bgi”);
int x=getmaxx ();
int y=getmaxx();
int c=getmaxcolor () -1;

for (int i=0, j=c; i<c; i++, j--) //рисует караблики 14 цветами
{
cleardevice () ;
SHIP(x/2, y/2-90, 190, 110, I, j);
getchO; // ожидает нажатия любой клавиши
}
cleardevice () ;
SHIP_MOV (10, y/5, 160, 100);
getch();
closegraph ();
}
---------------------------------------------
запускаю прогу,а мне выдается таккая ошибка:
Fatal..\include\graphics.h 19:Error directive:BGI graphics not supported under Windows

Что делать?????
7.6K
22 марта 2006 года
Darien
125 / / 15.01.2006
Либо искать драйвер , который идёт под виндой (а есть ли он ? ) , либо учиться программировать под Windows. :)
991
22 марта 2006 года
Zenhipster
157 / / 14.01.2005
Цитата:
Originally posted by студент
Fatal..\include\graphics.h 19:Error directive:BGI graphics not supported under Windows

Что делать?????


Цитата:
Originally posted by Darien
Либо искать драйвер , который идёт под виндой (а есть ли он ? ) , либо учиться программировать под Windows. :)



Можно еще откомпилить и запустить под DOS :D

15K
23 марта 2006 года
студент
9 / / 12.03.2006
Цитата:
Originally posted by Zenhipster
Можно еще откомпилить и запустить под DOS :D


а дрова где в нэте можно достать???

991
23 марта 2006 года
Zenhipster
157 / / 14.01.2005
Цитата:
Originally posted by студент
а дрова где в нэте можно достать???



Под Windows - врядли.

IMHO Сообщение
"Fatal..\include\graphics.h 19:Error directive:BGI graphics not supported under Windows" - говорит тебе о том, что ты пытаешься откомпилировать свою программу под Windows. Настрой компилятор, чтоб он тебе под ДОС код выдавал, и все будет пучком.

284
13 апреля 2006 года
michael_is_98
587 / / 25.02.2005
Цитата:
Originally posted by Zenhipster
Под Windows - врядли.

IMHO Сообщение
"Fatal..\include\graphics.h 19:Error directive:BGI graphics not supported under Windows" - говорит тебе о том, что ты пытаешься откомпилировать свою программу под Windows. Настрой компилятор, чтоб он тебе под ДОС код выдавал, и все будет пучком.


Посмотри компонент для вывода графики, который работает под Windows с использованием GDI. Это будет лучшее решение.

14K
15 апреля 2006 года
Rockie
6 / / 21.11.2005
Цитата:
Originally posted by michael_is_98
Посмотри компонент для вывода графики, который работает под Windows с использованием GDI. Это будет лучшее решение.



GDI - Graphics Device Interface - представляет собой интерфейс, который Windows использует для рисования 2D графики.
BGI - Borland graphics Interface
BGI не поддерживается в Windows. Что можно сделать - скомпилировать программу под дос, как уже советовали выше. Тогда она будет запускаться под Windows в режиме эмуляции ДОС, или как там его величать.

14K
15 апреля 2006 года
Rockie
6 / / 21.11.2005
да и код ты переписал не ахти. отключай смайлы когда выкладываешь код. после определенных исправлений такое:

Код:
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
void SHIP(int x, int y, int l,int h,int color_ship, int color_sail)
{
setlinestyle(SOLID_LINE,0,NORM_WIDTH);
int koordinat[14];
koordinat[0]= x; koordinat[1]= y+2*h/3;
koordinat[2]=koordinat[0]+1/3; koordinat[3]=koordinat[1];
koordinat[4]=koordinat[0]+1/2; koordinat[5]=koordinat[1]-2*h/3;
koordinat[6]=koordinat[0]+2*1/3; koordinat[7]=koordinat[1];
koordinat[8]=koordinat[0]+1; koordinat[9]=koordinat[1];
koordinat[10]=koordinat[6]; koordinat[11]=koordinat[1]+h/3;
koordinat[12]=koordinat[2]; koordinat[13]=koordinat[11];
setfillstyle (SOLID_FILL, color_sail) ;
fillpoly (7, koordinat);
line (koordinat[2], koordinat[3], koordinat[6], koordinat[7]);
setfillstyle (SOLID_FILL, color_ship) ;
floodfill (koordinat[4], koordinat[11]-h/6,WHITE);
}

void SHIP_MOV (int xt,int yt,int l,int h)
{
int max_x=getmaxx();
int xb=xt+l, yb=yt+h;
SHIP (xt, yt, l,h, RED, BLUE);
void* bitmap=new char [ imagesize(xt,yt,xb,yb) ];
//запоминание изображения
getimage(xt,yt,xb,yb,bitmap);
//организация движения
for ( int i=xt; i< max_x-1; i=i+4)
{
//размещение изображения на экране
putimage (i, yt, bitmap, COPY_PUT) ; // 0
delay(100); // задержка
// стирание изображения на экране
putimage(i,yt,bitmap, XOR_PUT); // 1
}
putimage (i,yt,bitmap,COPY_PUT) ; // 0
delete [ ]bitmap; // освобождение памяти
}

void main (void)
{
int graph_driver, graph_mode;
graph_driver =DETECT; /* автоопределение драйвера*/
initgraph (&graph_driver, &graph_mode, "");
int x=getmaxx ();
int y=getmaxx();
int c=getmaxcolor () -1;

for (int i=0, j=c; i<c; i++, j--) //рисует караблики 14 цветами
{
cleardevice () ;
SHIP(x/2, y/2-90, 190, 110,1, j); // ЗДЕСЬ 5-ЫЙ ПАРАМЕТР Я ПОСТАВИЛ 1, ХОТЯ ТАМ ПЕРЕМЕННАЯ
getch(); // ожидает нажатия любой клавиши
}
cleardevice () ;
SHIP_MOV (10, y/5, 160, 100);
getch();
closegraph ();
}


компилируется в TC 3.0
правда рисует оно совсем не кораблики =))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог