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

консольная графика - C++

Восстановить пароль Регистрация
 
pa3k
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 3
25.06.2013, 23:21     консольная графика #1
Помогите, пожалуйста, с графикой.
Не выводит на экран рисунок.


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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
# include <graphics.h>
# include <conio.h>
# include <iostream.h>
# include <stdlib.h>
 
# include <stdio.h>
 
//ввод массива
void generateArray(int array[])
{
  randomize();
  for(int i=0; i<20; i++)
    array[i]=random(15);
}
 
 
//рисовка элемента массива
void drawArray(int array[])
{
  int dr=DETECT, mod, err, k;
  initgraph(&dr,&mod, " ");
  err=graphresult();
  if(err)
  {
    cout<<"error initgraph "<<grapherrormsg(err);
    exit(1);
  }
  setcolor(15);
  for(int i=0; i<20; i++)
  {
   // cout<<array[i]<<" ";
    setfillstyle(SOLID_FILL, i+1);
    bar(20+30*i, 455-20*array[i], 50+30*i-1, 455);
  }
  //cout<<"\r\n";
  closegraph();
}
 
void showMessage(int x, int y, char str[])
{
  int dr=DETECT, mod, err, k;
  initgraph(&dr,&mod, " ");
  err=graphresult();
  if(err)
  {
    cout<<"error initgraph "<<grapherrormsg(err);
    exit(1);
  }
  setcolor(5);
  outtextxy(x, y, str);
  closegraph();
}
 
 
 
//вывод сообщения
void printText(int x, int y, char str[])
{
  gotoxy(x,y);
  cprintf(str);
}
 
 
//перестановка элементов
void exchangeValue(int *value1, int *value2)
 {
  int tmp = *value2;
  *value2 = *value1;
  *value1 = tmp;
}
 
 
//сортировка
void sortArray(int array[])
{
  for(int j=0; j<20; j++)
    for(int i=0; i<19; i++)
      if(array[i] < array[i+1])
      {
    drawArray(array);
    getch(); // пауза, для отображения процесса сортировки
    exchangeValue(&array[i], &array[i+1]);
      }
  drawArray(array);
  getch();
}
 
 
void setDefaultColor()
{
  textcolor(7);
  textbackground(0);
}
 
void setMarkerColor()
{
  textcolor(15);
  textbackground(4);
}
 
int menuSelect()
{
  int key; //код нажатой клавиши
 
  //строковый массив с названиями строк меню
  char *menuText[5]={
     "1. Mission:",
     "2. Original array",
     "3. Sorting an array",
     "4. Clear screen!",
     "5. exit!"
     };
 
  int pos=0; //начальная позиция планки = 0
  setMarkerColor();
  printText(2, 1, menuText[pos]); //установили планку на начальную строку
  setDefaultColor();
  for(int i=1; i<5; i++)
    printText(2, 1+i, menuText[i]);
 
 
  while(1)  //Цикл обработки нажатия клавиши
  {
    key=getch(); //Получим код клавиши
 
    switch(key)
    {
      case 80: { //Если была нажата стрелка вниз
         printText(2, 1+pos, menuText[pos]); //Восстанавливаем предыдущее местоположение в нормальный незакрашенный вид
         if (pos<4) pos++; //Если пункт не последний, спускаемся ниже
         else pos=0;       //Если пункт меню последний, переходим опять на первый
         setMarkerColor();
         printText(2, 1+pos, menuText[pos]); //Закрашиваем планочкой новое место
         setDefaultColor();
         break;
           }
 
 
      case 72: { //Если стрелка вверх
         printText(2, 1+pos, menuText[pos]);
         if (pos>0) pos--;
         else pos=4;
         setMarkerColor();
         printText(2, 1+pos, menuText[pos]);
         setDefaultColor();
         break;
           }
 
      case 13: return pos; //Если Enter
 
      //case 27: return 4;   //Если надо по Esc выйти 
    }
  }
}
 
 
void main()
{
  clrscr();
 
  int array1[20]; // исходный массив
  int array2[20]; // отсортированный массив
  int select;     // выбранный пункт меню
 
  while(1)
  {
    select=menuSelect();
    switch(select)
    {
      case 0: {
        printText(2, 10, "Given an array of numbers from 20 pieces. Arrange numbers in descending order.");
        printText(3, 11, "use graphics for visualize the process of arrangement.");
        getch();
        break;
          }
 
      case 1: {
        generateArray(array1);
        drawArray(array1);
        getch();
        break;
          }
 
      case 2: {
        for(int i=0; i<20; i++) { array2[i]=array1[i];
        sortArray(array2);
        break;
        getch(); }
        showMessage(310,30, "Sorting is over!");
          }
 
      case 3: {
        clrscr();
        break;
          }
 
      case 4: exit(0); //Выйти из программы
    }
  }
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2013, 23:21     консольная графика
Посмотрите здесь:

C++ Консольная программа
C++ Консольная программа...
консольная псевдографика C++
Упрощенная консольная графика и кодировка символов C++
C++ Консольная графика
Консольная графика в Ubuntu C++
C++ Консольная змейка
C++ Консольная графика
Консольная графика С++ C++
C++ Консольная "графика", игра "Тетрис". Фигуры перестают прорисовываться на определенном этапе
C++ Консольная псевдографика
Консольная графика. Как подключить <msoftcon>? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Khelleos
37 / 37 / 7
Регистрация: 13.05.2010
Сообщений: 283
Записей в блоге: 1
26.06.2013, 12:42     консольная графика #2
А графику правильно инициализировали, а то странные значения вы задали для драйвера и режима? Я точно не помню как правильно делать, поэтому скину то, что делал сам по лабораторной.
Вложения
Тип файла: rar IPPODROM.rar (1.2 Кб, 10 просмотров)
Yandex
Объявления
26.06.2013, 12:42     консольная графика
Ответ Создать тему
Опции темы

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