Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Угадай число

Автор: Nataly 2.11.2006 18:23

Нужна ваша помощь! Программа «Угадай число» делает один проход и дальше не работает. Пытаюсь зациклить, но выводится ошибка. Как правильно оформить это все в цикл?


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

Сравнение то поисходит, только всего лишь один раз.. sad.gif
выдаст "больше" или "меньше" и дальше не идет.. sad.gif

Автор: 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

Посмотрите, плиз!


Прикрепленные файлы
Прикрепленный файл  ____________.rar ( 6.91 килобайт ) Кол-во скачиваний: 187

Автор: 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

Здравствуйте, снова нужна ваша помощь! Необходимо модифицировать прогу. В местах, отмеченных !!!, необходимо поставить условие, что если юзер правильно нажимает на кнопку, текст окрашивается в зеленый цвет, если ошибка – в красный! Подскажите, пожалуйста, как это можно осуществить! Заранее огромное спасибо!


Прикрепленные файлы
Прикрепленный файл  ____________.rar ( 8.13 килобайт ) Кол-во скачиваний: 204

Автор: 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

проблема в том, как проверить эту правильность.. sad.gif

Автор: мисс_граффити 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;