Нужна ваша помощь! Программа «Угадай число» делает один проход и дальше не работает. Пытаюсь зациклить, но выводится ошибка. Как правильно оформить это все в цикл?
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.
Оно ведь при введении 1 числа и должно 1 раз проверяться. То есть человек ввел предположение, нажал на кнопку и получил результат....
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
У тебя просто не генерируется случайное число (точнее, все время N = 0), поэтому программа тебе постоянно выдает "Введенное число больше моего! Попробуй еще раз!", правда?
Попробуй добавить Randomize:
a:=InputBox('Диапазон чисел','Введите количество чисел',''); randomize; n:=random(StrToInt(a)+1);
Здравствуйте, снова нужна ваша помощь! Необходимо модифицировать прогу. В местах, отмеченных !!!, необходимо поставить условие, что если юзер правильно нажимает на кнопку, текст окрашивается в зеленый цвет, если ошибка – в красный! Подскажите, пожалуйста, как это можно осуществить! Заранее огромное спасибо!
не получается.. к примеру прога выдает "введенное чсло больше", тогда юзер должен нажать на одну из кнопочек > или <. Если нажал правильно - текст выделяется зеленым цветом, неправильно - красным. Возникает вопрос: как я могу засунуть одну процедуру(нажатие клавиши <,>) в другую?
нажатие клавиши - это ведь обработчик события, так? может, проще в него засунуть окрашивание? прямо при выводе проверять на правильность и окрашивать...
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
так, я запуталась. что юзер должен обозначать нажатием на кнопку со знаками больше/меньше? то есть когда надо нажимать на какую и какое нажатие считается правильным?
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
а зачем вообще эти кнопки - Больше и Меньше? По логике, число нужно угадывать так: Например, загадано 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;