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

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

06.01.2014, 00:03. Показов 1578. Ответов 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
33197 / 21493 / 8233
Регистрация: 22.10.2011
Сообщений: 36,888
Записей в блоге: 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
33197 / 21493 / 8233
Регистрация: 22.10.2011
Сообщений: 36,888
Записей в блоге: 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
33197 / 21493 / 8233
Регистрация: 22.10.2011
Сообщений: 36,888
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru