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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2011, 13:58   #1
valli
 
Регистрация: 19.07.2010
Сообщений: 3
Вопрос Игра"Угадай число" в Паскале.(вставка таблицы рекордов)

Здравствуйте! Помогите пожалуйста дополнить игру "угадай число".
Нужно вставить в нее таблицу рекордов по 3 победителям.Я не знаю как это сделать((((Заранее спасибо
Код:
 program numbers;
uses Crt;
     const
     MAXLEV=5;  
     K_ENTER=13;
     K_ESC=27; 
type
     ArOfint=array[1..MAXLEV] of integer;
type
     win=record
     nik: string[20];
     step: integer;
     end;
winner=file of win;
var
     F:winner;
     igrok:ArOfint;
     comp:ArOfint; 
     level:integer;
     nu:integer;
     nm:integer;
     KeyCode:integer;
     otl:boolean;
     i,n,ans:integer;
     b: array[1..20] of win;
     w: win;

procedure GetComp(var a:ArOfInt;n:integer);
var
     i:integer;
begin
     randomize;
     for i:=1 to n do
     a[i]:=random(10);
     if otl then begin
        writeln;
        write('Combinaciya computera:');
        for i:=1 to n do write(a[i]);
        writeln;
     end;
end;

{====================================================================}

function ugad(comp,igrok:ArOfInt;n:integer):integer;
var
     u:integer; 
     i,j:integer;
     found:boolean;{TRUE,if igrok[i]=comp[j]}
begin
     u:=0;
     for i:=1 to n do 
begin
     j:=1;
     found:=FALSE;
repeat
       if igrok[i]=comp[j] then
         begin
           comp[j]:= -1; 
           u:=u+1;
           found:=TRUE;
         end
         else j:=j+1;
   until(j>n) or found;
end;
   ugad:=u;
end;

{====================================================================}

function mesto(comp,igrok:ArOfInt;n:integer):integer;
var
   m:integer;
   i:integer;
begin
   m:=0;
   for i:=1 to n do
     if comp[i]=igrok[i]
       then m:=m+1;
   mesto:=m;
end;

{===================================================================}

function GetIgrok(var a:ArOfint; n:integer; mes:string):integer;
var
   ch:char; 
   dec:integer;  
   x,y:integer; 
   i:integer;
   code:integer;
begin
   i:=1;
   write(mes);
   repeat
     ch:=readkey;
     dec:=ord(ch);
     if(ch>='0')and (ch<='9') and (i<=n)
       then  
       begin 
         write(ch);
         val(ch,a[i],code);
         i:=i+1;
      end
else  /
  if (dec=8) and (i>1)
   then
   begin
     i:=i-1;
     x:=whereX;
     y:=whereY;
     gotoXY(x-1,y);
     write(' ');
     gotoXY(x-1,y);
   end;
 until((i>n) and (dec=K_ENTER)) or (dec=K_ESC);
 GetIgrok:=dec;
end;

{=====================================================================}

procedure pravila(n:integer);
begin
   writeln;
   writeln;
   writeln('Computer zadumal cislo iz'  ,n,  'cifr.Vi dolgni ego otgodat.');
   write('Posle vvoda ocherdnogo cisla programma');
   writeln('soobhaet,skolko cifr');
   writeln('ugadano,i skolko iz nih nahoditsya na svoih mestah.','Naprimer,');
   writeln('esli zadumano cislo 435 i vvedeno 457','to ugadani 2 cifri,');
   writeln('i odna cifra nahoditsya na svoem meste.');
   writeln('Pri vvode mogno ispolzovat <BackSpase>.','Posle vvoda chisla');
   writeln('sleduet nagat klavishu <Enter> ili <Esc> dlya prekrasheniya igri.');
   writeln;
end;

{====================================================================}

procedure NewRecord;

var n,i: integer;

begin
        assign (F, 'records.txt');
        reset (F);
        while not eof(F) do read (F,b[i]);

        b[i+1]:=w;
        begin
                for i:=1 to sizeof(F) do
                if b[i].step>b[i+1].step then
                begin
                        w:=b[i];
                        b[i]:=b[i+1];
                        b[i+1]:=w;
                end;
        end;
close(F);

end;

{=====================================================================}

begin
   writeln ('Угадай число');
   writeln ('1. Играть');
   writeln ('2. �Просмотреть таблицу рекордов ');
   writeln ('‚Выберете действие');
   readln (ans);
   case ans of
   1:
   begin
   writeln ('Введети уровень сложности(от 2 до 5) ');
   readln (level);
   otl:=FALSE;
   n:=0;
   pravila(level);
GetComp(comp,level);
repeat
   KeyCode:=GetIgrok(igrok,level,'Vah variant -> ');
   if KeyCode<>K_ESC then begin
     nu:=ugad(comp,igrok,level);
     nm:=mesto(comp,igrok,level);
     n:=n+1;
     writeln('Ugadano:',nu,'.Na svoih mestah:',nm);
     writeln('Сделано попыток',n);
end;
until
((nu=level)and (nm=level)) or (KeyCode=K_ESC);
if KeyCode<>K_ESC
   then
   begin
        writeln('Yra!Vi ugadali chislo!!!');
        writeln('Сделано',n,'ходов');
        w.step:=n;
        writeln('Введите ваше имя- ');
        readln(w.nik);
        NewRecord;
   end
   else
   begin
     writeln('Igra zavershena po nagatiu <Esc>.');
     write('Zadumannoe chislo:');
     for i:=1 to level do
        write(comp[i]);
        writeln;
   end;
   write('Nagmite klavishu <Enter> dlya zaversheniya.');
readln;
end;
end;
end.

Последний раз редактировалось Serge_Bliznykov; 03.01.2011 в 15:59.
valli вне форума Ответить с цитированием
Старый 03.01.2011, 14:04   #2
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

я твой код несмотрел но есть такой вариант записівать результаті в текствый файл
Pein95 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра Delphi "Парные картинки". Как сделать таблицу рекордов? Ucm106 Помощь студентам 4 07.12.2010 03:06
Игра "Угадай число" Cause Помощь студентам 6 20.03.2010 17:45
Игра "угадай число" russian-stalker PHP 7 29.01.2010 21:39
Pascal - Игра "Угадай число" d_b Помощь студентам 8 16.02.2009 09:33
[Delphi] Игра "Угадай число" Bomber Помощь студентам 15 05.06.2008 09:34