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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2015, 22:01   #1
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 231
Печаль Игра "Угадай число" и вывод списка чемпионов

Игрок 1 загадывает число в диапазоне 0 до 100. Игрок 2 пытается угадать число. Если число не угадано, программа выдает соответствующее сообщение с указанием больше или меньше данное число загаданного числа. Для каждого игрока запоминается число попыток. По окончании игры выводится список чемпионов по возрастанию числа попыток, а также определяется место игрока в этом списке.

Помогите пожалуйста, заранее спасибо...
manchester_alan вне форума Ответить с цитированием
Старый 07.01.2015, 22:13   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

думаете как будут взаимодействовать игроки с программой и реализуете это поэтапно

в чем конкретно проблемы то?

p.s. могу написать программу сию, за символическое вознаграждение
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 07.01.2015, 22:16   #3
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 231
По умолчанию

Код:
type List=record
Player:Byte;
name:string;
end;
var w:array[1..100]of List;
var x,o:List;
var i,j,t,n:integer;
 
procedure Ugadai(a,b:Integer);
 begin
  write('Количество игроков "B": '); Readln(n);
  Write('Игрок "A" вводит число, которое нужно угадать:'); read(a);
  t:=0;
  for i:=1 to n do
    begin
     with w[i] do
     begin
     write(i,' игрок "B" угадывает число: ');
     Write(' Число: '); read(b);
      if b>a then
       begin
        Writeln('Много');
        t:=t+1;
        Writeln;
        end
       else
         if b<a then
          begin
           Writeln('Мало');
           t:=t+1;
           Writeln;
          end
         else
      begin
       writeln;
       t:=t+1;
       writeln('ВЫ УГАДАЛИ!!!!!');
       Writeln('Число попыток:',t);
       writeln;
      end;
     end;
    end;
 end;

не ну я так написал примерно как угадать число, там попытки и сообщения эти... А вот как таблице чемпионов сделать??(

Последний раз редактировалось Stilet; 08.01.2015 в 07:44.
manchester_alan вне форума Ответить с цитированием
Старый 07.01.2015, 22:38   #4
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

таблицу чемпионов делать нужно через запись в файл, если хотите что бы она сохранялась после выключения программы.

после отгадывания числа записываете имя игрока и количество затраченных попыток в файл. вероятнее всего предварительно отсортировав "список чемпионов"

p.s. как понимаю в n вводится количество допускаемых попыток
p.p.s. вас устраивает как работает данная процедура ?

и почему вы передаете в процедуру переменную "a", а после в процедуре ее переопрелеляете ?

и да, оформляете код тэгами [ CODE ][ /CODE ], кнопка решетки в меню отправки сообщения
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 07.01.2015, 23:01   #5
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 231
По умолчанию

"n" это количество игроков, которые отгадывают...
ну я ее после этого еще переделывал, это первоначальный вариант как бы..)
а вот "a" не совсем понял, что я там переопределяю??

p.s. а как лучше запись в файл делать типизированный или нет? и только так возможно, через файл? по-другому никак? а то так не получалось...(
manchester_alan вне форума Ответить с цитированием
Старый 07.01.2015, 23:07   #6
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

ну так кидайте последний вариант, что бы не править уже отработанные ошибки и не мусолить старое

в процедуру передается и в ней же изменяется
Код:
Write('Игрок "A" вводит число, которое нужно угадать:'); read(a);
и учитывая что оно за пределами процедуры не используется, то она и не нужна

почитайте что такое локальные переменные (в самих процедурах и функциях видны) и глобальные (видны во всей программе)

легче всего и удобнее будет наверное типизированными, и запись вашу расширить (добавить еще количество попыток). И можно будет записывать/ считывать через эту запись. + сортировать сразу список/массив записей и перезаписать/обновить файл

p.s. не забывайте про оформление кода через кнопку #
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 07.01.2015, 23:22   #7
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 231
По умолчанию

Код:
type List=record
Player:Byte;
name:string;
end;
var w:array[1..100]of List;
var o:List;
var i,j,t,n,a,b:integer;

procedure Ugadai;
 begin
  write('Количество игроков "B": '); Readln(n);
  Write('Игрок "A" вводит число, которое нужно отгадать:'); read(a);
  t:=0;
  for i:=1 to n do
   begin
    with w[i] do
    begin
     while a<>b do
      begin
       write(i,' игрок "B" угадывает, число: '); read(b);
       if b>a then
          begin
            Writeln('Много!');
            t:=t+1;
            Writeln;
          end
       else
           if b<a then
            begin
              Writeln('Мало!');
              t:=t+1;
              Writeln;
            end
           else
       begin
        writeln;
        t:=t+1;
         writeln('ВЫ УГАДАЛИ!!!!');
         Writeln('Число попыток:',t);
        writeln;
        end;
       end;
    end;
   end;
 end;
ну я хотел чтобы сначала объявлялось сколько игроков играют, потом чтоб каждый из этих игроков угадал число и вместе с этим выявилось число попыток.. но у меня тут только один игрок получается и все..
manchester_alan вне форума Ответить с цитированием
Старый 07.01.2015, 23:44   #8
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

Код:
  write('Количество игроков "B": '); Readln(n);
  Write('Игрок "A" вводит число, которое нужно отгадать:'); read(a);
  for i := 1 to n do
  begin
    t := 0;
    b := -1;
    with w[i] do
    begin
      while a <> b do
добавить "обнуление" и можно будет давать отгадывать нескольким людям

можно еще подключить модуль окна
Код:
uses CRT;
и можно будет очищать экран, что бы стереть экран после ввода загаданного числа и его отгадывания
Код:
ClrScr;
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 07.01.2015, 23:49   #9
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 231
По умолчанию

оо спасибо огромнейшее за помощь)) дальше сам постараюсь...
manchester_alan вне форума Ответить с цитированием
Старый 07.01.2015, 23:55   #10
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

пожалуйста

почитайте про типизированные файлы, и сделаете "таблицу чемпионов"
ее лучше оформить отдельной процедурой, у которой будут входными данными имя пользователя и количество попыток.
ну и собственно вызывать ее в блоке:
Код:
begin
  writeln;
  t:=t+1;
  writeln('ВЫ УГАДАЛИ!!!!');
  Writeln('Число попыток:',t);
  writeln;
  // вот тут
end;
удачи
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
игра "УГАДАЙ ЧИСЛО" Энди Харрис Кина PHP 0 08.05.2012 10:04
Игра"Угадай число" в Паскале.(вставка таблицы рекордов) valli Помощь студентам 1 03.01.2011 14:04
Игра "угадай число" 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