Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.02.2014
Сообщений: 2
1

Изменить программу с часами (Добавить возможность изменения скорости стрелок)

26.02.2014, 22:47. Показов 599. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Прошу помочь мне сделать следующие изменения в программе "часы". Работает по принципу:
1. Вводишь начальные данные (часы, минуты, секунды)
2. Нажимаешь Enter что бы запустить
3. Нажимаешь любую кнопку что бы выйти

Собственно нужно добавить возможность ускорения и замедления движения стрелок при помощи нажатия клавиш "+" и "-". Я так понимаю надо менять по нажатию клавиш значение S1 в функции Delay, но путаюсь с until и repeat...(( Помогите плиз правильно дополнить код.


Заранее большое спасибо!!!

Pascal
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
program clock;
uses
    Graph, Crt, DOS;
var
   x1,x2,x3,y1,y2,y3,xt, yt:integer;
   m1,s1    :integer;
   n:real;
   color, i,b:byte; 
   s:string;        
   Gm, Gd:Integer;
   c,m,h, hund:word;
 
   Procedure Opredel(var x1,y1,x2,y2,x3,y3:integer;var c,m,h:word);
   begin
   x1:=115+round(90*sin((c*6+270)*Pi/180));
   y1:=115-round(90*cos((c*6+270)*Pi/180));
   x2:=115+round(60*sin((m*6+270)*Pi/180));
   y2:=115-round(60*cos((m*6+270)*Pi/180));
   x3:=115+round(40*sin((h*6+270)*Pi/180));
   y3:=115-round(40*cos((h*6+270)*Pi/180));
   end;
 
   Procedure Ris(var x1,y1,x2,y2,x3,y3:integer);
   begin
   SetColor(red);
       SetLineStyle(0,0,3);
       MoveTo(120,120);
       LineTo(x1,y1);
 
       SetColor(White);
       SetLineStyle(0,0,3);
       MoveTo(120,120);
       LineTo(x2,y2);
 
       SetColor(Green);
       setlineStyle(0,0,3);
       MoveTo(120,120);
       LineTo(x3,y3);
   end;
 
   Procedure Ster(var x1,y1,x2,y2,x3,y3:integer);
   begin
   SetColor(BLACK);
       SetLineStyle(0,0,3);
       MoveTo(120,120);
       LineTo(x1,y1);
       SetLineStyle(0,0,3);
       MoveTo(120,120);
       LineTo(x2,y2);
       setlineStyle(0,0,3);
       MoveTo(120,120);
       LineTo(x3,y3);
   end;
 
 
[B]BEGIN[/B]
ClrScr;
     s1:=1000;
     Writeln('Введите данные:');
     Write("Часы = ");Readln(h);
     Write("Минуты = ");Readln(m);
     Write("Секунды = ");Readln(c);
 
     h:=((h*5)+16) + (m div 12);
     m:=m+16;
     c:=c+16;
 
 
     Gd:=Detect;
     InitGraph(Gd,Gm,'');
     If GraphResult <> grOk then
        Halt(1);
     cleardevice;
     for i:=1 to 12 do begin   
       xt:=115 + round(100*sin(6.28*30*i/360));
       yt:=115 - round(100*cos(6.28*30*i/360));
 
       MoveTo(xt,yt);
       SetColor(lightBlue);
       SetTextStyle(DefaultFont, HorizDir, 1);
       SetTextJustify(LeftText, TopText);
       str(i,s);
       OutTextXY(xt,yt,s);
     end;
 
 
 
     Opredel(x1,y1,x2,y2,x3,y3,c,m,h);
     Ris(x1,y1,x2,y2,x3,y3);
     repeat
     until ReadKey = #13;
 
       repeat
 
       Ster(x1,y1,x2,y2,x3,y3);
 
       c:=c+1;
       if c = 76 then m := m+1;
       if c = 76 then c := 16;
       if ((m-16) mod 12 = 0) and (m1 = 0) then begin h := h+1; m1:=1; end;
       if (m-16) mod 12 <> 0 then m1:=0;
       if m = 76 then m := 16;
       if h = 28 then h := 16;
 
       Opredel(x1,y1,x2,y2,x3,y3,c,m,h);
 
       Ris(x1,y1,x2,y2,x3,y3);
 
       Delay(s1);
 
     until KeyPressed;
 
     Readln;
     CloseGraph
 
[B]END.[/B]
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.02.2014, 22:47
Ответы с готовыми решениями:

Добавить в приложение возможность изменения цвета фона
Дана программа, которая вызывает окно, в котором содержится информация о главной загрузочной...

Как добавить возможность изменения размера формы без бордюра
Как добавить возможность изменения размера формы пользователем, когда FormBorderStyle = None?

Класс Triangle, добавить возможность изменения одной из сторон треугольника
Есть класс треугольник. Как добавить возможность изменения одной из сторон треугольника? Условие...

Ищу программу изменения скорости мыши
чтобы оперативно меняла скорость мышки В идеале по комбинации клавиш и кручением колеса....

2
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
27.02.2014, 09:44 2
Pascal
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
program clock;
uses
    Graph, Crt, DOS;
var
   x1,x2,x3,y1,y2,y3,xt, yt:integer;
   m1,s1    :integer;
   n:real;
   color, i,b:byte; 
   s:string;        
   Gm, Gd:Integer;
   c,m,h, hund:word;
   key : Char;
 
   Procedure Opredel(var x1,y1,x2,y2,x3,y3:integer;var c,m,h:word);
   begin
   x1:=115+round(90*sin((c*6+270)*Pi/180));
   y1:=115-round(90*cos((c*6+270)*Pi/180));
   x2:=115+round(60*sin((m*6+270)*Pi/180));
   y2:=115-round(60*cos((m*6+270)*Pi/180));
   x3:=115+round(40*sin((h*6+270)*Pi/180));
   y3:=115-round(40*cos((h*6+270)*Pi/180));
   end;
 
   Procedure Ris(var x1,y1,x2,y2,x3,y3:integer);
   begin
   SetColor(red);
       SetLineStyle(0,0,3);
       MoveTo(120,120);
       LineTo(x1,y1);
 
       SetColor(White);
       SetLineStyle(0,0,3);
       MoveTo(120,120);
       LineTo(x2,y2);
 
       SetColor(Green);
       setlineStyle(0,0,3);
       MoveTo(120,120);
       LineTo(x3,y3);
   end;
 
   Procedure Ster(var x1,y1,x2,y2,x3,y3:integer);
   begin
   SetColor(BLACK);
       SetLineStyle(0,0,3);
       MoveTo(120,120);
       LineTo(x1,y1);
       SetLineStyle(0,0,3);
       MoveTo(120,120);
       LineTo(x2,y2);
       setlineStyle(0,0,3);
       MoveTo(120,120);
       LineTo(x3,y3);
   end;
 
 
BEGIN
ClrScr;
     s1:=1000;
     Writeln('Введите данные:');
     Write("Часы = ");Readln(h);
     Write("Минуты = ");Readln(m);
     Write("Секунды = ");Readln(c);
 
     h:=((h*5)+16) + (m div 12);
     m:=m+16;
     c:=c+16;
 
 
     Gd:=Detect;
     InitGraph(Gd,Gm,'');
     If GraphResult <> grOk then
        Halt(1);
     cleardevice;
     for i:=1 to 12 do begin   
       xt:=115 + round(100*sin(6.28*30*i/360));
       yt:=115 - round(100*cos(6.28*30*i/360));
 
       MoveTo(xt,yt);
       SetColor(lightBlue);
       SetTextStyle(DefaultFont, HorizDir, 1);
       SetTextJustify(LeftText, TopText);
       str(i,s);
       OutTextXY(xt,yt,s);
     end;
 
 
 
     Opredel(x1,y1,x2,y2,x3,y3,c,m,h);
     Ris(x1,y1,x2,y2,x3,y3);
     repeat
     until ReadKey = #13;
 
     repeat
 
       Ster(x1,y1,x2,y2,x3,y3);
 
       c:=c+1;
       if c = 76 then m := m+1;
       if c = 76 then c := 16;
       if ((m-16) mod 12 = 0) and (m1 = 0) then begin h := h+1; m1:=1; end;
       if (m-16) mod 12 <> 0 then m1:=0;
       if m = 76 then m := 16;
       if h = 28 then h := 16;
 
       Opredel(x1,y1,x2,y2,x3,y3,c,m,h);
 
       Ris(x1,y1,x2,y2,x3,y3);
 
       Delay(s1);
       if KeyPressed then
         begin
           key:=ReadKey;
           case key of
           '+': inc(s1,100);
           '-': dec(s1,100);
           end;
         end;
     until Key=#27;  //Пока не нажали Esc
 
     Readln;
     CloseGraph
 
END.
0
0 / 0 / 0
Регистрация: 26.02.2014
Сообщений: 2
27.02.2014, 21:43  [ТС] 3
Dmitrinik, Не работает... в том числе и выход из программы по нажатию клавиши Esc.. ((

Добавлено через 2 часа 14 минут
Вроде как то сделал) Всем спасибо кто попытался!
0
27.02.2014, 21:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2014, 21:43
Помогаю со студенческими работами здесь

Расчет изменения угловой скорости\линейной скорости центра масс полигона
Подскажите как и какие требуется применить физические законы для решения этой задачи. Необходимо...

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

Добавить в программу возможность сортировки данных
Добавить в программу возможность сортировки данных. В мою программу записывается данные о радиусе и...

Добавить возможность передачи параметров в программу через командную строку
Добавьте в код пожалуйста нужный код для того чтобы я могу введя путь открыть экзешник данной...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru