Нужна ваша помощь! Программа «Угадай число» делает один проход и дальше не работает. Пытаюсь зациклить, но выводится ошибка. Как правильно оформить это все в цикл?
procedure TForm1.FormActivate(Sender: TObject); begin MEdit.SetFocus; Label1.Caption:='Сыграем в игру?' end;
procedure TForm1.BbRunClick(Sender: TObject); begin a:=InputBox('Диапазон чисел’,'Введите количество чисел',''); n:=StrToInt(a); n:=random(n+1); Label1.Caption:='Я запомнил число! Сумеешь угадать?'; MEdit.SetFocus; BbRun.Visible:=False; BbResult.Visible:=True; end;
procedure TForm1.BbResultClick(Sender: TObject); begin if MEdit.Text='' then exit; i:=StrToInt(Trim(MEdit.Text)); if i>n then begin Label1.Caption:='Введенное число больше моего! Попробуй еще раз!'; MEdit.Clear; MEdit.SetFocus; end; else if i<n then begin Label1.Caption:='Введенное число меньше моего! Попробуй еще раз!'; MEdit.Clear; MEdit.SetFocus; end else begin Label1.Caption:='Поздравляю!!!! Ты угадал!!!'; b:=InputBox('Сообщение',' Повторить?',''); if InputBox.Text:='äà' then begin bbResult.Visible:=False; bbRun.Visible:=True; end else Form1.Close; end; end;
procedure TForm1.BbCloseClick(Sender: TObject); begin Form1.Close; end; end.
Reptile
2.11.2006 18:58
Не пойму что нужно зацыклить, ведь сравнение должно происходить каждый раз после нажатия на кнопку BbRun ?Что именно пытаешся зацыклить?
Nataly
3.11.2006 3:05
Сравнение то поисходит, только всего лишь один раз.. выдаст "больше" или "меньше" и дальше не идет..
Michael_Rybak
3.11.2006 3:21
Выложи весь проект.
мисс_граффити
3.11.2006 3:27
Оно ведь при введении 1 числа и должно 1 раз проверяться. То есть человек ввел предположение, нажал на кнопку и получил результат....
Nataly
3.11.2006 3:35
Нет, прога должна продолжать работу, пока пользователь не отгадает загаданное число.. не факт, что он сделает это спервого раза..
Гость
3.11.2006 3:48
Что делать, если размер загружаемых файлов превышает допустимое значение?
volvo
3.11.2006 3:52
Запаковать проект в архив (без EXE-шника, разумеется), и присоединить...
Nataly
3.11.2006 4:03
Он у меня 6кб весит, но все равно вылазиет ошибка!
Pautina
3.11.2006 4:20
Посмотрите, плиз!
volvo
3.11.2006 5:19
У тебя просто не генерируется случайное число (точнее, все время N = 0), поэтому программа тебе постоянно выдает "Введенное число больше моего! Попробуй еще раз!", правда?
Попробуй добавить Randomize:
a:=InputBox('Диапазон чисел','Введите количество чисел',''); randomize; n:=random(StrToInt(a)+1);
, тогда N будет отличаться от нуля...
Pautina
3.11.2006 14:37
Спасибо огромное!!! РАБОТАЕТ!!
Pautina
24.11.2006 3:40
Здравствуйте, снова нужна ваша помощь! Необходимо модифицировать прогу. В местах, отмеченных !!!, необходимо поставить условие, что если юзер правильно нажимает на кнопку, текст окрашивается в зеленый цвет, если ошибка – в красный! Подскажите, пожалуйста, как это можно осуществить! Заранее огромное спасибо!
WALdemar
24.11.2006 22:00
нужно просто добавить в начале каждого условия
label1.Color:=clred
- это для неправильного и
label1.Color:=clgreen
для верного решения. И не забыть указать в FormActivate
Label1.caption:=clblack
Pautina
25.11.2006 4:12
не получается.. к примеру прога выдает "введенное чсло больше", тогда юзер должен нажать на одну из кнопочек > или <. Если нажал правильно - текст выделяется зеленым цветом, неправильно - красным. Возникает вопрос: как я могу засунуть одну процедуру(нажатие клавиши <,>) в другую?
мисс_граффити
25.11.2006 14:49
нажатие клавиши - это ведь обработчик события, так? может, проще в него засунуть окрашивание? прямо при выводе проверять на правильность и окрашивать...
Pautina
25.11.2006 16:31
проблема в том, как проверить эту правильность..
мисс_граффити
25.11.2006 19:22
так, я запуталась. что юзер должен обозначать нажатием на кнопку со знаками больше/меньше? то есть когда надо нажимать на какую и какое нажатие считается правильным?
WALdemar
25.11.2006 22:19
а зачем вообще эти кнопки - Больше и Меньше? По логике, число нужно угадывать так: Например, загадано 63, диапазон от 1 до 100.
50? -нет, больше 75? -нет, меньше 63? -да, правильно. Я такую лабу еще на первом курсе делал, по математической логике. вот ее маленький кусок. Вам это надо?
n:=(random(100)); writeln(n); writeln('vvedite chislo ot 1 do 100'); i:=1; repeat begin writeln('popitka ',i); inc(i); readln(chislo); if chislo=n then writeln('vi ugadali') else if chislo>n then writeln('>') else writeln('<'); end; until chislo=n;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.