Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 8

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

06.01.2014, 00:03. Показов 1593. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
uses graphabc,ABCButtons;
var p,c,i,n,y,g,f,d,o,u,h:longint;
l,s:string;
btn,h1,h2,h3,h4,h5,h6,h7,h8,h9,h0:buttonabc;
z:boolean;
procedure h1click;
begin
setFontSize(10);
textout(12,p,'1');
u:=1;
end;
 
procedure h2click;
begin
setFontSize(10);
textout(12,p,'2');
u:=2;
end;
 
procedure h3click;
begin
setFontSize(10);
textout(12,p,'3');
u:=3;
end;
 
procedure h4click;
begin
setFontSize(10);
textout(12,p,'4');
u:=4;
end;
 
procedure h5click;
begin
setFontSize(10);
textout(12,p,'5');
u:=5;
end;
 
procedure h6click;
begin
setFontSize(10);
textout(12,p,'6');
u:=6;
end;
 
procedure h7click;
begin
setFontSize(10);
textout(12,p,'7');
u:=7;
end;
 
procedure h8click;
begin
setFontSize(10);
textout(12,p,'8');
u:=8;
end;
 
procedure h9click;
begin
setFontSize(10);
textout(12,p,'9');
u:=9;
end;
 
procedure h0click;
begin
setFontSize(10);
textout(12,p,'0');
u:=0;
end;
begin
SetWindowCaption('ИГРА"УГАДАЙ ЧИСЛО"'); 
SetWindowSize(1366,766);
clearwindow(clfuchsia);
h1:=new ButtonABC(800,450,810,460,'1',clwhite);
h1.Left:=1200;
h1.Height:=50;
h1.Width:=50;
h2:=new ButtonABC(800,450,810,460,'2',clwhite);
h2.Left:=1250;
h2.Height:=50;
h2.Width:=50;
h3:=new ButtonABC(800,450,810,460,'3',clwhite);
h3.Left:=1300;
h3.Height:=50;
h3.Width:=50;
h4:=new ButtonABC(800,500,810,510,'4',clwhite);
h4.Left:=1200;
h4.Height:=50;
h4.Width:=50;
h5:=new ButtonABC(800,500,810,510,'5',clwhite);
h5.Left:=1250;
h5.Height:=50;
h5.Width:=50;
h6:=new ButtonABC(800,500,810,510,'6',clwhite);
h6.Left:=1300;
h6.Height:=50;
h6.Width:=50;
h7:=new ButtonABC(800,550,810,560,'7',clwhite);
h7.Left:=1200;
h7.Height:=50;
h7.Width:=50;
h8:=new ButtonABC(800,550,810,560,'8',clwhite);
h8.Left:=1250;
h8.Height:=50;
h8.Width:=50;
h9:=new ButtonABC(800,550,810,560,'9',clwhite);
h9.Left:=1300;
h9.Height:=50;
h9.Width:=50;
h0:=new ButtonABC(800,600,810,610,'0',clwhite);
h0.Left:=1250;
h0.Height:=50;
h0.Width:=50;
randomize;
i:=25; p:=45;y:=65;o:=7;
setfontsize(10);setfontcolor(clpurple); textout(1125,5,'у вас есть 7 попыток угадать число');
setfontsize(10);setfontcolor(clpurple);
textout(12,o,'попытка номер 1');
setFontSize(10);
SetFontColor(CLgreen);
TextOut(12,i,'Ввидите число'); 
h1.OnClick:=h1click;
h2.OnClick:=h2click;
h3.OnClick:=h3click;
h4.OnClick:=h4click;
h5.OnClick:=h5click;
h6.OnClick:=h6click;
h7.OnClick:=h7click;
h8.OnClick:=h8click;
h9.OnClick:=h9click;
h0.OnClick:=h0click;
c:=random(0,9);
if u=c then begin
setfontsize(25);setfontcolor(clred);   textout(12,y,'УРА! Вы выйграли c 1');textout(355,y,'попытки!');
setpenwidth(5);
for o:=1 to 50 do begin
setpencolor(rgb(o*10,o*30,o*50));
line(675,300,random(500,1000),random(30,650));
end; 
end else
if u>c then textout(12,y,'Нет, загаданое число меньше!')else 
if u<c then textout(12,y,'Нет, загаданое число больше!');
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.01.2014, 00:03
Ответы с готовыми решениями:

Сортировка в массиве: сначала числа меньше q, а потом больше или равные числу q
дан одномерный массив и число q отсортировать массив так чтобы сначала шли числа меньше q а потом больше или равные числу q

Как сделать так, чтобы вначале менялось значение массива, а потом только это значение проверялось?
Есть: $(document).ready(function() { document.reg.invite.form.submit.disabled = 1; }); var arr=; ...

Как сделать ,чтобы нажималась клавиша либо#108 или либо #121, а потом закрывалась программа совсем?
uses graph,crt,dos; var gd,gm,x,y:integer; k:char; begin gd:=detect; initgraph(gd,gm,'C:\tp\bgi'); setcolor(white); ...

6
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33394 / 21504 / 8236
Регистрация: 22.10.2011
Сообщений: 36,900
Записей в блоге: 12
06.01.2014, 02:18
Виктория329, смотри:

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
uses
  graphabc, ABCButtons;
var
  u, c, y, o, p, i: integer;
 
// Процедура проверки, не закончилась ли игра (либо выигрышем либо проигрышем игрока)
procedure check;
begin
  if u = c then // Введенная цифра = загаданной?
  begin
    setfontsize(25); // Сообщаем о выигрыше ...
    setfontcolor(clred);   
    // 8 - o - номер текущей попытки (изначально, например o = 7, значит, 8 - o = 1, первая попытка)
    textout(12, y, 'УРА! Вы выиграли c ' + IntToStr(8 - o) + ' попытки!');
    if o = 7 then // Это была первая попытка?
    begin
      setpenwidth(5); // Значит, рисуем особый рисунок
      for var j: integer := 1 to 50 do 
      begin
        setpencolor(rgb(j * 10, j * 30, j * 50));
        line(675, 300, random(500, 1000), random(30, 650));
      end; 
    end; // первая попытка
    Sleep(3000); // Ждем 3 секунды и завершаем программу...
    Halt;
  end 
 
  else // Нет, пользователь не отгадал число... Сообщаем, в какую сторону он ошибся
 
  if u > c then textout(12, y, 'Нет, загаданное число меньше!') 
  else textout(12, y, 'Нет, загаданное число больше!');
 
  // и увеличиваем позиции для вывода на следующей итерации
  inc(y, 40);
  inc(p, 40);
  dec(o); // Уменьшим количество оставшихся попыток
  
  if o = 0 then // Больше не осталось? Сообщаем пользователю, что он пролетел, число не угадано
  begin
    setfontsize(25);
    setfontcolor(clred);   
    textout(12, y, 'EPIC FAIL !!! Число не угадано !!!');
    Sleep(3000); // Ждем 3 секунды и уходим
    Halt;
  end;
end;
 
// Это будет общий обработчик нажатия на все кнопки, поскольку они все
// делают одно и то же, только с разными цифрами.
procedure buttonclick(Sender: ButtonABC);
begin
  setFontSize(10);
  textout(12, p, Sender.Text); // Sender - это экземпляр кнопки, которая была нажата
  // Соответственно, Sender.Text - это текст на нажатой кнопке
  u := StrToInt(Sender.Text);
 
  Check; // после того, как напечатали нажатую цифру в окне, вызываем процедуру проверки...
end;
 
var h : ButtonABC;
begin
  SetWindowCaption('ИГРА"УГАДАЙ ЧИСЛО"'); 
  SetWindowSize(1366, 766);
  clearwindow(clfuchsia);
 
  // Собственно, запоминать все кнопки не нужно.
  // Создали кнопку, назначили ей обработчик OnClickExt
  // (...Ext - чтобы можно было в обработчике узнать, какая именно кнопка нажата),
  // и создаем следующую кнопку ...
  h := new ButtonABC(1200, 450, 50, 50, '1', clwhite ); 
  h.OnClickExt := buttonclick;
  h := new ButtonABC(1250, 450, 50, 50, '2', clwhite );
  h.OnClickExt := buttonclick;
  h := new ButtonABC(1300, 450, 50, 50, '3', clwhite );
  h.OnClickExt := buttonclick;
  h := new ButtonABC(1200, 500, 50, 50, '4', clwhite );
  h.OnClickExt := buttonclick;
  h := new ButtonABC(1250, 500, 50, 50, '5', clwhite );
  h.OnClickExt := buttonclick;
  h := new ButtonABC(1300, 500, 50, 50, '6', clwhite );
  h.OnClickExt := buttonclick;
  h := new ButtonABC(1200, 550, 50, 50, '7', clwhite );
  h.OnClickExt := buttonclick;
  h := new ButtonABC(1250, 550, 50, 50, '8', clwhite );
  h.OnClickExt := buttonclick;
  h := new ButtonABC(1300, 550, 50, 50, '9', clwhite );
  h.OnClickExt := buttonclick;
  h := new ButtonABC(1250, 600, 50, 50, '0', clwhite );
  h.OnClickExt := buttonclick;
  
  randomize;
  c := random(0, 9); // загадываем число
  
  i := 25; p := 45;y := 65;o := 7; // выставляем начальные значения
  // и сообщаем пользователю то, что он должен знать
  setfontsize(10);setfontcolor(clpurple); textout(1125, 5, 'у вас есть 7 попыток угадать число');
  setfontsize(10);setfontcolor(clpurple);
  textout(12, o, 'попытка номер 1');
  setFontSize(10);
  SetFontColor(CLgreen);
  TextOut(12, i, 'Введите число');
 
  // Все, начальная настройка закончена, теперь ждем СОБЫТИЙ нажатия на кнопки, 
  // как только событие произошло - вызовется его обработчик, который уже будет проверять
  // результаты нажатия кнопок...
end.
0
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 8
06.01.2014, 15:27  [ТС]
большое спасибо а можно по подробней обьяснить плииз
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33394 / 21504 / 8236
Регистрация: 22.10.2011
Сообщений: 36,900
Записей в блоге: 12
06.01.2014, 15:45
Что именно непонятно?
0
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 8
06.01.2014, 22:07  [ТС]
что делает каждая процедура,и команды которых в моей проге нет

Добавлено через 4 минуты
и не понятна эта строка 12 'УРА! Вы выиграли c ' + IntToStr(8 - o) + ' попытки!' зачем здесь + для чего он служит и как понять 8 - o

Добавлено через 12 минут
и можно сделать чтоб введите число было ровно столько раз сколько раз проверяется разница с C как здесь

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
uses graphabc,ABCButtons;
var p,c,i,h,n,y,g,f,d,o,u,x:longint;
l,s:string;
btn:buttonabc;
begin
SetWindowCaption('ИГРА"УГАДАЙ ЧИСЛО"'); 
SetWindowSize(1366,766);
clearwindow(clfuchsia);
randomize;
c:=random(3,100); i:=25; p:=45;y:=65;o:=7;
setfontsize(10);setfontcolor(clpurple); textout(1125,5,'у вас есть 7 попыток угадать число');
for x:=1 to 7 do begin
Str(x,s);
setfontsize(10);setfontcolor(clpurple);
textout(12,o,'попытка номер'); textout(105,o,s);
setFontSize(10);
SetFontColor(CLgreen);
TextOut(12,i,'Ввидите число'); 
readln(l);
val(l,h,n);
SetFontColor(clCoral);
textout(12,p,l);
SetFontColor(CLblue);
if h=c then begin
setfontsize(25);setfontcolor(clred);   textout(12,y,'УРА! Вы выйграли c '); textout(328,y,s); textout(355,y,'попытки!');
setpenwidth(5);
for o:=1 to 50 do begin
setpencolor(rgb(o*10,o*30,o*50));
line(675,300,random(500,1000),random(30,650));
end; 
 break;end else
if h>c then textout(12,y,'Нет, загаданое число меньше!')else 
if h<c then textout(12,y,'Нет, загаданое число больше!');
i:=i+90;
p:=p+90;
y:=y+90;
o:=o+90;
if x=7 then begin setfontsize(25);setfontcolor(clred);
textout(12,650,'Попытки кончились! Вы проиграли!');
end;
end;
end.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33394 / 21504 / 8236
Регистрация: 22.10.2011
Сообщений: 36,900
Записей в блоге: 12
06.01.2014, 22:29
Я добавил комментарии в предыдущий свой пост...
Цитата Сообщение от Виктория329 Посмотреть сообщение
можно сделать чтоб введите число было ровно столько раз сколько раз проверяется разница с C
Можно. Добавь вывод этого сообщения в процедуру Check в районе 33-ей строки кода...
1
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 8
07.01.2014, 01:57  [ТС]
спасибки большое за коментарии теперь всё понятно СПАСИБО!!!!!!!!!!!!!

Добавлено через 1 час 14 минут
и ещё один вопрос если есть процедура которая завершает программу(Halt) то может есть которая запускает её заново???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.01.2014, 01:57
Помогаю со студенческими работами здесь

Сделать цикл, который сравнивает сначала 0 и 3 элементы, потом 3 и 6 потом 9 и 12 и т.д.
есть массив: 25 3 27 24 4 1 24 2 1 5 10 3 5 12 3 5 11 3 19 20 21 10 11 12 1 2 3 нужно сделать цикл,который сравнивает сначала 0 и 3...

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

Как сделать, чтобы информация в посте выводилась только тогда, когда она заполнена?
В шаблоне сайта недвижимости при создании поста есть поля для ввода информации по типу:&quot;площадь&quot;,&quot;кол-во комнат&quot;, но...

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
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