Форум программистов, компьютерный форум CyberForum.ru

Графика в C++ - C++

Восстановить пароль Регистрация
 
Alladin
0 / 0 / 0
Регистрация: 12.05.2009
Сообщений: 33
04.11.2009, 06:57     Графика в C++ #1
В общем, вот картинка!
http://pic.ipicture.ru/uploads/09110...GM1TGWpL5w.png
Задание состоит в том, чтобы чистить экран половинками в двух направлениях.
На первом этапе нужно заполнить экран символами со случайными цветами (т.е. пробелами). Затем чистить экран согласно схеме. Затем перед очисткой экрана заполнить его случайным образом и снова почистить.

Помогите советами, элементами кода... чем можно, пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2009, 06:57     Графика в C++
Посмотрите здесь:

C++ Графика
C++ ГРАФИКА
Графика в С++ C++
C++ Графика
C++ графика в VS
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
04.11.2009, 08:00     Графика в C++ #2
ну вот для начала
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// устанавливает цвет текста и подложки в консоли
 
system( "color 20" );
 
2 - значение цвета фона, 0 - значение цвета текста
 
Расшифровка цветов:
0 = Black 8 = Gray
1 = Blue 9 = Light Blue
2 = Green A = Light Green
3 = Aqua B = Light Aqua
4 = Red C = Light Red
5 = Purple D = Light Purple
6 = Yellow E = Light Yellow
7 = White F = Bright White
 
 
//---- уствановка цвета вводимого текста и фона подним
 
#include <iostream>
#include <Windows.h>
using namespace std;
 
enum ConsoleColor
{
    Black         = 0,
        Blue          = 1,
        Green         = 2,
        Cyan          = 3,
        Red           = 4,
        Magenta       = 5,
        Brown         = 6,
        LightGray     = 7,
        DarkGray      = 8,
        LightBlue     = 9,
        LightGreen    = 10,
        LightCyan     = 11,
        LightRed      = 12,
        LightMagenta  = 13,
        Yellow        = 14,
        White         = 15
};
 
// устанавливает цвет текста и подложки в консоли
void SetColor(int text, int background)
{
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}
 
int main()
{
   for (int i = 0; i < 15; i++)
   {
      for (int j = 0; j < 15; j++)
      {
         SetColor( i, Red);
         cout << "       Hello!!!!      ";
         SetColor( 15, j);
         cout << "   [" << i << "][" << j << "]\n";
      }
   }
   system("PAUSE");
   return 0;
}
сослучайным заполнение надеюсь вопросов нет, про random мног очего тут написанно, но навсякий пожарный
C++
1
2
3
4
#include <time.h>
srand (unsigned (time(0)));
 
int i=rand()%6+1; //рандомное число от 1 до 6
будешь выбирать из указанных цветов
Alladin
0 / 0 / 0
Регистрация: 12.05.2009
Сообщений: 33
24.11.2009, 11:53  [ТС]     Графика в C++ #3
Я снова с Вами!
Я не понимаю, как вообще дать понять программе, что нужно чистить по диагонали...
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
24.11.2009, 13:49     Графика в C++ #4
так что ли?
в примере закращивается часть экрана по диагонали без gotoXY, тока под экран надо подстраивать,
но идея надеюсь ясна
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <Windows.h>
using namespace std;
 
enum ConsoleColor
{
    Black         = 0,
    Blue          = 1,
    Green         = 2,
    Cyan          = 3,
    Red           = 4,
    Magenta       = 5,
    Brown         = 6,
    LightGray     = 7,
    DarkGray      = 8,
    LightBlue     = 9,
    LightGreen    = 10,
    LightCyan     = 11,
    LightRed      = 12,
    LightMagenta  = 13,
    Yellow        = 14,
    White         = 15
};
 
// устанавливает цвет текста и подложки в консоли
void SetColor(int text, int background)
{
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}
int main()
{
 
    // устанавливает цвет текста и подложки в консоли
    SetColor(LightGray,LightGray);
    for (int i = 0; i < 20; i++)
    {
        for (int j = 0; j < i; j++)         std::cout << "  ";          
        std::cout<<std::endl;
    }
    SetColor(White,Black);
    system("PAUSE");
    return 0;
}
Alladin
0 / 0 / 0
Регистрация: 12.05.2009
Сообщений: 33
26.11.2009, 08:09  [ТС]     Графика в C++ #5
Ну вот... для основы, что ли. Написал прогу. Тут у нас экран чистится от угла до угла по диагонали.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <math.h>
#include <dos.h>
class CClock
{
  private:
    int x0, y0;
    int **v;
    int n,m;
    int fon;
  public:
    ~CClock();
    CClock(int x0, int y0, int n, int m, int fon);
    void Init();
    void Picture();
    void Next();
    void PictureBack();
};
 
CClock::CClock(int x0, int y0, int n, int m, int fon)
{
  this->x0=x0;
  this->y0=y0;
  this->n=n;
  this->m=m;
  this->fon=fon;
  v=new int *[n];
  for (int i=0; i<n; i++) v[i]=new int[m];
  Init();
}
CClock::~CClock()
{
  for (int i=0; i<n; i++) delete v[i];
  delete v;
}
 
void CClock::Init()
{
  int i,j;
  for (i=0; i<n; i++)
    for (j=0; j<m; j++)
    v[i][j]=fon;
}
 
void CClock::Picture()
{
  int i,j,k;
  for (k=0;k<n+m-1;k++)
  for (i=0;i<n-x0;i++){
    for (j=0;j<m-y0;j++){
      textbackground(v[i][j]);
         if (i==k-j) window (n-i, m-j, n-i, m-j);
    clrscr();
    }
  }
}
 
void CClock::PictureBack()
{
  int i,j,k;
  for (k=1;k<n+m-1;k++)
  for (i=1;i<n-x0+1;i++){
    for (j=0;j<m-y0;j++){
      textbackground(v[i][j]);
        if (i==k-j) window (x0+i,m-j,x0+i,m-j);
    clrscr();
    }
  }
}
 
void CClock::Next()
{
  int i,j;
  for (i=0;i<n;i++)
    for (j=0;j<m;j++) v[i][j]=random(16);
}
 
int main()
{
  textmode(C4350);
  textbackground(7);
  clrscr();
  _setcursortype(0);
  CClock z(5,5,40,40,10);
  z.Picture();
  randomize();
  while (!kbhit()){
    z.Next();
    z.Picture();
    z.PictureBack();
    delay(50);
    }
    getch();
    _setcursortype(2);
    return(0);
}
А механизм для моей задачи я пока не могу придумать
Alladin
0 / 0 / 0
Регистрация: 12.05.2009
Сообщений: 33
27.11.2009, 04:21  [ТС]     Графика в C++ #6
Нужно как-то менять for (...i...), for (...j...)...
Подскажите, пожалуйста!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2010, 12:33     Графика в C++
Еще ссылки по теме:

графика C++
Графика на С++ C++
Графика в с++ C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ZEUSRU
Сообщений: n/a
08.04.2010, 12:33     Графика в C++ #7
скажыте пожалуста ето в Visual C++ потому што я програмирую в Borland C++ v3.1
Yandex
Объявления
08.04.2010, 12:33     Графика в C++
Ответ Создать тему
Опции темы

Текущее время: 12:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru