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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2011, 19:23   #11
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
можно так сделать?
Цитата:
это тоже надо в цикле (только добавить 4 кнопку для выхода, а то бесконечно будем ходить или более конкретно определиться с содержанием квеста)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 22.07.2011, 19:26   #12
boldoc
Пользователь
 
Регистрация: 22.07.2011
Сообщений: 11
По умолчанию

я в паскале почти ни бум бум, но хотелось что-то типа
Код:
if (x=2) then переход на другую строчку кода
=)
boldoc вне форума Ответить с цитированием
Старый 22.07.2011, 19:31   #13
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Если уж хочется, метки в зубы и вперёд.
Пример
Код:
Label X,Y;
Var
     A : Integer;
Begin
        Readln(A);
        Case A of 
        1 : goto X;
        2 : goto Y;
        else Writeln('You are looser!');
        End;
        X :
        Writeln('A = 1');
        Readln;
        Halt(0);
        Y : 
        Writeln('A = 2');
        Readln;
        Halt(0);
End.
Приведённый мной код весьма и весьма индусский и обладает всеми свойствами спагетти, но .. вам хватит.

Последний раз редактировалось _-Re@l-_; 22.07.2011 в 19:35.
_-Re@l-_ вне форума Ответить с цитированием
Старый 22.07.2011, 19:33   #14
boldoc
Пользователь
 
Регистрация: 22.07.2011
Сообщений: 11
По умолчанию

Эмм, а по конкретней?
boldoc вне форума Ответить с цитированием
Старый 22.07.2011, 19:36   #15
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Обновил предыдущее сообщение.

P.S. Не исключаю в коде синтаксических ошибок, на паскале давненько не писал(Delphi не в счёт).
_-Re@l-_ вне форума Ответить с цитированием
Старый 22.07.2011, 19:40   #16
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Эм...
if (x=2) then переход на другую строчку кода — это где?
Кстати, тут ошибка
Код:
 if (y = 2) then writeln('Вы вышли на поляну');
    if (y = 3) then writeln('Вы вышли к ручью');
Эти if в теле первого if (про у=1) и соответственно мы к ним никогда не попадем т.к. в лесу у не изменяется
Отформатировали бы код нормально мб более понятно было.

Я имел в виду как-то так:
Код:
var
  a, x, y: integer;

begin
  repeat
    Writeln('Куда пойти? право-1, прямо-2, лево-3, выход из квеста-4');
    Read(y);
    if (y = 1) then 
    begin
      write('Вы вошли в лес. ');
      a := 0;
      repeat
        write('Bыберите куда идти: 1 — вглубь, 2 — назад: ');
        readln(x);
        case x of
          1: a := a + 1;
          2: a := a - 1;
        end;
        case a of
          1: write('Вы пришли к ...');
          2: write('Вы пришли к ...');
          3: write('Вы пришли к ...');
          0: write('Вы вернулись ко входу в лес. ');
        end;
      until a = -1;
    end;
    if (y = 2) then writeln('Вы вышли на поляну, но т.к. тут ничего интересного нет, вы сразу вернулись обратно');
    if (y = 3) then writeln('Вы вышли к ручью, но т.к. тут ничего интересного нет, вы сразу вернулись обратно');
  until y = 4;
  writeln('Конец квеста');
end.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 22.07.2011, 20:00   #17
boldoc
Пользователь
 
Регистрация: 22.07.2011
Сообщений: 11
По умолчанию

Ну у меня в принципе тот же результат был, всё отлично, но когда захожу в лес иду дальше то выдаёт вы пришли к землянке и сразу куа идти?
Код:
Program TextGame;
uses winCrt;
var
  a, x, y: integer;

begin
  repeat
    Writeln('Куда пойти? право-1, прямо-2, лево-3, выход из квеста-4');
    Read(y);
    if (y = 1) then
    begin
      write('Вы вошли в лес. ');
      a := 0;
      repeat
        write('Bыберите куда идти: 1 — вглубь, 2 — назад: ');
        readln(x);
        case x of
          1: a := a + 1;
          2: a := a - 1;
        end;
        case a of
          1: write('Вы пришли к землянке. тут опять появляется надпись "куда идти?"');
          2: write('...');
          3: write('...');
          0: write('Вы вернулись ко входу в лес. ');
        end;
      until a = -1;
    end;
    if (y = 2) then writeln('Вы вышли на поляну, но т.к. тут ничего интересного нет, вы сразу вернулись обратно');
    if (y = 3) then writeln('Вы вышли к ручью, но т.к. тут ничего интересного нет, вы сразу вернулись обратно');
  until y = 4;
  writeln('Конец квеста');
end.
если допсать эту ветку? например залезть в землянку-1 вернуться-2 не будет выдавать куда пойти?
boldoc вне форума Ответить с цитированием
Старый 22.07.2011, 20:06   #18
boldoc
Пользователь
 
Регистрация: 22.07.2011
Сообщений: 11
По умолчанию


Последний раз редактировалось boldoc; 22.07.2011 в 20:08.
boldoc вне форума Ответить с цитированием
Старый 22.07.2011, 20:08   #19
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну если "в лоб", то так:
Код:
        case a of
          1: 
            begin
              write('Вы пришли к землянке. Залезть внутрь — 1, спать — 2, идти дальше — 3: ');
              readln(x);
              case x of
                1: writeln('Вы посидели в землянке и пошли дальше. ');
                2: writeln('Вы поспали в землянке и пошли дальше. ');
                3: writeln('Вы решили не задерживаться у землянки и пошли дальше. ');
              end;
            end;
          2: write('Вы пришли к ...');
          3: write('Вы пришли к ...');
          0: write('Вы вернулись ко входу в лес. ');
        end;
Кстати, а вам важен результат или самому научиться программированию?)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 22.07.2011 в 20:11.
Alex11223 вне форума Ответить с цитированием
Старый 22.07.2011, 20:13   #20
BlackFishSQL
Форумчанин
 
Аватар для BlackFishSQL
 
Регистрация: 02.04.2011
Сообщений: 136
По умолчанию

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как зациклить макрос? Alexdoc76 Microsoft Office Excel 9 02.07.2011 21:00
Зациклить прогу - как? boris-blade Общие вопросы .NET 1 25.03.2010 19:32
Как зациклить макрос? kapitel_bc@ukr.net Microsoft Office Excel 7 13.02.2010 23:48
Как правильно зациклить?) Roman_ PHP 3 01.05.2009 15:56