1. Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.
    Сокриј

Проблем со Borland, графики, анимации...!

Дискусија во форумот 'C // C++' започната од JackDaniels, 6 Декември 2009.

  1. JackDaniels

    JackDaniels
    Intern

    40
    0
    30 Мај 2009
    Имам проблем со Borland C++ верзија 3.1, кога работам со графички приложенија. Со обични програми е ОК, но кога треба да Run-ува графика, анимација или слично, покажува error. Грешките се во овој вид:
    Код:
    Linker Error: Undefined symbol _initgraph in module GRAPH.CPP
    
    И груги како _setcolor, _sector, _outtextxy... што се поврзани со графичната библиотека graphics.h.
    Графичниот драјвер го инициализирам:
    Код:
    int gdriver=0; gmode;
    initgraph(&gdriver,&gmode, "C//BorlandC//BGI");
    
    При компилација не покажува никакви грешки, а при Run да.
    Користам Windows 7, но и со Vista и XP го правеше истото.
    Проблемот е што МОРАМ да користам Borland :ha:
    Совет??? Благодарам!
     
  2. maximilian

    maximilian
    Gaining Experience

    1,064
    74
    26 Март 2008
    А да пробаш со понова верзија? Оваа е доста стара што ја корситиш. Макар што неам на оваа машина Борланд и не би можел да проверам. Јас ти препорачувам да пробаш со верзија од 6-ката нагоре. Јас ја користам 2003-ката на пример, а мислам дека има и испаднато верзија 2010.
     
  3. JackDaniels

    JackDaniels
    Intern

    40
    0
    30 Мај 2009
    Го имам пробано Borland C++ 5.11 но сосема е различен од 3.1, а од 5.5 повисока верзија нема (видов на Википедија). 6ката е Borland Builder Enterprise. Проблемот е што во факултетот е таа верзија и морам да работам со 3.1.
    Но ќе го пробам и 5.5.
     
  4. JackDaniels

    JackDaniels
    Intern

    40
    0
    30 Мај 2009
    Да еве го пробав и 5.2 истата работа. Вели:
    #error BGI graphics not supported under Windows
    Некаква сугестија?
    Ако треба ќе го пробам и Borland Builder Enterprise 6 ама не мислам дека ќе има ефект.
     
  5. JackDaniels

    JackDaniels
    Intern

    40
    0
    30 Мај 2009
    Ако може некој да го проба ова:
    Код:
    #include <graphics.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    #include <dos.h>
    
    void drawcab(int x, int y, int size, int color){
    	setcolor(color);
    	circle(x,y,2);
    	line(x, y, x+size, y+size);
    	line(x, y, x-size, y+size);
            line(x, y, x, y+size);
    	arc(x-size+2, y, -90, 0, size-2);
    	arc(x+size-2, y, 180, 270, size-2);
    	arc(x, y+size, 180, 360, size-2);
    	line(x-size+2, y+size, x+size-2, y+size);
    /*	line(x-size, y+size, x-size/2, y+size+size/2);
    	line(x+size, y+size, x+size/2, y+size+size/2);
    	line(x-size, y+size, x+size, y+size);
    	line(x-size/2, y+size+size/2, x+size/2, y+size+size/2);
    */	setfillstyle(1, (color==0)?0:color|0x8);
    	floodfill(x, y+size+size/2-1, color);
    }
    
    int main(void)
    {
    	int gdriver = VGA, gmode = VGAHI, errorcode;
    	initgraph(&gdriver, &gmode, "d:\borlandc\bgi");
    
    	errorcode = graphresult();
    	if (errorcode != grOk)  /* an error occurred */
    	{
    		printf("Graphics error: %sn", grapherrormsg(errorcode));
    		printf("Press any key to halt:");
    		getch();
    		exit(1);             /* return with error code */
    	}
    
    	int co[2][4096], // circle path container
    	    i=0;
    	int cX=getmaxx()/2, cY=getmaxy()/2, R=getmaxy()/3, ST=R+R/4, cabsize = ST/12;
    	int tX=cX+R, tY=cY;
    	int lX, lY;
    	int tC=15;
    
    	circle(cX, cY, R);
    /* GET CIRLCE PATH */
    	do{
    /* tX > cX && tY > cY */
    	if(tX>cX)
    	if(tY>cY){
    		if(getpixel(tX+1, tY) == tC) tX++;
    		else
    		if(getpixel(tX, tY-1) == tC) tY--;
    		else
    		if(getpixel(tX+1, tY-1) == tC) {tX++;tY--;}
    }	else{
    /* tX > cX && tY <= cY */
    		if(getpixel(tX, tY-1) == tC) tY--;
    		else
    		if(getpixel(tX-1, tY) == tC) tX--;
    		else
    		if(getpixel(tX-1, tY-1) == tC) {tX--;tY--;}
    /* tX <= cX && tY>cY */
    }	else
    	if(tY>cY){
    		if(getpixel(tX+1, tY) == tC) tX++;
    		else
    		if(getpixel(tX, tY+1) == tC) tY++;
    		else
    		if(getpixel(tX+1, tY+1) == tC) {tX++;tY++;}
    /* tX <= cX && tY<=cY */
    }	else{
    		if(getpixel(tX-1, tY) == tC) tX--;
    		else
    		if(getpixel(tX, tY+1) == tC) tY++;
    		else
    		if(getpixel(tX-1, tY+1) == tC) {tX--;tY++;}
    }
    	co[0][i] = tX;
    	co[1][i] = tY;
    	i++;
    	}while(tX!=cX+R || tY!=cY);
    
    	int k, j=0, l=0, divisor=6;
    	int range = (i-1)/(divisor*2);
    /* Grass/Earth */
    	setcolor(2);
    	rectangle(0, cY+ST-1, getmaxx()-1, getmaxy()-1);
    	setfillstyle(1,2);
    	floodfill(1, cY+ST, 2);
    	setlinestyle(0,0,3);
    /* Wheel Stand */
    	setcolor(15);
    	line(cX, cY, cX-ST/6, cY+ST);
    	line(cX, cY, cX+ST/6, cY+ST);
    	rectangle(cX-ST/6-5, cY+ST-1, cX+ST/6+5, cY+ST+1);
    	setlinestyle(0,0,1);
    /* FerrisWheel */
    	for(k=0; k<divisor; k++){
    		setcolor(15);
    		tX = co[0][(l+range*k)%(i-1)];
    		tY = co[1][(l+range*k)%(i-1)];
    		line(tX - 2*(tX - cX), tY - 2*(tY - cY), tX, tY);
    		drawcab(tX, tY, cabsize, k%6+1);
    		drawcab(tX - 2*(tX - cX), tY - 2*(tY - cY), cabsize, k%6+1);
    	}
    	int t;
    	k=0;
    /* MAIN CYCLE */
    	do{
    		t = (l+range*k)%(i-1);
    		tX = co[0][t];
    		tY = co[1][t];
    /* Delete Elements */
    		drawcab(tX, tY, cabsize, 0);
    		drawcab(tX - 2*(tX - cX), tY - 2*(tY - cY), cabsize, 0);
    		setcolor(0);
    		line(tX - 2*(tX - cX), tY - 2*(tY - cY), tX, tY);
    /**/
    		t = (l+1+range*k)%(i-1);
    		tX = co[0][t];
    		tY = co[1][t];
    /* Redraw Elements */
    		drawcab(tX, tY, cabsize, k%6+1);
    		drawcab(tX - 2*(tX - cX), tY - 2*(tY - cY), cabsize, k%6+1);
    		setcolor(15);
    		circle(cX, cY, R);
    		circle(cX, cY, R-1);
    		line(tX - 2*(tX - cX), tY - 2*(tY - cY), tX, tY);
    		setlinestyle(0,0,3);
    		line(cX, cY, cX-ST/6, cY+ST);
    		line(cX, cY, cX+ST/6, cY+ST);
    		setlinestyle(0,0,1);
    /**/
    		if(k<divisor-1) k+=1;
    		else{
    			k=0;
    			(l==i-1)?l=0:l+=1;
    		}
    /* Draw center */
    		for(j=1; j<4; j++)
    		circle(cX, cY, j);
    		for(j=5; j<8; j++)
    		circle(cX, cY, j);
    		circle(cX, cY, 9);
    /**/
    	}while(!kbhit());
    	getch();closegraph();return 0;
    }
    
    Ако излегува рингишпил нека ми каже со кој компајлер работи па да го симнам.
    Благодарам!
     
  6. maximilian

    maximilian
    Gaining Experience

    1,064
    74
    26 Март 2008
    Јас дури од среда па натаму ќе можам да го компајлирам па да видам дали бидува или не. Да не студираш во Бугарија? Обично таму на Борланд работат факултетите :D

    Иначе, не знам зошто велиш дека од 5.5 нема повисока еве види:
    [ame]http://www.amazon.com/Borland-C-Builder-6-Personal/dp/B00006347Y[/ame]

    Borland C++ Builder 6 Personal
    Platform: Windows 95 / Me / 2000 / NT / 98

    Што значи дека дури и стара верзија е :))
     
  7. JackDaniels

    JackDaniels
    Intern

    40
    0
    30 Мај 2009
    Да, да во Бугарија.
    Јас читав за Borland C++ (programming environment) и од нив нема повисока од 5.5, а поновите работи од Borland се C++ Builder (rapid application development) и нив ги има верзија 6 и нагоре, но ќе пробам и со нив.
    Благодарам!
     
  8. gdamjan

    gdamjan
    On your way to fame

    2,236
    514
    3 Април 2008
    Хм.. BGI ако не се лажам (одамна беше) е библиотеката на Borland за директно цртање на графика. Под директно, мислам на DOS апликации кои директно пристапуваат на графичката карта.

    Тоа во Windows нормално не е дозволено. Не знам ако пробаш да го старташ програмот во некој compatibilty mode дали ќе работи.
     
  9. JackDaniels

    JackDaniels
    Intern

    40
    0
    30 Мај 2009
    Да, стара верзија е, и затоа ќе пробам со некои други компајлери. Всушност барајќи низ интернет налетав на едно програмче dosbox кое е емулатор за работи под dos (игри, програми). Убаво работи само што ми вади грешки дека не може да ги отвори библиотеките (math.h, graph.h)...
    Маки... :ha:
     
  10. minimoog

    minimoog
    Intern

    317
    16
    14 Јули 2007
  11. JackDaniels

    JackDaniels
    Intern

    40
    0
    30 Мај 2009
    Да, да сега не покажува грешки дека не го прифаќа BGI, а сега прави проблем со боите од типот:
    Код:
    Multiple declaration of BLACK
    Earlier declaration of BLACK
    
    итн итн...
    А и вели дека не го отвара sstream.h
    И не разбрав каде треба да се копира WinBGIm 6.0 (Nov 2005) source code, т.е папката со CXX фајловите?
    Благодарам!!!
     
  12. minimoog

    minimoog
    Intern

    317
    16
    14 Јули 2007
    WinBGim работи само со mingw. Нема да ти работи со Borland.
     
  13. JackDaniels

    JackDaniels
    Intern

    40
    0
    30 Мај 2009
    На ова minGW каде му е exe-то? Од каде се стартува? Во bin-от ли е?
    Не можам никаде да го најдам.
     
  14. minimoog

    minimoog
    Intern

    317
    16
    14 Јули 2007
    Тој е друг компајлер. http://mingw.org

    Друго решение тие виртуелна машина која би работела со FreeDOS.
     
  15. JackDaniels

    JackDaniels
    Intern

    40
    0
    30 Мај 2009
    Да читав за minGW-от и се утепав од работа да тргне но никако да проработи. Нема да ми заврши работа, воопшто не го разбирам програмот. Прочитав 100 различни страници за сетирање на minGW ама не бидува.
    Сепак благодарам!!!
     
  16. Petkovsky

    Petkovsky
    Intern

    323
    31
    7 Декември 2009
    Па ти кажува што е грешката, не може да ја поврзе библиотеката зашто не си ја навел во линкерот. Барај linker options -> graphics lib и такви слични работи.
     
  17. JackDaniels

    JackDaniels
    Intern

    40
    0
    30 Мај 2009
    Грешката е што Windows не поддржува BGI (Borland Graphic Interface). Но мора да постои начин бидејќи во факултетот работи без проблем на XP.
    Подобро да поставам вакво прашање: Дали некој знае некој друг компајлер што работи со графички приложенија во кој не мора да се користи graphics.h, и функции што ќе ги заменат функциите што ги содржи таа библиотека? А сепак кодот да е во C/C++?
     
  18. Petkovsky

    Petkovsky
    Intern

    323
    31
    7 Декември 2009
    Visual Studio со DirectX, Win32 GDI, или OpenGL да пробаш.
     
  19. gdamjan

    gdamjan
    On your way to fame

    2,236
    514
    3 Април 2008
    :)

    ги проба ли тие compatibility опциите во windows?
     
  20. JackDaniels

    JackDaniels
    Intern

    40
    0
    30 Мај 2009
    Пробав ама не бидува. Тие се многу сложни графички апликации. На мене ми треба некаква проста анимација во 2D со 16-те бои. Ако е нешто во 3D со true color или сл, ќе ми се чудат како сум го направил. :)
     
  21. minimoog

    minimoog
    Intern

    317
    16
    14 Јули 2007
    Прво факултетот е, немам коментар, а за замена...Дали ќе ти одговора ова? http://qt.nokia.com/doc/4.6/paintsystem.html http://qt.nokia.com/doc/4.6/qpainter.html
     
  22. JackDaniels

    JackDaniels
    Intern

    40
    0
    30 Мај 2009
    Ќе го проверам и тоа, ама изгледа дека или во факултетот ќе ја пробувам семинарската, или ќе се обидам на друга партиција од HDD, на лаптопот да ставам DOS оперативен систем.
    Сепак Благодарам на сите!!!
     
  23. maximilian

    maximilian
    Gaining Experience

    1,064
    74
    26 Март 2008
    А зошто на пример не пробаш со објектот Canvas? Jaс така имам цртано кружници на пример, и заедно со мењање на бои и тн.

    Еве ти пример на бугарски од мојот факултет, па види, може ќе ти помогне: http://194.141.86.30:7651/rkraleva/ZimenSem/MOKG/Exercise6/mokg6.htm
     
  24. JackDaniels

    JackDaniels
    Intern

    40
    0
    30 Мај 2009
    Да веројатно и тоа ќе го пробам, ама финтата е што веројатно нема да ја разберат како што треба бидејќи самиот принцип и функциите на цртање се различни. Ама кога пробав толку работи може и тоа да го пробам.
    Благодарам!
     
  25. maximilian

    maximilian
    Gaining Experience

    1,064
    74
    26 Март 2008
    ^ Не верувам дека нема да ја разберат, иако принципот и функциите на цртање се различни. Ако нема друго чаре, пробај ова, макар што, важно е дека си се снашол, си ја направил програмата функционална, не е важно како и со што.
    Барем кај нас не прават проблеми за овакви работи, а мислам дека и во останатите бугарски универзитети не би имало проблем.

    Како и да е, пробај овака, па кажи што си направил :)
     
Слични теми
  1. dime
    Одговори:
    1
    Прегледи:
    1,318
  2. Sampion
    Одговори:
    7
    Прегледи:
    1,441
  3. Миџата™
    Одговори:
    2
    Прегледи:
    1,494
  4. Anita972
    Одговори:
    5
    Прегледи:
    1,103
  5. Fatal1ty_
    Одговори:
    2
    Прегледи:
    1,059
Вчитување...

Сподели

Вчитување...