графика на си
#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
Что делать?????
Fatal..\include\graphics.h 19:Error directive:BGI graphics not supported under Windows
Что делать?????
Либо искать драйвер , который идёт под виндой (а есть ли он ? ) , либо учиться программировать под Windows. :)
Можно еще откомпилить и запустить под DOS :D
Можно еще откомпилить и запустить под DOS :D
а дрова где в нэте можно достать???
а дрова где в нэте можно достать???
Под Windows - врядли.
IMHO Сообщение
"Fatal..\include\graphics.h 19:Error directive:BGI graphics not supported under Windows" - говорит тебе о том, что ты пытаешься откомпилировать свою программу под Windows. Настрой компилятор, чтоб он тебе под ДОС код выдавал, и все будет пучком.
Под Windows - врядли.
IMHO Сообщение
"Fatal..\include\graphics.h 19:Error directive:BGI graphics not supported under Windows" - говорит тебе о том, что ты пытаешься откомпилировать свою программу под Windows. Настрой компилятор, чтоб он тебе под ДОС код выдавал, и все будет пучком.
Посмотри компонент для вывода графики, который работает под Windows с использованием GDI. Это будет лучшее решение.
Посмотри компонент для вывода графики, который работает под Windows с использованием GDI. Это будет лучшее решение.
GDI - Graphics Device Interface - представляет собой интерфейс, который Windows использует для рисования 2D графики.
BGI - Borland graphics Interface
BGI не поддерживается в Windows. Что можно сделать - скомпилировать программу под дос, как уже советовали выше. Тогда она будет запускаться под Windows в режиме эмуляции ДОС, или как там его величать.
#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
правда рисует оно совсем не кораблики =))