Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 3

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

25.06.2013, 23:21. Показов 1611. Ответов 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); //Выйти из программы
    }
  }
};
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.06.2013, 23:21
Ответы с готовыми решениями:

Консольная графика С++
Сейчас пишу для экзамена покер на одного игрока. И столкнулся проблемой, при рисовании карт, они у меня рисуются одна под одной и по этому...

Консольная графика
Доброго времени суток. Подскажите, как подключить консольную графику в visual studio 2013?

Консольная графика
Наверное будет звучать грубо, но как мне нарисовать в консоли квадратик, выбрав его цвет и размер?

1
39 / 39 / 24
Регистрация: 13.05.2010
Сообщений: 282
Записей в блоге: 1
26.06.2013, 12:42
А графику правильно инициализировали, а то странные значения вы задали для драйвера и режима? Я точно не помню как правильно делать, поэтому скину то, что делал сам по лабораторной.
Вложения
Тип файла: rar IPPODROM.rar (1.2 Кб, 20 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.06.2013, 12:42
Помогаю со студенческими работами здесь

Консольная графика
Здравствуйте, я написал этот код в Борланд С++ (пример нашел в книге): #include &lt;graphics.h&gt; #include &lt;stdlib.h&gt; #include...

Упрощенная консольная графика и кодировка символов
Всем привет! Сразу к делу! У Лфоре есть листинг программы horse.cpp. Так вот вродебы нащел листинг программы, нужные библиотеки для...

Консольная графика. Как подключить <msoftcon>?
В Лафоре есть задание по консольной графике. Я начал недавно, не пинайте сильно. Как подключить &lt;msoftcon&gt;?

Консольная "графика", игра "Тетрис". Фигуры перестают прорисовываться на определенном этапе
Доброго времени! Написал на днях тетрис (в консоле) с использованием, кажется это называется WinApi. В цикле вызывается функция...

консольная утилита
Программа представляет собой консольную утилиту. Настройка работы программы осуществляется путем передачи аргументов в строке запуска....


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru