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

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

Войти
Регистрация
Восстановить пароль
 
bacekk
2 / 2 / 0
Регистрация: 30.11.2010
Сообщений: 89
#1

Отклик на стрелки - C++

13.10.2012, 16:35. Просмотров 467. Ответов 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
66
67
 #include<conio.h>
 #include<graphics.h>
 #include<process.h>
 #include<stdio.h>
 #include<dos.h>
 #include<stdlib.h>
 
 
 main()
{
 
   int gdriver = VGA, gmode = VGAMED, errorcode;
   int x1,x2,x3,x4,y1,y2,y3,y4,i;
 
   initgraph(&gdriver, &gmode, "C:\BORLANDC\BGI" );
 
 
   errorcode = graphresult();
   if (errorcode != grOk)
   {
      printf("Graphics error: %s\n", grapherrormsg(errorcode));
      printf("Press any key to halt:");
      getch();
      exit(1);
   }
 
   setviewport(50, 50, getmaxx()-50, getmaxy()-50, 1);
   clearviewport();
   x1=404;y1=210;
   x2=494;y2=224;
   x3=508;y3=194;
   x4=474;y4=138;
 
 
   // TETR--
   setcolor(12);
   line(x1,y1,x2,y2);
   line(x1,y1,x3,y3);
   line(x2,y2,x3,y3);
 
   line(x1,y1,x4,y4);
   line(x2,y2,x4,y4);
   line(x3,y3,x4,y4);
 
   i=8
   ;
  while(i<16)
  {
   i++;
   getch();
   x1=x1*0.8 ;x2=x2*0.8;x3=x3*0.8;x4=x4*0.8;
   y1=y1*0.8;y2=y2*0.8;y3=y3*0.8;y4=y4*0.8;
 
   setcolor(i);
 
   line(x1,y1,x2,y2);
   line(x1,y1,x3,y3);
   line(x2,y2,x3,y3);
 
   line(x1,y1,x4,y4);
   line(x2,y2,x4,y4);
   line(x3,y3,x4,y4);
}
 
   closegraph();
   return 0;
   }
Вопрос следующий: почему при выполнении программы на нажатие стрелки появляется стразу две фигуры, а не одна, как на всех остальных клавишах. Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2012, 16:35     Отклик на стрелки
Посмотрите здесь:

C++ Стрелки часов
движение стрелки C++
Считывание нажатий на стрелки C++
Стрелки после cout и cin C++
C++ Странная реакция на нажатие стрелки
C++ Заполнение матрицы против часовой стрелки
C++ Координаты наконечника стрелки
Реализация управления клавишами(стрелки) C++
Стрелки в меню C++
Повернуть матрицу против часовой стрелки C++
Поворот матрицы против часовой стрелки C++
Поворот матрицы по часовой стрелки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexcoder
1449 / 663 / 88
Регистрация: 03.06.2009
Сообщений: 3,413
Завершенные тесты: 1
13.10.2012, 19:29     Отклик на стрелки #2
Не проверял, но есть подозрение: getch при нажатии стрелок, функциональных и расширенных клавиш возвращает сначала 0, а затем (при следующем вызове) скан-код нажатой клавиши.
Попробовать getch заменить на:
C
1
if(getch()==0)getch();
bacekk
2 / 2 / 0
Регистрация: 30.11.2010
Сообщений: 89
13.10.2012, 19:42  [ТС]     Отклик на стрелки #3
alexcoder, спасибо, видимо так и есть!
Yandex
Объявления
13.10.2012, 19:42     Отклик на стрелки
Ответ Создать тему
Опции темы

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