Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Ответ
 
Опции темы
Старый 05.04.2018, 20:18   #1
Dekvin
Новичок
 
Регистрация: 05.04.2018
Сообщений: 5
Репутация: 10
Печаль Два компилятора, один код и две проблемы.

В общем, написал я основу для курсовой работы на компиляторе на телефон (первый курс , а компилятор назывался pascal N-IDE), переношу весь код на пк в pascalABC и он пропускает оператор read во время боя ( первая часть) и не выводит карту (вторая часть).
Код:

program game; 

const
  x = 20;
  y = 20;


var
  a, v, n, k, hod, cB, score, h, weaponYron, sila, lovkost, smekalka, metcost: Integer;
  name: String;
  weapon: String;
  otvet: string;
  parol: string;
  endBattle: Boolean;
  yron, hpVrag, hpgg, MaxHpGg, yronVraga: real;
  i, j, g: integer;
  xGg, yGg: integer;
  o: String;
  map: array [1..x, 1..y] of char;

function battle: char;

begin
  writeln();
  hpVrag := 100;
  writeln('На тебя напал Голум, без кольцовый');
  repeat 
    endBattle := false;
    yronVraga := random(26);
    writeln('                  хп Голума: ', hpVrag: 2: 2);
    writeln('');
    writeln('');
    writeln('хп ', name, ': ', hpgg: 2: 2);
    writeln('1)Атака ', weapon);
    writeln('2)Умения');
    writeln('3)Побег');
    read(parol);
    if parol = '1' then
      begin
        yron := (random(101) mod (weaponYron)) + (sila / 10);
        hpVrag := hpVrag - yron;
        writeln('Ты попал по врагу на ', yron, ' урона');
        writeln('');
        writeln('');
      end ;
    if parol = '2' then
      begin
        writeln('1)Навальный удар.');
        writeln('2)Щит России.');
        writeln('3)Природное исцеление.');
        writeln('4)Жириковская буря');
        read(k);
        if k = 1 then
          begin
            yron := ((random(101) mod (weaponYron)) + (sila / 10)) * 1.4;
            hpVrag := hpVrag - yron;
            writeln('Этим нечеловечесуим ударом ты нанёс ', yron: 5: 2);
          end ;
        if k = 2 then
          begin
            yronVraga := 0;
            writeln('Ты Полностью защитился от удара!');
          end ;
        if k = 3 then
          begin
            hpgg := hpgg + ((MaxHpGg / 100) * 45);
            if hpgg > MaxHpGg then
              hpgg := MaxHpGg ;
            writeln('Вау! Ты исцелился!');
          end ;
        if k = 4 then
          begin
            writeln('Ты создал маленькое тёмное облачко и кинул его в потивника.');
            yron := smekalka / random(8);
            v := random(101);
            if v < 25 then
              begin
                writeln('Вау, критическое попадание!!!');
                yron := yron * (metcost / (10 + random(51)));
              end ;
            if (v >= 25) and (v <= 80) then
              writeln('Ты попал по нему.') ;
            if v > 80 then
              begin
                writeln('Ты промахнулся...');
                yron := 0;
              end ;
            hpVrag := hpVrag - yron;
          end ;
      end ;
    if parol = '3' then
      begin
        writeln('Зря ты, фраер, сдал назад.');
        writeln('Ты сбежал.');
        endBattle := true;
      end ;
    if ((parol <> '1') and (parol <> '744') and (parol <> 'Пылькин') and (parol <> 'gba') and (parol <> '3') and (parol <> '2')) or ((k >= 5) and (k <= 0)) then
      writeln('Ты просто пропустил свой ход!!!') ;
    writeln('Голум нанёс тебе ', yronVraga);
    writeln();
    writeln();
    if hpVrag <= 0 then
      begin
        score := score + 100;
        endBattle := true;
        break ;
      end ;
    if hpgg <= 0 then
      begin
        writeln('Game Over.');
        exit;
      end ;
    hpgg := hpgg - yronVraga;
    if parol = 'gba' then
      begin
        writeln('Я, Великое Божество, дарую тебе своё благославление и это оружие');
        writeln('Получен Божественный Тапочек');
        weapon := 'Божественный тапочек';
        weaponYron := 999999999;
      end ;
    if parol = '744' then
      begin
        MaxHpGg := MaxHpGg * 10;
        hpgg := hpgg * 10 + (MaxHpGg - hpgg);
        if hpgg > MaxHpGg then
          hpgg := MaxHpGg ;
        writeln('Ты вдруг стал здоровее!');
      end ;
    if parol = 'Пылькин' then
      begin
        writeln('Пылькин: "Что тут происходит,а?     Лещя дам тому, кто меня не слушает!"');
        v := random(101);
        if v > 50 then
          begin
            writeln('Так это ', name, ' меня не слушает? Ну держись!!!');
            hpgg := hpgg / 1000;
          end 
        else 
          begin
            writeln('Так это Голум меня не слушает? Ну держись!!!');
            hpVrag := hpVrag / 1000;
          end;
      end ;
  until endBattle = true;
end; 

begin
  sila := 10;
  lovkost := 10;
  smekalka := 10;
  metcost := 10;
  MaxHpGg := 100;
  h := 10000;
  score := 0;
  writeln('Введите имя');
  repeat 
    read(name);
    writeln(name, ' ? Верно?');
    writeln('1)да.');
    writeln('2)нет.');
    read(v);
    if v = 2 then
      writeln('Тогда как-же тебя зовут?') ;
  until (v = 1);
  if name = 'Dekvin' then
    begin
      sila := sila + 99;
      lovkost := lovkost + 99;
      smekalka := smekalka + 99;
      metcost := metcost + 99;
    end ;
  //write('И выходит, программист необразованый дурак, неспособный скачать рабочий компилятор.@Программист')
  writeln('Здравствуй, ', name, ', здесь и наступит твой конец!!!');
  hpVrag := 100;
  hpgg := 100;
  weapon := 'Палка';
  weaponYron := 10;
  writeln(battle);
  
  writeln('Вот и закончился тренеровочный бой, и тебе теперь доступна карта.');
  readln();

Dekvin вне форума   Ответить с цитированием
Старый 05.04.2018, 20:21   #2
Dekvin
Новичок
 
Регистрация: 05.04.2018
Сообщений: 5
Репутация: 10
По умолчанию

Код:

map[1, 1] := '/';
  map[1, y] := '\';
  map[x, 1] := '\';
  map[x, y] := '/';
  for i := 2 to y - 1 do 
    begin
      for j := 2 to x - 1 do 
        begin
          map[i, j] := (' ');
        end;
    end;
  for i := 2 to x - 2 do 
    begin
      map[1, i] := '-';
      map[20, i] := '-';
      if i = 10 then
        begin
          g := random(2);
          if g = 0 then
            map[1, 10] := '#' ;
          if g = 1 then
            map[20, 10] := '#' ;
        end ;
    end;
  for j := 2 to y - 1 do 
    begin
      map[j, 1] := '|';
      map[j, 19] := '|';
      if j = 10 then
        begin
          g := random(2);
          if g = 0 then
            map[10, 1] := '#' ;
          if g = 1 then
            map[10, 19] := '#' ;
        end ;
    end;
  yGg := 10;
  xGg := 10;
  while (o <> 'Выход') do 
    begin
      for i := 1 to y do 
        begin
          for j := 1 to x do 
            begin
              if (yGg = i) and (xGg = j) then
                begin
                  map[yGg, xGg] := '@';
                  write(map[yGg, xGg]);
                  map[i, j] := 1;
                  cB := random(101);
                end ;
              write(map[i, j]);
            end;
          writeln();
        end;
      if (cB >= 0) and (cB <= 45) then
        begin
          writeln('На тебя напали!');
          writeln();
          writeln(battle) 
        end ;
      read(o);
      if o = 'вверх' then
        begin
          yGg := yGg - 1;
          map[yGg + 1, xGg] := ' ';
          if yGg <= 1 then
            begin
              yGg := 2;
              writeln('Дальше стена.');
            end ;
        end ;
      if o = 'вниз' then
        begin
          yGg := yGg + 1;
          map[yGg - 1, xGg] := ' ';
          if yGg >= 20 then
            begin
              yGg := 19;
              writeln('Дальше стена.');
            end ;
        end ;
      if o = 'вправо' then
        begin
          xGg := xGg + 1;
          map[yGg, xGg - 1] := ' ';
          if xGg >= 19 then
            begin
              xGg := 18;
              writeln('Дальше стена.');
            end ;
        end ;
      if o = 'влево' then
        begin
          xGg := xGg - 1;
          map[yGg, xGg + 1] := ' ';
          if xGg <= 1 then
            begin
              xGg := 2;
              writeln('Дальше стена.');
            end ;
        end ;
      for i := 1 to 5 do 
        writeln();
      writeln('Очки: ', score);
    end;
end.

Dekvin вне форума   Ответить с цитированием
Старый 05.04.2018, 20:32   #3
min@y™
Цифровой кот
Профессионал
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Адрес: 1600, пенсильвания-авеню, п.г.т. верхний Вашингтонск, 8126 км от МКАД, от поста ГАИ - налево.
Сообщений: 7,649
Репутация: 2371

icq: 100500
skype: kick-ass
По умолчанию

__________________
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума   Ответить с цитированием
Старый 05.04.2018, 20:39   #4
Dekvin
Новичок
 
Регистрация: 05.04.2018
Сообщений: 5
Репутация: 10
По умолчанию

просто не понимаю, почему возникли эти 2 проблемы и хочу узнать, можно ли их как-то исправить (и почему они возникли).

Последний раз редактировалось Dekvin; 06.04.2018 в 06:34. Причина: дополнение
Dekvin вне форума   Ответить с цитированием
Старый 08.04.2018, 09:55   #5
Dekvin
Новичок
 
Регистрация: 05.04.2018
Сообщений: 5
Репутация: 10
По умолчанию

Спасибо за помощь (если кто и собирался помочь), но я уже разобрался с проблемами. И если кому интересно (или может кому пригодится) то в цикле он пропускает read, но не пропускает readln. А во второй части надо поочерёдно элементы карты присваивать (тоесть сначала задать значения для верхней границе, потом для "тела" карты и уже потом только нижнюю границу, иначе не выводит на экран коректно).
Dekvin вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Один роутер-две сети Ципихович Эндрю Свободное общение 7 30.04.2015 03:32
Две даты, а праздник один ! Bustle Свободное общение 8 23.06.2011 01:47
У компилятора проблемы со свечами Morkonwen Visual C++ 8 11.11.2010 14:44
один файл, две программы... Deathwatcher Общие вопросы Delphi 0 18.11.2008 13:39
как в PhotoShop два файла скеить в один pdf файл? Допустим я нарисовал 2 страницы книги и мне их нужно объединить в один pdf N!ckeL Моделирование, изометрия, photoshop, 3d редакторы 2 15.05.2008 19:34


08:58.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru