Recent

Author Topic: Simple numbers game syntax error  (Read 590 times)

Sukuna

  • New Member
  • *
  • Posts: 15
Simple numbers game syntax error
« on: April 12, 2025, 10:00:38 am »
Hello,
I am following this YT tutorial

https://www.youtube.com/watch?v=oyCwGhqxFUg&list=PLB24C56953A79987A&index=14

 and finished this numbers game. However when I run it, it gives me an error message with UNTIL.






program project10;

{$mode objfpc}{$H+}

uses
  crt,
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  Classes
  { you can add units after this };

var
  answer:integer;
  guess:integer;
  cnt:integer;
  error:integer;
  game:char;
  UI:string;
begin
  repeat
    clrscr;
    writeln('Please select a game: A B or C');
    writeln('A) 1 - 10');
    writeln('B) 1 - 100');
    writeln('C) 1 - 1000');
    writeln('Please select: ');
    readln(game);
  until (game = 'A') or (game = 'a') or (game = 'B') or (game = 'b') or (game = 'C') or (game = 'c') ;

  clrscr;

  case game of
  'A','a':begin
    answer := random(10)+1;
    writeln('Game 1 - 10 was selected');
  end;
  'B','b':begin
    answer := random(100)+1;
    writeln('Game 1 - 100 was selected');
  end;
  'C','c':begin
    answer := random(1000)+1;
    writeln('Game 1 - 1000 was selected');
  end;
  end;

repeat
  repeat
  writeln('Please enter a guess: ');
  readln(UI);
  val(UI,guess,error);
    if error <> 0 then
    writeln('Enter another selection')
  until error = 0

  cnt := cnt+1;

    if guess > answer then
    writeln('Guess too high')
    else if guess < answer then
    writeln('Guess too low')
      else
      writeln('You guessed my number in ', cnt,' guesses');
  until  guess = answer;


  readln;
end.



Fibonacci

  • Hero Member
  • *****
  • Posts: 1002
  • Behold, I bring salvation - FPC Unleashed
Re: Simple numbers game syntax error
« Reply #1 on: April 12, 2025, 10:08:17 am »
When posting pascal code use [code=pascal]here your code[/code] BB tags.

Missing semicolon at line 55.

Code: Pascal  [Select][+][-]
  1. program project10;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. uses
  6.   crt,
  7.   {$IFDEF UNIX}
  8.   cthreads,
  9.   {$ENDIF}
  10.   Classes
  11.   { you can add units after this };
  12.  
  13. var
  14.   answer:integer;
  15.   guess:integer;
  16.   cnt:integer;
  17.   error:integer;
  18.   game:char;
  19.   UI:string;
  20. begin
  21.   repeat
  22.     clrscr;
  23.     writeln('Please select a game: A B or C');
  24.     writeln('A) 1 - 10');
  25.     writeln('B) 1 - 100');
  26.     writeln('C) 1 - 1000');
  27.     writeln('Please select: ');
  28.     readln(game);
  29.   until (game = 'A') or (game = 'a') or (game = 'B') or (game = 'b') or (game = 'C') or (game = 'c') ;
  30.  
  31.   clrscr;
  32.  
  33.   case game of
  34.   'A','a':begin
  35.     answer := random(10)+1;
  36.     writeln('Game 1 - 10 was selected');
  37.   end;
  38.   'B','b':begin
  39.     answer := random(100)+1;
  40.     writeln('Game 1 - 100 was selected');
  41.   end;
  42.   'C','c':begin
  43.     answer := random(1000)+1;
  44.     writeln('Game 1 - 1000 was selected');
  45.   end;
  46.   end;
  47.  
  48. repeat
  49.   repeat
  50.   writeln('Please enter a guess: ');
  51.   readln(UI);
  52.   val(UI,guess,error);
  53.     if error <> 0 then
  54.     writeln('Enter another selection')
  55.   until error = 0
  56.  
  57.   cnt := cnt+1;
  58.  
  59.     if guess > answer then
  60.     writeln('Guess too high')
  61.     else if guess < answer then
  62.     writeln('Guess too low')
  63.       else
  64.       writeln('You guessed my number in ', cnt,' guesses');
  65.   until  guess = answer;
  66.  
  67.  
  68.   readln;
  69. end.
FPC Unleashed - inline vars, tuples, statement expressions, array equality, compound assignments, indexed/lazy labels, no-RTTI & more. ⭐ Star it on GitHub!

Sukuna

  • New Member
  • *
  • Posts: 15
Re: Simple numbers game syntax error
« Reply #2 on: April 12, 2025, 10:33:17 am »
Thank you it worked.

Bart

  • Hero Member
  • *****
  • Posts: 5731
    • Bart en Mariska's Webstek
Re: Simple numbers game syntax error
« Reply #3 on: April 12, 2025, 02:26:40 pm »
Since you are using crt unit, instead of using readln(game), you can do something like:
Code: Pascal  [Select][+][-]
  1.    //draw the menu
  2.    repeat
  3.      game := upcase(readkey);
  4.    until (game in ['A','B','C'];
  5.    write(game) //echo the chocie made to the console

It looks just a little bit nicer....

Bart

 

TinyPortal © 2005-2018