Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2008, 11:36   #1
MoxFalder
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 18
Сообщение Pascal--->Delphi.

помогите с задачкой.Нужно перевести в Delphi...
Задача:
Написать программу, играющую с пользователем в "угадайку" - пользователь загадывает число, компьютер пытается его отгадать. Компьютер называет свои варианты, а пользователь отвечает лишь "больше" либо "меньше". Для организации диалога воспользоваться функцией InputBox.
Код:
type
  TGameApp = object(TApplication)
    procedure HandleEvent(var Event: TEvent); virtual;
    procedure InitMenuBar; virtual;
    procedure InitStatusLine; virtual;

    procedure RunGame;
  end;

procedure TGameApp.RunGame;

  function IntToStr(n: Longint): String;
  var st: string;
  begin
    Str(n, st);
    IntToStr := st;
  end;

var
  minValue, maxValue: Integer;
  finished: boolean;
  s: string;
  num: integer;
begin
  finished := false;
  minValue := 0; maxValue := 100; { интервал - от 0 до 100 }
  { здесь получаем число num в интервале minValue .. maxValue }

  repeat
    s := '';
    InputBox(IntToStr(num), 'Input <, =, or >', s, 255); { <--- получаем от пользователя ответ: < = > }

    case s[1] of
      '<':
      begin
            {
              загаданное число меньше выданного компьютером;
              изменяем границы интервала, получаем новое число num...
            }
      end;

      '=':
      begin
            { загаданное число равно выданному компьютером, можно вывести приветствие и выходить }
            finished := true;
      end;

      '>':
      begin
            {
              загаданное число больше выданного компьютером;
              изменяем границы интервала, получаем новое число num...
            }
      end;
    end;
  until finished;

end;

procedure TGameApp.HandleEvent(var Event: TEvent);
var
  R: TRect;
begin
  inherited HandleEvent(Event);
  if Event.What = evCommand then
  begin
    case Event.Command of
      cmStartGame:
        begin
          RunGame;
          ClearEvent(Event);
        end;
    end;
  end;
end;

Последний раз редактировалось MoxFalder; 29.10.2008 в 02:05.
MoxFalder вне форума Ответить с цитированием
Старый 29.10.2008, 02:10   #2
MoxFalder
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 18
По умолчанию

Вот тут какойто набросак начирикал,но он естественно не правельный :D
Я в этом деле навичек и мало соображаю Пожалуйсто очень нужно...
Код:
procedure TForm1.Button1Click(Sender: TObject);
var num,a:integer;S:string;
begin
num:=StrToInt(Edit1.Text);
a:=0;
Randomize;
num:=Random(90)+10;
repeat
if num>a then begin
S:=inputbox('neverno','4islo','menwe');
a:=StrToInt(S);
if num<a then begin
S:=input('neverno','4islo','menwe');
a:=StrToInt(S);
until
num=a;
end;
end;
end.
MoxFalder вне форума Ответить с цитированием
Старый 29.10.2008, 13:08   #3
MoxFalder
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 18
По умолчанию

Ребята подскажите где ошибки
MoxFalder вне форума Ответить с цитированием
Старый 29.10.2008, 13:22   #4
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

А не наоборот надо, чтобы комп загадал число а выего угадали?
SERG1980 вне форума Ответить с цитированием
Старый 29.10.2008, 14:07   #5
MoxFalder
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 18
По умолчанию

Цитата:
Сообщение от SERG1980 Посмотреть сообщение
А не наоборот надо, чтобы комп загадал число а выего угадали?
Нет..В чем вся фишка.Ты загадываеш комп отгадывает.Ты ему тока сообщаешь больше или меньше
MoxFalder вне форума Ответить с цитированием
Старый 29.10.2008, 14:31   #6
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Так сгодится?
Код:
implementation

{$R *.dfm}
 var numUser,numKomp,mem1,mem2:integer;
procedure TForm1.Button1Click(Sender: TObject);
var otvet:string;
begin
numUser:=StrToInt(Edit1.Text);
numKomp:=0;
mem1:=0;
mem2:=100;
Randomize;
numKomp:=Random(100);
repeat
 otvet:=InputBox('Число','Моё число: '+inttostr(numKomp),'');
 if otvet='меньше' then
 begin
  mem2:=numKomp;
 end;
 if otvet='больше' then
 begin
  mem1:=numKomp;
 end;
 numKomp:=RandomRange(mem1,mem2);
until (otvet='да')or(otvet='выход');
end;
Вложения
Тип файла: rar 1.rar (4.2 Кб, 18 просмотров)
SERG1980 вне форума Ответить с цитированием
Старый 29.10.2008, 14:55   #7
MoxFalder
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 18
По умолчанию

Цитата:
Сообщение от SERG1980 Посмотреть сообщение
Так сгодится?
Код:
implementation

{$R *.dfm}
 var numUser,numKomp,mem1,mem2:integer;
procedure TForm1.Button1Click(Sender: TObject);
var otvet:string;
begin
numUser:=StrToInt(Edit1.Text);
numKomp:=0;
mem1:=0;
mem2:=100;
Randomize;
numKomp:=Random(100);
repeat
 otvet:=InputBox('Число','Моё число: '+inttostr(numKomp),'');
 if otvet='меньше' then
 begin
  mem2:=numKomp;
 end;
 if otvet='больше' then
 begin
  mem1:=numKomp;
 end;
 numKomp:=RandomRange(mem1,mem2);
until (otvet='да')or(otvet='выход');
end;
Там надо сделать както через inputbox,что-то вроде диолога...
MoxFalder вне форума Ответить с цитированием
Старый 29.10.2008, 15:25   #8
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Дык у меня вроде через инпутбокс вы прикреплённый файл, откомпилируйте и посмотрите в работе
SERG1980 вне форума Ответить с цитированием
Старый 29.10.2008, 15:34   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Компьютер должен играть как сообразительный человек, т.е. не случайные числа из интервала выкидывать, а брать "Интервал" div 2.
puporev вне форума Ответить с цитированием
Старый 29.10.2008, 23:02   #10
MoxFalder
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 18
По умолчанию

Цитата:
Сообщение от SERG1980 Посмотреть сообщение
Дык у меня вроде через инпутбокс вы прикреплённый файл, откомпилируйте и посмотрите в работе
Спасибо за помощь!Завтро с утра посмотрю,а то тока с работы пришел и голова забита разной херней
MoxFalder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
О Pascal/Delphi DM_bite Свободное общение 1 12.09.2008 17:18
из Delphi в Pascal sanek0322 Фриланс 2 17.12.2007 21:33
Из Pascal в Delphi Nivil Помощь студентам 9 08.12.2007 18:58
С Pascal на Delphi =*=|/|MM0PT@/\=*= Паскаль, Turbo Pascal, PascalABC.NET 12 06.09.2007 17:53