Нужна ваша помощь! Программа «Угадай число» делает один проход и дальше не работает. Пытаюсь зациклить, но выводится ошибка. Как правильно оформить это все в цикл?
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.
Не пойму что нужно зацыклить, ведь сравнение должно происходить каждый раз после нажатия на кнопку BbRun ?Что именно пытаешся зацыклить?
Сравнение то поисходит, только всего лишь один раз..
выдаст "больше" или "меньше" и дальше не идет..
Выложи весь проект.
Оно ведь при введении 1 числа и должно 1 раз проверяться.
То есть человек ввел предположение, нажал на кнопку и получил результат....
Нет, прога должна продолжать работу, пока пользователь не отгадает загаданное число.. не факт, что он сделает это спервого раза..
Что делать, если размер загружаемых файлов превышает допустимое значение?
Запаковать проект в архив (без EXE-шника, разумеется), и присоединить...
Он у меня 6кб весит, но все равно вылазиет ошибка!
Посмотрите, плиз!
Прикрепленные файлы
____________.rar ( 6.91 килобайт )
Кол-во скачиваний: 187
У тебя просто не генерируется случайное число (точнее, все время N = 0), поэтому программа тебе постоянно выдает "Введенное число больше моего! Попробуй еще раз!", правда?
Попробуй добавить Randomize:
a:=InputBox('Диапазон чисел','Введите количество чисел','');, тогда N будет отличаться от нуля...
randomize;
n:=random(StrToInt(a)+1);
Спасибо огромное!!! РАБОТАЕТ!!
Здравствуйте, снова нужна ваша помощь! Необходимо модифицировать прогу. В местах, отмеченных !!!, необходимо поставить условие, что если юзер правильно нажимает на кнопку, текст окрашивается в зеленый цвет, если ошибка – в красный! Подскажите, пожалуйста, как это можно осуществить! Заранее огромное спасибо!
Прикрепленные файлы
____________.rar ( 8.13 килобайт )
Кол-во скачиваний: 204
нужно просто добавить в начале каждого условия
label1.Color:=clred- это для неправильного и
label1.Color:=clgreenдля верного решения.
Label1.caption:=clblack
не получается.. к примеру прога выдает "введенное чсло больше", тогда юзер должен нажать на одну из кнопочек > или <. Если нажал правильно - текст выделяется зеленым цветом, неправильно - красным.
Возникает вопрос: как я могу засунуть одну процедуру(нажатие клавиши <,>) в другую?
нажатие клавиши - это ведь обработчик события, так? может, проще в него засунуть окрашивание?
прямо при выводе проверять на правильность и окрашивать...
проблема в том, как проверить эту правильность..
так, я запуталась.
что юзер должен обозначать нажатием на кнопку со знаками больше/меньше?
то есть когда надо нажимать на какую и какое нажатие считается правильным?
а зачем вообще эти кнопки - Больше и Меньше? По логике, число нужно угадывать так:
Например, загадано 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;