数当てゲーム

A さんと B さんがなにやら数当てゲームを行っています。

A: 「私が頭に思い浮かべている数値を当てて見て。」
(ここで A さんは頭の中で 120 を思い浮かべる)

B: 「 500 ! 」

A: 「全然遠い。もっと下。」

B: 「じゃあ、200」

A: 「結構近くなったよ。でもまだ下。」

B: 「150 ぐらいかな?」

A: 「大分近くなってきた。でももう少し下だね。」

B: 「100 ではどう?」

A: 「おしい、もうちょっと上。」

B:「じゃあ、110 ぐらいでしょ」

A: 「かなり近い。ほんの少しだけ上。」

B: 「120 でどうだ。」

A: 「正解!」

サンプルプログラム

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

function IsDigit(s: string): Boolean;
var
  c: Integer;
begin
  Result := TryStrToInt(s, c);
end;

function IsMinus(v: Integer): Boolean;
begin
  Result := (v < 0);
end;

var
  Answer, Diff: Integer;
  X, Range, Direction: string;
begin
  Randomize;

  while true do begin
    repeat
      Write('いくつまでの整数を使っていい?(Ctrl+Cで終了): ');
      Readln(Range);
    until IsDigit(Range);
    Answer := Random(StrToInt(Range))+1;

    repeat
      repeat
        Write('いくつ?: ');
        Readln(X);
      until IsDigit(X);

      Diff := Answer-StrToInt(X);
      if IsMinus(Diff) then
        Direction := '下'
      else
        Direction := '上';

      case Abs(Diff) of
        0      : Writeln('正解!');
        1..10  : Writeln('おしい、もうちょっと', Direction);
        11..50 : Writeln('もう少し', Direction);
        51..100: Writeln('もっと', Direction)
        else
          Writeln('全然遠い、まだまだ', Direction);
      end;
    until Answer = StrToInt(X);
  end;
end.
 

実行結果


up next
Last update: 2003/12/19