Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
pa3k
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 3
#1

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

25.06.2013, 23:21. Просмотров 829. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2013, 23:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос консольная графика (C++):

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

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

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

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

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

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

1
Khelleos
38 / 38 / 7
Регистрация: 13.05.2010
Сообщений: 283
Записей в блоге: 1
26.06.2013, 12:42 #2
А графику правильно инициализировали, а то странные значения вы задали для драйвера и режима? Я точно не помню как правильно делать, поэтому скину то, что делал сам по лабораторной.
0
Вложения
Тип файла: rar IPPODROM.rar (1.2 Кб, 13 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2013, 12:42
Привет! Вот еще темы с ответами:

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

консольная псевдографика - C++
как узнать текущее положение консольного курсора, не мыши, а именно того, который символы набирает )

Консольная игра в 21 - C++
Вообще это только реализация алгоритма игры, но работает. Если кому сильно заняться нечем-гляньте нормально получилось или говнокод? ...

Консольная псевдографика - C++
Доброго времени суток, форумчанин. Суть дела: классы должны реализовывать графические примитивы (круг, треугольник, квадрат), для...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru