Games - programa em modo console para advinhar numero que o usuario pensa

Top  Previous  Next

// fonte completo em modo console

program adivinhador;

 

{$APPTYPE CONSOLE}

 

var

  indice,t,i,j,k,maxtela,maxj,restart,maxpix:integer;

  x,num,n,escolha,pot2,nn:integer;

  v:array[1..20of integer;

  c:char;

 

begin

 writeln('O numero que sera adivinhado esta em que intervalo ? (nao maior do que 16383)');

 writeln('(recomenda-se 127)');

 write('De 0 ate ');

 readln(n);

 

 x:=1;

 indice:=1;

 v[indice]:=x;

 while n>=x do

  begin

   x:=2*x;

   indice:=indice+1;

   v[indice]:=x;

  end;

 writeln;

 writeln('Voce vera ',indice-1,' tabelas');

 writeln('Pense em um numero entre 0 e ',n,' e verifique se ele se encontra nas tabelas');

 writeln;

 writeln('.. pressione ENTER para continuar .. ');

 readln;

 

 escolha:=0;

 maxpix:=19;

 nn:=trunc(sqrt(n));

 if nn<maxpix then maxtela:=nn

  else maxtela:=maxpix;

 for t:=1 to indice-1 do

  begin

   restart:=0;

   pot2:=v[t];

   k:=0;

   num:=pot2-1;

   j:=0;

   while k<=n div 2 do

    begin

     for i:=1 to pot2 do

      begin

       num:=num+1;

       if num<=n then

       if num div 10 < 1 then write('   ',num)

       else if num div 10<10 then write('  ',num)

       else write(' ',num);

       k:=k+1;

       if num <=n then j:=j+1;

       if num div 10>=100 then if num div 10 >=1000 then maxj:=12 else maxj:= 15 else maxj:=maxtela;

       if j=maxj then

        begin

         writeln;

         j:=0;

         restart:=restart+1;

        end;

       if restart=16 then

        begin

         restart:=0;

         writeln;

         writeln('.. mais ..');

         readln;

        end;

      end;

      num:=num+pot2;

    end;

    writeln;

   repeat

    writeln;

    write('Seu numero esta nesta tabela ? (s/n)');

    readln(c);

   until ((c='s'or (c='S'or (c='n'or (c='N'));

   if ((c='s'or (c='S')) then escolha:=escolha+pot2;

 

  end;

  writeln;

  writeln('O numero que voce pensou eh ',escolha);

  writeln;

  readln;

end.