Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как вывести графику в Borland C++ 3.1


Автор: K0SHKA 24.10.2007, 14:49
Здараствуйте!!!
Вот решила изучать С++ начала с Borland C++ 3.1, и вот первая проблема :(
как мне нарисовть хотябы примитивы(круг,линию,  и т.д)
подключаю #include <graphics.h>
но компелятор ругается, и выдает много ошибок (
пожалуйста помогите ..

Автор: K0SHKA 24.10.2007, 15:12
Вот код программы тока почемуто не компелируется (

Код

#include <graphics.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include "time.h"

#define PATHTODRIVER "c:\\borland\\bgi\\"

void luzor(int n)
{  int x,y;
   int c;
   time_t t;

   srand((unsigned)time(&t));
   for (int i = 0; i< n;i++)
   {
    x = rand() % 640;
    y = rand() % 480;
    c = rand() % 16;
    setcolor(c);
    lineto(x,y);
   }
}

void main(void)
{ int gdriver = DETECT;
  int gmode;
  int errorcode;

  initgraph(&gdriver, &gmode, PATHTODRIVER);
  errorcode = graphresult();

  if (errorcode != grOk)
  {
   printf("ERROR!");
   exit(1);
  }

luzor(100);
getch();
closegraph();
}


Автор: Optimus 24.10.2007, 15:14
Цитата(K0SHKA @  24.10.2007,  14:49 Найти цитируемый пост)
но компелятор ругается, и выдает много ошибок (

напишите какие ошибки выдает

удостоверьтесь в том что графический режим подключен:
Options -> Linker -> Libraries...
Код

[] Graphics library

в скобках поставьте X
Код

[X] Graphics library


у меня никаких ошибок не выдает

Автор: K0SHKA 24.10.2007, 15:33
Большое спасибо! теперь проблем при компеляции нет.
Но на экране появляется надпись ERROR: -3.

Автор: Optimus 24.10.2007, 15:46
Цитата(K0SHKA @  24.10.2007,  15:12 Найти цитируемый пост)
#define PATHTODRIVER "c:\\borland\\bgi\\"

убедитесь в том что путь правильный 
и что в папке BGI есть файл EGAVGA.BGI


Автор: K0SHKA 24.10.2007, 15:52
Optimus, Есче раз большое вам спасибо.
Наконец разобралась  smile 

Ещё было бы не плохо какуюнибуть книжечку по этой теме smile 

Автор: Optimus 24.10.2007, 17:24
Цитата(K0SHKA @  24.10.2007,  15:52 Найти цитируемый пост)
Ещё было бы не плохо какуюнибуть книжечку по этой теме 

книг по графике в Borland C++ я не встречал
почти все нахожу в справке Borland'a C++
здесь есть http://www.zsu.zp.ua/lab/help/C/htm/fr.htm(не проверял если есть все функции, но многие есть)

Автор: Dastish_Fantastish 26.10.2007, 19:34
Доброго вам времени суток! У меня та же проблема.
Вот прога, она запускается, но сразу вылетает, не рисуя линии. Уже несколько дней мучаюсь, не знаю, что делать!

Код

#include <conio.h>
#include <time.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream.h>
#include <graphics.h>
#define PATHTODRIVER "c:\\turboc\\bgi\\"
void main()
{
int gd=DETECT,gm;
initgraph(&gd,&gm,PATHTODRIVER);
line(50,60,100,120);
getch();
closegraph();
}

Автор: Optimus 26.10.2007, 20:04
у меня все работает

почему не проверяете если графический режим инициализирован ?
Код

int errorcode = graphresult();

if (errorcode != grOk)  /* an error occurred */
{
   printf("Graphics error: %s\n", grapherrormsg(errorcode));
   printf("Press any key to halt:");
   getch();
   exit(1);             /* return with error code */
}

посмотрите что выведет, и напишите если что то непонятно

Автор: Dastish_Fantastish 26.10.2007, 20:28
Воткнул ваш текст в программу - то же самое. Запускается и сразу закрывается
Код

#include <conio.h>
#include <time.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream.h>
#include <graphics.h>
#define PATHTODRIVER "c:\\turboc\\bgi\\"
void main()
{
int gdriver=DETECT;
int gmode;
initgraph(&gdriver,&gmode,PATHTODRIVER);
int errorcode = graphresult();    
if (errorcode != grOk)  /* an error occurred */    
{    
   printf("Graphics error: %s\n", grapherrormsg(errorcode));    
   printf("Press any key to halt:");    
   getch();    
   exit(1);             /* return with error code */    
}
setcolor(5);
circle(60,50,40);
getch();
closegraph();
}

Автор: Dastish_Fantastish 27.10.2007, 08:19
Хотя если запустить exe-шник через командную строку, то отображается просто черный экран

Автор: Optimus 27.10.2007, 08:44
Цитата(Dastish_Fantastish @  26.10.2007,  20:28 Найти цитируемый пост)
Воткнул ваш текст в программу - то же самое.

если ничего из выше перечисленного не помогает, ну я не зна...

интересно, а просто без графики работает ?
что выводит для этого примера
Код

#include <iostream.h>
#include <conio.h>

void main()
{
  cout << "\n\n\t***OK***";  
  
  getch();
}

Автор: Dastish_Fantastish 27.10.2007, 13:32
Цитата

интересно, а просто без графики работает ?


Без графики работает нормально, уже много прог до этого делал. Кстати, насчет этой: запускается, выводит ***OK***. Неужели графика не работает?! Такого ведь не бывает! Может настройки где-то надо изменить? Если у вас графика работает, то скажите, что вы делали сразу после установки с++. Допустим, options-->directories там у меня какие-то пути прописаны, может и неправильно, или file-->change directory может там что-нибудь поменять надо. На всякий случай скажу: на компе стоит turbo c++ 3.0. Может левый компилятор?

Автор: Optimus 27.10.2007, 15:11
Цитата(Dastish_Fantastish @  27.10.2007,  13:32 Найти цитируемый пост)
options-->directories 

допустим что  turbo c++ находится в папке c:\turboc, тогда:
Include Directories: c:\turboc\include
Library Directories: c:\turboc\lib
Output Directory: любой путь, здесь будет хранится .exe и .obj файл

P.S.пройдите программу с отладчиком, и напишите на какой строке вылетает

Автор: Dastish_Fantastish 27.10.2007, 17:02
Вылетает на initgraph.
Может из-за win xp не работает?

Автор: Optimus 27.10.2007, 22:04
думаю что проблема связана с файлом EGAVGA.BGI.
или путь не правильный или нету файла EGAVGA.BGI в той папке которую указываете.

даже ваш .exe файл работает, ставлю его в ту же папку где есть файл EGAVGA.BGI, запускаю, и выводит круг.

Автор: Dastish_Fantastish 28.10.2007, 19:17
Ура!!! Наконец-то запустил!!! Оказывается дело было в компе. Пришлось использовать прогу dosbox - реально помогла!

Автор: K0SHKA 29.10.2007, 20:00
Уважаемый Optimus, а можно ли circle(шарикsmile) заставить двигатся при на жатии определённой кнопки он двигается вправо или влево, можноли вообше это сделать.

Автор: Optimus 29.10.2007, 20:14
что означает
Цитата(K0SHKA @  29.10.2007,  20:00 Найти цитируемый пост)
двигатся

такое устроит
Код

   circle(50, 50, 30);

   char ch;

   ch = getch();  //нажимаем на 'p'

   if (ch == 'p') 
   {
     cleardevice();

     circle(100, 50, 30);
   }


P.S. один топик - один вопрос.

Автор: K0SHKA 30.10.2007, 15:52
Тока учусь smile .

Код


#include<graphics.h>
#include<stdio.h>
#include<dos.h>
#include<conio.h>

#define PATHTODRIVER "c:\\borlandc\\bgi\\"
void rght(int x, int y)
{
  cleardevice();
  circle(x,y,30);
}

void left(int x, int y)
{
  cleardevice();
  circle(x,y,30);
}

void up(int x, int y)
{
  cleardevice();
  circle(x,y,30);
}

void down(int x, int y)
{

 cleardevice();
 circle(x,y,30);
}

void main()
{
 int errorcode;
 int gdriver = DETECT;
 int gmode;
 char ch;
 int x = 50;
 int y = 50;

 initgraph(&gdriver,&gmode,PATHTODRIVER);
 errorcode = graphresult();
 if (errorcode != grOk)
 {
  printf("ERROR: %d",errorcode);
  getch();
 }
while(ch != 'q')
{
  ch = getch();
  if (ch == 'd')
  {
   rght(x = x + 10,y);
  }
  if (ch == 'a')
  {
   left( x = x - 10,y);
  }
  if ( ch == 'w')
  {
   up(x,y = y - 10);
  }
  if (ch == 's')
  {
   down(x, y = y + 10);
  }
}
printf("END PROGRAMM FOR EXIT PRESS <ENTER>");
getch();
closegraph();
}


Есле зделала чтото не так или код можно усовершенствовать пожолуйста напишите.

Автор: Optimus 30.10.2007, 17:57
Цитата(K0SHKA @  30.10.2007,  15:52 Найти цитируемый пост)
while(ch != 'q')

в этой сточке кроется ошибка:
если изначально в ch будет 'q' то код не выполнится, надо об этом позаботится, на пример до while() присвоить ch = 'R'

а так все работает и это уже радует, единственное что я бы изменил это вместо if-ов поставил бы switch()
Код

 initgraph(&gdriver,&gmode,PATHTODRIVER);
 errorcode = graphresult();
 if (errorcode != grOk)
 {
  printf("ERROR: %d",errorcode);
  getch();
 }

  circle(x,y, 30);
  ch = getch();

  do
  {
    switch (ch)
    {
      case 'w':
        up(x, y -= 10);
        break;
      case 'a':
        left(x -= 10, y);
        break;
      case 'd':
        rght(x += 10, y);
        break;
      case 's':
        down(x, y += 10);
        break;
    }

    ch = getch();
  } while (ch != 'q' && ch != 'Q');

outtext("END PROGRAMM FOR EXIT PRESS <ENTER>");
getch();
closegraph();


Цитата(K0SHKA @  30.10.2007,  15:52 Найти цитируемый пост)
код можно усовершенствовать пожолуйста напишите.

все зависит от задачи

P.S. если только начинаете программировать на C++, обратите больше внимание языку а не графике

Автор: K0SHKA 30.10.2007, 19:11
Спасибо за замечание обезательно уделю больше времени изучению самого языка.

Автор: Lithium777 21.7.2008, 20:35
А у мя проги с графикой на Turbo_C идут а в Borland C++ выдает ошибку: error BGI graphics not supported under Windows
Я уже дня два парюс с етим  smile , может кто знает в чом проблема?

Автор: Rififi 23.7.2008, 18:58
может кто знает в чом проблема?
в Windows. нужно её снести и поставить MS-DOS 6.22, тогда всё заработает 

Автор: Lithium777 24.7.2008, 00:33
и как тогда в досе Borland C++ запустить?

Автор: reuttorendan 21.1.2011, 20:38
Добрый день! В ВС выдает ошибку "NOT an exe  2.LIB"
Такое вылазиет когда <graphics.h> подключаю. 
#include <conio.h>
#include <time.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream.h>
#include <graphics.h>
#define PATHTODRIVER "d:\\BC\\bgi\\"
void main()
{
int gd=DETECT,gm;
initgraph(&gd,&gm,PATHTODRIVER);
line(50,60,100,120);
getch();
closegraph();
}


Подскажи в чем проблема

Автор: Modul 21.1.2011, 22:10
Цитата(K0SHKA @  24.10.2007,  14:49 Найти цитируемый пост)
решила изучать С++ начала с Borland C++ 3.1


Год выпуска: 1992

А зачем такое старье ?



Цитата(K0SHKA @  24.10.2007,  14:49 Найти цитируемый пост)
как мне нарисовать хотя бы примитивы(круг, линию,  и т.д)



Архангельский - Программирование в С++ Builder 6

c. 384 и дальше

Автор: xvr 24.1.2011, 15:03
Цитата(reuttorendan @  21.1.2011,  20:38 Найти цитируемый пост)
Подскажи в чем проблема 
В использовании мамонтов для обучения программированию. И еще в полуразложившемся состоянии этих мамонтов - переставьте BC (он у вас слегка побит молью  smile )


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)