На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> как нарисовать хоть что то в консоле , Тут попрасили помочь сыну в школу задание дали
    помню раньше рисовал в консоли! но не помню как :)) какие средства у нас есть ? Т.е. понятно openGL и виндовые средства рисования :) но было же проще как то.
      в Borland C++ можно рисовать с помощью средств библиотеки BGI ( graphics.h )
        а в VS?
          GDI функции.
            ммм... ладно попробую
              Или чтобы рисовать в текстовом режиме: функции установки курсора и вывода на консоль (псевдографики из ASCII).
                да не не псевдографика надо нарисовать как можно проще график синуса
                  Что-то вроде
                  ExpandedWrap disabled
                    #include <windows.h>
                    #include <cmath>
                     
                    const int N = 100;
                    const double PI = 3.141592;
                    const double T = 2; // число периодов
                     
                    TCHAR title[MAX_PATH];
                    POINT pts[N];
                     
                    int _tmain(int argc, _TCHAR* argv[])
                    {
                        GetConsoleTitle(title, MAX_PATH);
                        HWND hwnd = FindWindow(NULL, title);
                        HDC hdc = GetDC(hwnd);
                     
                        RECT rc;
                        GetClientRect(hwnd, &rc);
                     
                        HPEN hpen = CreatePen(PS_SOLID, 1, RGB(0xFF, 0, 0));
                        SelectObject(hdc, hpen);
                        
                        MoveToEx(hdc, 0, (rc.bottom - rc.top)/2, 0);
                        for(int i = 0; i < N ; ++i)
                        {
                            pts[i].x = (rc.right - rc.left)*i/100;
                            pts[i].y = (rc.bottom - rc.top)/2*(1.0 + sin(i*T*2.0*PI/N));
                        }
                        Polyline(hdc, pts, N);
                     
                        DeleteObject(hpen);
                        ReleaseDC(hwnd, hdc);
                        return 0;
                    }
                    LPBOY, работает только в линейке NT/2000/XP.
                      Почему?
                        Не знаю. Вопрос к Мелкософтам. Пробовал - в 9х ничерта не рисует. В ХП - рисует.
                          В консоли можно рисовать график синуса, помечая символами '*' точки на графике, отрисовывая с некоторым шагом.
                            Да многое можно. Но какое-то нехорошее чувство подсказывает, что великомудрый препод на самом деле просто хочет ДОСовскую прогу, и свято уверен, что это называется "консольной"... :whistle:
                              Доброе утро.
                              Немного другая проблема. :wall:

                              Есть dosпрога, написанная когда-то давно на Turbo C. Хочется запустить ее в Builder C++ 6.0.
                              ExpandedWrap disabled
                                #include <stdio.h>
                                #include <graphics.h>
                                #include <dos.h>
                                #include <math.h>
                                #include <conio.h>
                                main ()
                                {
                                FILE *in;
                                float z,h,x1,y1,x2,y2,x3,y3,r,t=0;
                                   clrscr ();
                                int Driver = DETECT, Mode;
                                initgraph (&Driver, &Mode, "C:\\BC31\\BGI\\");
                                setbkcolor (BLACK);
                                   printf ("\n What way do you want to enter data?");
                                P: printf ("\n To use keyboard press 1");
                                   printf ("\n To use entering from file press 2: ");
                                   scanf ("%f", &z);
                                   if (z==1) goto M;
                                   else if (z==2)
                                   {in=fopen ("source.txt", "r");
                                    fscanf (in, "%d", &r);
                                    if (r<0)
                                    {printf ("\n Error! Please, check your first number in file. \n It must be r>0");
                                     exit(1);}
                                     goto J;}
                                    else {clrscr(); printf ("\n Error! Invalid command"); goto P;}
                                M: printf ("\n Please, enter r=");
                                   scanf ("%d", &r);
                                   if (r<0)
                                    {clrscr();
                                     printf ("\n Error! Please, check r. \n It must be r>0");
                                     goto M;}
                                J: x1=300+r*sin(t);
                                   y1=200+r*cos(t);
                                   t=t+M_PI;
                                   x2=300+r*sin(t);
                                   y2=200+r*cos(t);
                                   t=t+M_PI/2;
                                   x3=300+r*sin(t);
                                   y3=200+r*cos(t);
                                   line (x1,y1,x2,y2);
                                   line (x1,y1,x3,y3);
                                   line (x2,y2,x3,y3);
                                   delay(250);
                                   clrscr();
                                   t=t+0.5;
                                   goto J;
                                   fclose (in);
                                }


                              Скачал файлик graphics.h. Кинул в папку include.
                              Функция initgraph теперь выглядит так: initgraph(&Driver, &Mode, "");
                              Пытаюсь скомпилить, появляется ошибка:
                              [C++ Fatal Error] graphics.h(10): F1003 Error directive: BGI graphics not supported under Windows
                              Как можно переделать прогу, чтобы она заработала. Рисовать нужно именно в консоли.
                              ОС WinXP SP2
                              компилятор C++ Builder 6.0
                                IGV, во-первых, незачем поднимать такие старые темы - для новых вопросов обычно создаются новые топики. Во-вторых, если используешь
                                Цитата IGV @
                                компилятор C++ Builder 6.0
                                то у тебя есть два варианта: либо рисовать непосредственно на канве формы (или одного из компонентов, специально для этого предназначенных - TPaintBox, TImage и т.д.), используя соответствующие методы и свойства (Pixels, LineTo, MoveTo, Arc и пр.), либо обратить внимание в сторону проекта Dos Graphics Migration Library.
                                  Синусоида в консоле:
                                  ExpandedWrap disabled
                                    #include <iostream>
                                    #include <vector>
                                    #include <algorithm>
                                    #include <functional>
                                    #include <iterator>
                                     
                                    #include <math.h>
                                     
                                     
                                    typedef std::vector<std::vector<char> > CharMatrix;
                                     
                                    class Shape
                                    {
                                    public:
                                      virtual ~Shape()
                                      {
                                      }
                                      void Release()
                                      {
                                        delete this;
                                      }
                                      virtual void Draw(CharMatrix* buf) = 0;
                                    };
                                     
                                    class Sin : public Shape
                                    {
                                      void Draw(CharMatrix* buf)
                                      {
                                        int Rows = buf->size();
                                        int Cols = (*buf)[0].size();
                                        const int Count = 1000;
                                        for (int i = 0 ; i < Count ; ++i)
                                        {
                                          int Col = int((1.0 * i * Cols) / Count);
                                          int Row = int((sin((12.56 * i) / Count) / 2.0 + 0.5) * Rows);
                                          (*buf)[Row][Col] = '*';
                                        }
                                      }
                                    };
                                     
                                    void main()
                                    {
                                      CharMatrix m(25, std::vector<char>(80, ' '));
                                      std::vector<Shape*> Shapes;
                                      Shapes.push_back(new Sin);
                                      std::for_each(Shapes.begin(), Shapes.end(),
                                        std::bind2nd(std::mem_fun1<void, Shape, CharMatrix*>(&Shape::Draw), &m));
                                      for (CharMatrix::const_iterator i = m.begin() ; i != m.end() ; ++i)
                                      {
                                        std::copy(i->begin(), i->end(), std::ostream_iterator<char>(std::cout));
                                        std::cout << std::endl;
                                      }
                                      std::for_each(Shapes.begin(), Shapes.end(),
                                        std::mem_fun<void, Shape>(&Shape::Release));
                                    }


                                  Аналогичная тема
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0367 ]   [ 16 queries used ]   [ Generated: 20.12.25, 09:31 GMT ]