Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

Game: Guess the Number

LionyLiony Posts: 7Member
Sorry to bother you again...

Ok, so the game was already done and, after I spent some time fixing errors and cleaning the code, I decided to add some more code...

And this time, if the user repeated the same number twice or more, a message would appear saying "You have already guessed this number".

I got this idea from an older thread:
[code]http://www.programmersheaven.com/mb/pasprog/392718/392718/need-help-with-guessing-game/?S=B20000#392718[/code]

Although the program runs with no problems after I added the code, It actually doesn't return a message after the user repeated the same number twice.


Here's the complete code for the game:
(Yeah, I know it's a lot of it and may sound stupid...)

[code]Program guess_the_number ;
uses windows ;
var a, b, c, d, f : Integer ;
e : String ;
time : dword ;
guess_easy : Array [0..100] of Boolean ;
guess_medium : Array [0..1000] of Boolean ;
guess_hard : Array [0..10000] of Boolean ;
Function checkifexists_easy : Boolean ;
Begin
If guess_easy[a] = true
then checkifexists_easy := true
else checkifexists_easy := false ;
End ;
Function checkifexists_medium : Boolean ;
Begin
If guess_medium[a] = true
then checkifexists_medium := true
else checkifexists_medium := false ;
End ;
Function checkifexists_hard : Boolean ;
Begin
If guess_hard[a] = true
then checkifexists_hard := true
else checkifexists_hard := false ;
End ;
Function Calculo_Distancia : Integer ;
Begin
Calculo_Distancia := (a - b) ;
End ;
Procedure Dificil_T_C ;
Begin
time := 0 ;
c := 0 ;
time := gettickcount ;
b := 1 ;
b := random (10000) ;
Writeln ('Enter a number between 1 and 10000:') ;
Repeat
Readln (a) ;
If checkifexists_hard = true
then Writeln ('You have already guessed that number...') ;
If Calculo_Distancia > b
then If (Calculo_Distancia <= 10000) and (Calculo_Distancia >= 5000)
then Writeln ('You''re too far away...') ;
If (Calculo_Distancia <= 4999) and (Calculo_Distancia >= 2000)
then Writeln ('You''re not too far away...') ;
If (Calculo_Distancia <= 1999) and (Calculo_Distancia >= 1250)
then Writeln ('You''re not that near...') ;
If (Calculo_Distancia <= 1249) and (Calculo_Distancia >= 675)
then Writeln ('You''re near...') ;
If (Calculo_Distancia <= 674) and (Calculo_Distancia >= 100)
then Writeln ('Try to lower your guessing...') ;
If (Calculo_Distancia <= 99) and (Calculo_Distancia >= 50)
then Writeln ('You''re very near...') ;
If (Calculo_Distancia <= 49) and (Calculo_Distancia >= 10)
then Writeln ('You''re almost there!') ;
If (Calculo_Distancia <= 9) and (Calculo_Distancia >= 2)
then Writeln ('You''re a few steps from guessing!!') ;
If Calculo_Distancia < b
then If (Calculo_Distancia >= -10000) and (Calculo_Distancia <= -5000)
then Writeln ('You''re too far away...') ;
If (Calculo_Distancia >= -4999) and (Calculo_Distancia <= -2000)
then Writeln ('You''re not too far away...') ;
If (Calculo_Distancia >= -1999) and (Calculo_Distancia <= -1250)
then Writeln ('You''re not that near...') ;
If (Calculo_Distancia >= -1249) and (Calculo_Distancia <= -675)
then Writeln ('You''re near...') ;
If (Calculo_Distancia >= -674) and (Calculo_Distancia <= -100)
then Writeln ('Try to raise your guessing...') ;
If (Calculo_Distancia >= -99) and (Calculo_Distancia <= -50)
then Writeln ('You''re very near...') ;
If (Calculo_Distancia >= -49) and (Calculo_Distancia <= -10)
then Writeln ('You''re almost there!') ;
If (Calculo_Distancia >= -9) and (Calculo_Distancia <= -2)
then Writeln ('You''re a few steps from guessing!!') ;
If Calculo_Distancia = 1
then Writeln ('YOU ARE AT THE DISTANCE OF ONE NUMBER!!!!') ;
c := c + 1 ;
Until a = b ;
time:=trunc((gettickcount-time) div 1000) ;
If a = b
then Writeln ('You did it! The correct number was ',b,'!') ;
Writeln ('You took ',c,' tries and ',time,' seconds to guess it.') ;
End ;
Procedure Dificil_Tentativas ;
Begin
c := 0 ;
b := 1 ;
b := random (10000) ;
Writeln ('Enter a number between 1 and 10000:') ;
Repeat
Readln (a) ;
If checkifexists_hard = true
then Writeln ('You have already guessed that number...') ;
If Calculo_Distancia > b
then If (Calculo_Distancia <= 10000) and (Calculo_Distancia >= 5000)
then Writeln ('You''re too far away...') ;
If (Calculo_Distancia <= 4999) and (Calculo_Distancia >= 2000)
then Writeln ('You''re not too far away...') ;
If (Calculo_Distancia <= 1999) and (Calculo_Distancia >= 1250)
then Writeln ('You''re not that near...') ;
If (Calculo_Distancia <= 1249) and (Calculo_Distancia >= 675)
then Writeln ('You''re near...') ;
If (Calculo_Distancia <= 674) and (Calculo_Distancia >= 100)
then Writeln ('Try to lower your guessing...') ;
If (Calculo_Distancia <= 99) and (Calculo_Distancia >= 50)
then Writeln ('You''re very near...') ;
If (Calculo_Distancia <= 49) and (Calculo_Distancia >= 10)
then Writeln ('You''re almost there!') ;
If (Calculo_Distancia <= 9) and (Calculo_Distancia >= 2)
then Writeln ('You''re a few steps from guessing!!') ;
If Calculo_Distancia < b
then If (Calculo_Distancia >= -10000) and (Calculo_Distancia <= -5000)
then Writeln ('You''re too far away...') ;
If (Calculo_Distancia >= -4999) and (Calculo_Distancia <= -2000)
then Writeln ('You''re not too far away...') ;
If (Calculo_Distancia >= -1999) and (Calculo_Distancia <= -1250)
then Writeln ('You''re not that near...') ;
If (Calculo_Distancia >= -1249) and (Calculo_Distancia <= -675)
then Writeln ('You''re near...') ;
If (Calculo_Distancia >= -674) and (Calculo_Distancia <= -100)
then Writeln ('Try to raise your guessing...') ;
If (Calculo_Distancia >= -99) and (Calculo_Distancia <= -50)
then Writeln ('You''re very near...') ;
If (Calculo_Distancia >= -49) and (Calculo_Distancia <= -10)
then Writeln ('You''re almost there!') ;
If (Calculo_Distancia >= -9) and (Calculo_Distancia <= -2)
then Writeln ('You''re a few steps from guessing!!') ;
If Calculo_Distancia = 1
then Writeln ('YOU ARE AT THE DISTANCE OF ONE NUMBER!!!!') ;
c := c + 1 ;
Until a = b ;
If a = b
then Writeln ('You did it! The correct number was ',b,'!') ;
Writeln ('You took ',c,' tries to guess it.') ;
End ;
Procedure Dificil_Cronometro ;
Begin
time := 0 ;
time := gettickcount ;
c := 0 ;
b := 1 ;
b := random (10000) ;
Writeln ('Enter a number between 1 and 10000:') ;
Repeat
Readln (a) ;
If checkifexists_hard = true
then Writeln ('You have already guessed that number...') ;
If Calculo_Distancia > b
then If (Calculo_Distancia <= 10000) and (Calculo_Distancia >= 5000)
then Writeln ('You''re too far away...') ;
If (Calculo_Distancia <= 4999) and (Calculo_Distancia >= 2000)
then Writeln ('You''re not too far away...') ;
If (Calculo_Distancia <= 1999) and (Calculo_Distancia >= 1250)
then Writeln ('You''re not that near...') ;
If (Calculo_Distancia <= 1249) and (Calculo_Distancia >= 675)
then Writeln ('You''re near...') ;
If (Calculo_Distancia <= 674) and (Calculo_Distancia >= 100)
then Writeln ('Try to lower your guessing...') ;
If (Calculo_Distancia <= 99) and (Calculo_Distancia >= 50)
then Writeln ('You''re very near...') ;
If (Calculo_Distancia <= 49) and (Calculo_Distancia >= 10)
then Writeln ('You''re almost there!') ;
If (Calculo_Distancia <= 9) and (Calculo_Distancia >= 2)
then Writeln ('You''re a few steps from guessing!!') ;
If Calculo_Distancia < b
then If (Calculo_Distancia >= -10000) and (Calculo_Distancia <= -5000)
then Writeln ('You''re too far away...') ;
If (Calculo_Distancia >= -4999) and (Calculo_Distancia <= -2000)
then Writeln ('You''re not too far away...') ;
If (Calculo_Distancia >= -1999) and (Calculo_Distancia <= -1250)
then Writeln ('You''re not that near...') ;
If (Calculo_Distancia >= -1249) and (Calculo_Distancia <= -675)
then Writeln ('You''re near...') ;
If (Calculo_Distancia >= -674) and (Calculo_Distancia <= -100)
then Writeln ('Try to raise your guessing...') ;
If (Calculo_Distancia >= -99) and (Calculo_Distancia <= -50)
then Writeln ('You''re very near...') ;
If (Calculo_Distancia >= -49) and (Calculo_Distancia <= -10)
then Writeln ('You''re almost there!') ;
If (Calculo_Distancia >= -9) and (Calculo_Distancia <= -2)
then Writeln ('You''re a few steps from guessing!!') ;
If Calculo_Distancia = 1
then Writeln ('YOU ARE AT THE DISTANCE OF ONE NUMBER!!!!') ;
Until a = b ;
time:=trunc((gettickcount-time) div 1000) ;
If a = b
then Writeln ('You did it! The correct number was ',b,'!') ;
Writeln ('You took ',time,' seconds to guess it.') ;
End ;
Procedure Medio_T_C ;
Begin
time := 0 ;
c := 0 ;
time := gettickcount ;
b := 1 ;
b := random (1000) ;
Writeln ('Enter a number between 1 and 1000:') ;
Repeat
c := c + 1 ;
Readln (a) ;
If checkifexists_medium = true
then Writeln ('You have already guessed that number...') ;
If a < b
then Writeln ('Too small...') ;
If a > b
then Writeln ('Too big...') ;
Until a = b ;
time:=trunc((gettickcount-time) div 1000) ;
If a = b
then Writeln ('You did it! The correct number was ',b,'!') ;
Writeln ('You took ',c,' tries and ',time,' seconds to guess it.') ;
End ;
Procedure Medio_Tentativas ;
Begin
c := 0 ;
b := 1 ;
b := random (1000) ;
Writeln ('Enter a number between 1 and 1000:') ;
Repeat
c := c + 1 ;
Readln (a) ;
If checkifexists_medium = true
then Writeln ('You have already guessed that number...') ;
If a < b
then Writeln ('Too small...') ;
If a > b
then Writeln ('Too big...') ;
Until a = b ;
If a = b
then Writeln ('You did it! The correct number was ',b,'!') ;
Writeln ('You took ',c,' tries to guess it.') ;
End ;
Procedure Medio_Cronometro ;
Begin
time := 0 ;
time := gettickcount ;
b := 1 ;
b := random (1000) ;
Writeln ('Enter a number between 1 and 1000:') ;
Repeat
Readln (a) ;
If checkifexists_medium = true
then Writeln ('You have already guessed that number...') ;
If a < b
then Writeln ('Too small...') ;
If a > b
then Writeln ('Too big...') ;
Until a = b ;
time:=trunc((gettickcount-time) div 1000) ;
If a = b
then Writeln ('You did it! The correct number was ',b,'!') ;
Writeln ('You took ',time,' seconds to guess it.') ;
End ;
Procedure Facil_T_C ;
Begin
time := 0 ;
c := 0 ;
time := gettickcount ;
b := 1 ;
b := random (100) ;
Writeln ('Enter a number between 1 and 100:') ;
Repeat
c := c + 1 ;
Readln (a) ;
If checkifexists_easy = true
then Writeln ('You have already guessed that number...') ;
If a < b
then Writeln ('Too small...') ;
If a > b
then Writeln ('Too big...') ;
Until a = b ;
time:=trunc((gettickcount-time) div 1000) ;
If a = b
then Writeln ('You did it! The correct number was ',b,'!') ;
Writeln ('You took ',c,' tries and ',time,' seconds to guess it.') ;
End ;
Procedure Facil_Tentativas ;
Begin
c := 0 ;
b := 1 ;
b := random (100) ;
Writeln ('Enter a number between 1 and 100:') ;
Repeat
c := c + 1 ;
Readln (a) ;
If checkifexists_easy = true
then Writeln ('You have already guessed that number...') ;
If a < b
then Writeln ('Too small...') ;
If a > b
then Writeln ('Too big...') ;
Until a = b ;
If a = b
then Writeln ('You did it! The correct number was ',b,'!') ;
Writeln ('You took ',c,' tries to guess it.') ;
End ;
Procedure Facil_Cronometro ;
Begin
time := 0 ;
time := gettickcount ;
b := 1 ;
b := random (100) ;
Writeln ('Enter a number between 1 and 100:') ;
Repeat
Readln (a) ;
If checkifexists_easy = true
then Writeln ('You have already guessed that number...') ;
If a < b
then Writeln ('Too small..') ;
If a > b
then Writeln ('Too big...') ;
Until a = b ;
time:=trunc((gettickcount-time) div 1000) ;
If a = b
then Writeln ('You did it! The correct number was ',b,'!') ;
Writeln ('You took ',time,' seconds to guess it.') ;
End ;
Procedure Modo_Jogo ;
Begin
Writeln ('Choose the game mode:') ;
Writeln ('') ;
Writeln ('By tries: 1') ;
Writeln ('By time: 2') ;
Writeln ('Both: 3') ;
Readln (f) ;
Writeln ('') ;
If (d = 1) and (f = 1)
then Facil_Tentativas ;
If (d = 1) and (f = 2)
then Facil_Cronometro ;
If (d = 1) and (f = 3)
then Facil_T_C ;
If (d = 2) and (f = 1)
then Medio_Tentativas ;
If (d = 2) and (f = 2)
then Medio_Cronometro ;
If (d = 2) and (f = 3)
then Medio_T_C ;
If (d = 3) and (f = 1)
then Dificil_Tentativas ;
If (d = 3) and (f = 2)
then Dificil_Cronometro ;
If (d = 3) and (f = 3)
then Dificil_T_C ;
End ;
Procedure Dificuldade ;
Begin
Writeln ('Choose the difficulty:') ;
Writeln ('') ;
Writeln ('Easy: 1') ;
Writeln ('Medium: 2') ;
Writeln ('Hard: 3') ;
Readln (d) ;
Writeln ('') ;
Modo_Jogo ;
End ;
Procedure Game_Over ;
Begin
Writeln ('Game Over') ;
End ;
Procedure Retry ;
Begin
Writeln ('') ;
Writeln ('Try again? Y/N') ;
Readln (e) ;
If e = ('Y')
then Dificuldade
else Game_Over ;
End ;
Begin
Dificuldade ;
Repeat
Retry ;
Until e = ('N') ;
End.[/code]

Comments

  • _Atex__Atex_ Posts: 163Member
    [code][blue]program guess_the_number;
    uses windows;
    var a,b,tries:byte;
    time:dword;
    c:array[0..100] of boolean; { triggers }

    begin
    fillchar(c,sizeof(c),0); { <-- Init "c" with "false" values (0) }
    randomize;
    tries:=0;
    a:=succ(random(100));
    time:=gettickcount; { <-- Get time from system counter, it gets updated every ms }
    repeat
    write(#13#10'Enter a number between 1 and 100 (0 to Exit) : ');readln(b);
    if ((b in[0..100]) and not(c[[b]b[/b]])) then begin { <-- Perform range check for "b" also check trigger }
    c[[b]b[/b]]:=true; { <-- Set trigger }
    inc(tries);
    if b=0 then begin writeln(#13#10'Exiting...');halt;end;
    if a<b then writeln('Too big...') else
    if a>b then writeln('Too small...');
    end else if (b in[1..100]) then writeln('Number already entered !')
    else writeln('Must be in 0..100 range !'); { <-- Out of range warning }
    until a=b;
    time:=trunc((gettickcount-time)/1000); { <-- calculate elapsed time }
    writeln(#13#10#13#10'You took ',time,' seconds and ',tries,' tries to guess it.');readln;
    end.[/code]

  • LionyLiony Posts: 7Member
    Does that only work on numbers within the range of 1 and 100?

    I mean... whenether I try to enlarge the range (Between 1 and 1000 or 1 and 10000), it gives me an error saying "Warning: Range check error while evaluating constants" and it treats as if the numbers were ranging between 1 and 100 while in reality they were ranging between 1 and 1000 or 1 and 10000.
  • _Atex__Atex_ Posts: 163Member
    : Does that only work on numbers within the range of 1 and 100?
    :
    : I mean... whenether I try to enlarge the range (Between 1 and 1000
    : or 1 and 10000), it gives me an error saying "Warning: Range check
    : error while evaluating constants" and it treats as if the numbers
    : were ranging between 1 and 100 while in reality they were ranging
    : between 1 and 1000 or 1 and 10000.

    The [b]in[/b] relational operator works with [b]set[/b]s only, I should have mention it... For bigger ranges it has to be exchanged with something like this: [b] if ((b>0) and (b<=[red]your upper range here[/red])) ...[/b]


  • LionyLiony Posts: 7Member
    The range limit message works, but a message still doesn't appear when I repeat the same number twice.

    Here's an example of how I put it on a range of 1 and 1000:

    [code]Procedure Medio_T_C ;
    Begin
    fillchar(guess_medium,sizeof(guess_medium),0) ;
    time := 0 ;
    c := 0 ;
    time := gettickcount ;
    b := 1 ;
    b := random (1000) ;
    Writeln ('Enter a number between 1 and 1000:') ;
    Repeat
    c := c + 1 ;
    Readln (a) ;
    [color=Red][b] If ((a > 0) and (b <= 1000)) then Begin
    guess_medium[a] := true ;[/b][/color]
    If a < b
    then Writeln ('Too small...') ;
    If a > b
    then Writeln ('Too big...') ;
    [color=Red][b] End else If ((a > 0) and (b <= 1000))[/b][/color]
    then Writeln ('You have already guessed that number...')
    else Writeln ('Your number must be between 1 and 1000!') ;
    Until a = b ;
    time:=trunc((gettickcount-time) div 1000) ;
    If a = b
    then Writeln ('You did it! The correct number was ',b,'!') ;
    Writeln ('You took ',c,' tries and ',time,' seconds to guess it.') ;
    End ;[/code]
  • _Atex__Atex_ Posts: 163Member
    [code][color=Blue]program guess_the_number;
    uses windows;
    const max_range=[red][b]1000[/b][/red]; { <-- change this to any maximum range }
    var a,b,tries:word;
    time:dword;
    c:array[0..max_range] of boolean; { triggers }

    begin
    fillchar(c,sizeof(c),0); { <-- Init "c" with "false" values (0) }
    randomize;
    tries:=0;
    a:=succ(random(max_range));
    time:=gettickcount; { <-- Get time from system counter, it gets updated every ms }
    repeat
    write(#13#10'Enter a number between 1 and ',max_range,' (0 to Exit) : ');readln(b);
    if (((b>=0) and (b<=max_range)) and not(c[[b]b[/b]])) then begin { <-- Perform range check for "b" also check trigger }
    c[[b]b[/b]]:=true; { <-- Set trigger }
    inc(tries);
    if b=0 then begin writeln(#13#10'Exiting...');halt;end;
    if a<b then writeln('Too big...') else
    if a>b then writeln('Too small...');
    end else if ((b>=0) and (b<=max_range)) then writeln('Number already entered !')
    else writeln('Must be in 0..100 range !'); { <-- Out of range warning }
    until a=b;
    time:=trunc((gettickcount-time)/1000); { <-- calculate elapsed time }
    writeln(#13#10#13#10'You took ',time,' seconds and ',tries,' tries to guess it.');readln;
    end.
    [/color][/code]
  • LionyLiony Posts: 7Member
    It's finished!
    I spent 2 weeks on it and it occupies a total of 401 lines.

    If you're interested, here's the source code for it:

    [code]Program guess_the_number ;
    uses windows ;
    var a, b, c, d, f : Byte ;
    e : String ;
    time : dword ;
    guess_easy : Array [0..100] of Boolean ;
    guess_medium : Array [0..1000] of Boolean ;
    guess_hard : Array [0..10000] of Boolean ;
    Function Calculo_Distancia : Integer ;
    Begin
    Calculo_Distancia := (a - b) ;
    End ;
    Procedure Dificil_T_C ;
    const max_range = 10000 ;
    Begin
    fillchar(guess_hard,sizeof(guess_hard),0) ;
    time := 0 ;
    c := 0 ;
    time := gettickcount ;
    b := 1 ;
    b := random (10000) ;
    Writeln ('Enter a number between 1 and 10000:') ;
    Repeat
    Readln (a) ;
    If ((a > 0) and (b <= max_range)) and not (guess_hard[a]) then Begin
    guess_hard[a] := true ;
    If Calculo_Distancia > b
    then If (Calculo_Distancia <= 10000) and (Calculo_Distancia >= 5000)
    then Writeln ('You''re too far away...') ;
    If (Calculo_Distancia <= 4999) and (Calculo_Distancia >= 2000)
    then Writeln ('You''re not too far away...') ;
    If (Calculo_Distancia <= 1999) and (Calculo_Distancia >= 1250)
    then Writeln ('You''re not that near...') ;
    If (Calculo_Distancia <= 1249) and (Calculo_Distancia >= 675)
    then Writeln ('You''re near...') ;
    If (Calculo_Distancia <= 674) and (Calculo_Distancia >= 100)
    then Writeln ('Try to lower your guessing...') ;
    If (Calculo_Distancia <= 99) and (Calculo_Distancia >= 50)
    then Writeln ('You''re very near...') ;
    If (Calculo_Distancia <= 49) and (Calculo_Distancia >= 10)
    then Writeln ('You''re almost there!') ;
    If (Calculo_Distancia <= 9) and (Calculo_Distancia >= 2)
    then Writeln ('You''re a few steps from guessing!!') ;
    If Calculo_Distancia < b
    then If (Calculo_Distancia >= -10000) and (Calculo_Distancia <= -5000)
    then Writeln ('You''re too far away...') ;
    If (Calculo_Distancia >= -4999) and (Calculo_Distancia <= -2000)
    then Writeln ('You''re not too far away...') ;
    If (Calculo_Distancia >= -1999) and (Calculo_Distancia <= -1250)
    then Writeln ('You''re not that near...') ;
    If (Calculo_Distancia >= -1249) and (Calculo_Distancia <= -675)
    then Writeln ('You''re near...') ;
    If (Calculo_Distancia >= -674) and (Calculo_Distancia <= -100)
    then Writeln ('Try to raise your guessing...') ;
    If (Calculo_Distancia >= -99) and (Calculo_Distancia <= -50)
    then Writeln ('You''re very near...') ;
    If (Calculo_Distancia >= -49) and (Calculo_Distancia <= -10)
    then Writeln ('You''re almost there!') ;
    If (Calculo_Distancia >= -9) and (Calculo_Distancia <= -2)
    then Writeln ('You''re a few steps from guessing!!') ;
    If Calculo_Distancia = 1
    then Writeln ('YOU ARE AT THE DISTANCE OF ONE NUMBER!!!!') ;
    End else If ((a > 0) and (b <= max_range))
    then Writeln ('You have already guessed that number...')
    else Writeln ('Your number must be between 1 and 10000!') ;
    c := c + 1 ;
    Until a = b ;
    time:=trunc((gettickcount-time) div 1000) ;
    If a = b
    then Writeln ('You did it! The correct number was ',b,'!') ;
    Writeln ('You took ',c,' tries and ',time,' seconds to guess it.') ;
    End ;
    Procedure Dificil_Tentativas ;
    const max_range = 10000 ;
    Begin
    fillchar(guess_hard,sizeof(guess_hard),0) ;
    c := 0 ;
    b := 1 ;
    b := random (10000) ;
    Writeln ('Enter a number between 1 and 10000:') ;
    Repeat
    Readln (a) ;
    If ((a > 0) and (b <= max_range)) and not (guess_hard[a]) then Begin
    guess_hard[a] := true ;
    If Calculo_Distancia > b
    then If (Calculo_Distancia <= 10000) and (Calculo_Distancia >= 5000)
    then Writeln ('You''re too far away...') ;
    If (Calculo_Distancia <= 4999) and (Calculo_Distancia >= 2000)
    then Writeln ('You''re not too far away...') ;
    If (Calculo_Distancia <= 1999) and (Calculo_Distancia >= 1250)
    then Writeln ('You''re not that near...') ;
    If (Calculo_Distancia <= 1249) and (Calculo_Distancia >= 675)
    then Writeln ('You''re near...') ;
    If (Calculo_Distancia <= 674) and (Calculo_Distancia >= 100)
    then Writeln ('Try to lower your guessing...') ;
    If (Calculo_Distancia <= 99) and (Calculo_Distancia >= 50)
    then Writeln ('You''re very near...') ;
    If (Calculo_Distancia <= 49) and (Calculo_Distancia >= 10)
    then Writeln ('You''re almost there!') ;
    If (Calculo_Distancia <= 9) and (Calculo_Distancia >= 2)
    then Writeln ('You''re a few steps from guessing!!') ;
    If Calculo_Distancia < b
    then If (Calculo_Distancia >= -10000) and (Calculo_Distancia <= -5000)
    then Writeln ('You''re too far away...') ;
    If (Calculo_Distancia >= -4999) and (Calculo_Distancia <= -2000)
    then Writeln ('You''re not too far away...') ;
    If (Calculo_Distancia >= -1999) and (Calculo_Distancia <= -1250)
    then Writeln ('You''re not that near...') ;
    If (Calculo_Distancia >= -1249) and (Calculo_Distancia <= -675)
    then Writeln ('You''re near...') ;
    If (Calculo_Distancia >= -674) and (Calculo_Distancia <= -100)
    then Writeln ('Try to raise your guessing...') ;
    If (Calculo_Distancia >= -99) and (Calculo_Distancia <= -50)
    then Writeln ('You''re very near...') ;
    If (Calculo_Distancia >= -49) and (Calculo_Distancia <= -10)
    then Writeln ('You''re almost there!') ;
    If (Calculo_Distancia >= -9) and (Calculo_Distancia <= -2)
    then Writeln ('You''re a few steps from guessing!!') ;
    If Calculo_Distancia = 1
    then Writeln ('YOU ARE AT THE DISTANCE OF ONE NUMBER!!!!') ;
    End else If ((a > 0) and (b <= max_range))
    then Writeln ('You have already guessed that number...')
    else Writeln ('Your number must be between 1 and 10000!') ;
    c := c + 1 ;
    Until a = b ;
    If a = b
    then Writeln ('You did it! The correct number was ',b,'!') ;
    Writeln ('You took ',c,' tries to guess it.') ;
    End ;
    Procedure Dificil_Cronometro ;
    const max_range = 10000 ;
    Begin
    fillchar(guess_hard,sizeof(guess_hard),0) ;
    time := 0 ;
    time := gettickcount ;
    c := 0 ;
    b := 1 ;
    b := random (10000) ;
    Writeln ('Enter a number between 1 and 10000:') ;
    Repeat
    Readln (a) ;
    If ((a > 0) and (b <= max_range)) and not (guess_hard[a]) then Begin
    guess_hard[a] := true ;
    If Calculo_Distancia > b
    then If (Calculo_Distancia <= 10000) and (Calculo_Distancia >= 5000)
    then Writeln ('You''re too far away...') ;
    If (Calculo_Distancia <= 4999) and (Calculo_Distancia >= 2000)
    then Writeln ('You''re not too far away...') ;
    If (Calculo_Distancia <= 1999) and (Calculo_Distancia >= 1250)
    then Writeln ('You''re not that near...') ;
    If (Calculo_Distancia <= 1249) and (Calculo_Distancia >= 675)
    then Writeln ('You''re near...') ;
    If (Calculo_Distancia <= 674) and (Calculo_Distancia >= 100)
    then Writeln ('Try to lower your guessing...') ;
    If (Calculo_Distancia <= 99) and (Calculo_Distancia >= 50)
    then Writeln ('You''re very near...') ;
    If (Calculo_Distancia <= 49) and (Calculo_Distancia >= 10)
    then Writeln ('You''re almost there!') ;
    If (Calculo_Distancia <= 9) and (Calculo_Distancia >= 2)
    then Writeln ('You''re a few steps from guessing!!') ;
    If Calculo_Distancia < b
    then If (Calculo_Distancia >= -10000) and (Calculo_Distancia <= -5000)
    then Writeln ('You''re too far away...') ;
    If (Calculo_Distancia >= -4999) and (Calculo_Distancia <= -2000)
    then Writeln ('You''re not too far away...') ;
    If (Calculo_Distancia >= -1999) and (Calculo_Distancia <= -1250)
    then Writeln ('You''re not that near...') ;
    If (Calculo_Distancia >= -1249) and (Calculo_Distancia <= -675)
    then Writeln ('You''re near...') ;
    If (Calculo_Distancia >= -674) and (Calculo_Distancia <= -100)
    then Writeln ('Try to raise your guessing...') ;
    If (Calculo_Distancia >= -99) and (Calculo_Distancia <= -50)
    then Writeln ('You''re very near...') ;
    If (Calculo_Distancia >= -49) and (Calculo_Distancia <= -10)
    then Writeln ('You''re almost there!') ;
    If (Calculo_Distancia >= -9) and (Calculo_Distancia <= -2)
    then Writeln ('You''re a few steps from guessing!!') ;
    If Calculo_Distancia = 1
    then Writeln ('YOU ARE AT THE DISTANCE OF ONE NUMBER!!!!') ;
    End else If ((a > 0) and (b <= max_range))
    then Writeln ('You have already guessed that number...')
    else Writeln ('Your number must be between 1 and 10000!') ;
    Until a = b ;
    time:=trunc((gettickcount-time) div 1000) ;
    If a = b
    then Writeln ('You did it! The correct number was ',b,'!') ;
    Writeln ('You took ',time,' seconds to guess it.') ;
    End ;
    Procedure Medio_T_C ;
    const max_range = 1000 ;
    Begin
    fillchar(guess_medium,sizeof(guess_medium),0) ;
    time := 0 ;
    c := 0 ;
    time := gettickcount ;
    b := 1 ;
    b := random (1000) ;
    Writeln ('Enter a number between 1 and 1000:') ;
    Repeat
    c := c + 1 ;
    Readln (a) ;
    If ((a > 0) and (b <= max_range)) and not (guess_medium[a]) then Begin
    guess_medium[a] := true ;
    If a < b
    then Writeln ('Too small...') ;
    If a > b
    then Writeln ('Too big...') ;
    End else If ((a > 0) and (b <= max_range))
    then Writeln ('You have already guessed that number...')
    else Writeln ('Your number must be between 1 and 1000!') ;
    Until a = b ;
    time:=trunc((gettickcount-time) div 1000) ;
    If a = b
    then Writeln ('You did it! The correct number was ',b,'!') ;
    Writeln ('You took ',c,' tries and ',time,' seconds to guess it.') ;
    End ;
    Procedure Medio_Tentativas ;
    const max_range = 1000 ;
    Begin
    fillchar(guess_medium,sizeof(guess_medium),0) ;
    c := 0 ;
    b := 1 ;
    b := random (1000) ;
    Writeln ('Enter a number between 1 and 1000:') ;
    Repeat
    c := c + 1 ;
    Readln (a) ;
    If ((a > 0) and (b <= max_range)) and not (guess_medium[a]) then Begin
    guess_medium[a] := true ;
    If a < b
    then Writeln ('Too small...') ;
    If a > b
    then Writeln ('Too big...') ;
    End else If ((a > 0) and (b <= max_range))
    then Writeln ('You have already guessed that number...')
    else Writeln ('Your number must be between 1 and 1000!') ;
    Until a = b ;
    If a = b
    then Writeln ('You did it! The correct number was ',b,'!') ;
    Writeln ('You took ',c,' tries to guess it.') ;
    End ;
    Procedure Medio_Cronometro ;
    const max_range = 1000 ;
    Begin
    fillchar(guess_medium,sizeof(guess_medium),0) ;
    time := 0 ;
    time := gettickcount ;
    b := 1 ;
    b := random (1000) ;
    Writeln ('Enter a number between 1 and 1000:') ;
    Repeat
    Readln (a) ;
    If ((a > 0) and (b <= max_range)) and not (guess_medium[a]) then Begin
    guess_medium[a] := true ;
    If a < b
    then Writeln ('Too small...') ;
    If a > b
    then Writeln ('Too big...') ;
    End else If ((a > 0) and (b <= max_range))
    then Writeln ('You have already guessed that number...')
    else Writeln ('Your number must be between 1 and 1000!') ;
    Until a = b ;
    time:=trunc((gettickcount-time) div 1000) ;
    If a = b
    then Writeln ('You did it! The correct number was ',b,'!') ;
    Writeln ('You took ',time,' seconds to guess it.') ;
    End ;
    Procedure Facil_T_C ;
    Begin
    fillchar(guess_easy,sizeof(guess_easy),0) ;
    time := 0 ;
    c := 0 ;
    time := gettickcount ;
    b := 1 ;
    b := random (100) ;
    Writeln ('Enter a number between 1 and 100:') ;
    Repeat
    c := c + 1 ;
    Readln (a) ;
    If ((a in[1..100]) and not(guess_easy[a])) then Begin
    guess_easy[a] := true ;
    If a < b
    then Writeln ('Too small...') ;
    If a > b
    then Writeln ('Too big...') ;
    End else If (a in[1..100])
    then Writeln ('You have already guessed that number...')
    else Writeln ('Your number must be between 1 and 100!') ;
    Until a = b ;
    time:=trunc((gettickcount-time) div 1000) ;
    If a = b
    then Writeln ('You did it! The correct number was ',b,'!') ;
    Writeln ('You took ',c,' tries and ',time,' seconds to guess it.') ;
    End ;
    Procedure Facil_Tentativas ;
    Begin
    fillchar(guess_easy,sizeof(guess_easy),0) ;
    c := 0 ;
    b := 1 ;
    b := random (100) ;
    Writeln ('Enter a number between 1 and 100:') ;
    Repeat
    c := c + 1 ;
    Readln (a) ;
    If ((a in[1..100]) and not(guess_easy[a])) then Begin
    guess_easy[a] := true ;
    If a < b
    then Writeln ('Too small...') ;
    If a > b
    then Writeln ('Too big...') ;
    End else If (a in[1..100])
    then Writeln ('You have already guessed that number...')
    else Writeln ('Your number must be between 1 and 100!') ;
    Until a = b ;
    If a = b
    then Writeln ('You did it! The correct number was ',b,'!') ;
    Writeln ('You took ',c,' tries to guess it.') ;
    End ;
    Procedure Facil_Cronometro ;
    Begin
    fillchar(guess_easy,sizeof(guess_easy),0) ;
    time := 0 ;
    time := gettickcount ;
    b := 1 ;
    b := random (100) ;
    Writeln ('Enter a number between 1 and 100:') ;
    Repeat
    Readln (a) ;
    If ((a in[1..100]) and not(guess_easy[a])) then Begin
    guess_easy[a] := true ;
    If a < b
    then Writeln ('Too small..') ;
    If a > b
    then Writeln ('Too big...') ;
    End else If (a in[1..100])
    then Writeln ('You have already guessed that number...')
    else Writeln ('Your number must be between 1 and 100!') ;
    Until a = b ;
    time:=trunc((gettickcount-time) div 1000) ;
    If a = b
    then Writeln ('You did it! The correct number was ',b,'!') ;
    Writeln ('You took ',time,' seconds to guess it.') ;
    End ;
    Procedure Modo_Jogo ;
    Begin
    Writeln ('Choose the game mode:') ;
    Writeln ('') ;
    Writeln ('By tries: 1') ;
    Writeln ('By time: 2') ;
    Writeln ('Both: 3') ;
    Readln (f) ;
    Writeln ('') ;
    If (d = 1) and (f = 1)
    then Facil_Tentativas ;
    If (d = 1) and (f = 2)
    then Facil_Cronometro ;
    If (d = 1) and (f = 3)
    then Facil_T_C ;
    If (d = 2) and (f = 1)
    then Medio_Tentativas ;
    If (d = 2) and (f = 2)
    then Medio_Cronometro ;
    If (d = 2) and (f = 3)
    then Medio_T_C ;
    If (d = 3) and (f = 1)
    then Dificil_Tentativas ;
    If (d = 3) and (f = 2)
    then Dificil_Cronometro ;
    If (d = 3) and (f = 3)
    then Dificil_T_C ;
    End ;
    Procedure Dificuldade ;
    Begin
    Writeln ('Choose the difficulty:') ;
    Writeln ('') ;
    Writeln ('Easy: 1') ;
    Writeln ('Medium: 2') ;
    Writeln ('Hard: 3') ;
    Readln (d) ;
    Writeln ('') ;
    Modo_Jogo ;
    End ;
    Procedure Game_Over ;
    Begin
    Writeln ('Game Over') ;
    End ;
    Procedure Retry ;
    Begin
    Writeln ('') ;
    Writeln ('Try again? Y/N') ;
    Readln (e) ;
    If e = ('Y')
    then Dificuldade
    else Game_Over ;
    End ;
    Begin
    Dificuldade ;
    Repeat
    Retry ;
    Until e = ('N') ;
    End. // Ricardo Bastos, 10
Sign In or Register to comment.