语法错误,';'预期,但'直到'发现

时间:2013-11-23 19:47:41

标签: pascal

我的Pascal代码有问题。 有一些错误,我不知道在哪里。

program GTA6;

uses
  Crt;

var
  obraz, x, mampistoli, mamnuz: Integer;
begin
  clrscr;
  randomize;
  obraz := 1;

  repeat
    clrscr;
    if obraz = 1 then
    begin
      writeln('Je 9:00 rano. Probudis se ve svem byte. Nekdo ti zvoni na dvere. Pujdes otevrit(2) nebo budes zvonek ignorovat(3)?');
      readln(obraz);
      if (obraz <> 2) and (obraz <> 3) then
        obraz := 1;
    end
    else
    if obraz = 2 then
    begin
      writeln('Otevres dvere a jsou tam dva dvoumetrovy plesaty chlapi s pistolema v ruce. Prej dluzis jejich sefoj 200 000 Kc a chce je vratit do 19:00 jinak te prijdou zabit.');
      writeln('  Sahnout po pistoli(4), nedelat nic (5)');
      readln(obraz);
      if (obraz <> 2) and (obraz <> 3) and (obraz <> 4) and (obraz<> 5) then
        obraz := 2;
    end
    else
    if obraz = 5 then
    begin
      if mampistoli <> 1 then
      begin
        writeln('Odesli. Ty zjistis, ze nemas 200 000.');
        writeln('vzit si pistoli(1), nebo si vzit nuz(2)');
        readln(x);
        if x = 1 then
          mampistoli := 1;
        if x = 2 then
          mamnuz := 1;
      end;
      writeln('Takhle narychlo tolik penez nesezenes...budes muset udelat banku, nebo tak neco.');
      writeln('Vyloupit banku (6), trafiku (7), vykr st auto (8)');
      readln(obraz);
      if (obraz <> 6) and (obraz <> 7) and (obraz <> 8) then
        obraz := 5;
    end
    else
    if obraz = 6 then
    begin
      if mampistoli = 1 then
      begin
        writeln('Rozhodl jsi se vyloupit banku s pistoli.');
        writeln('Hlidac videl tvoji zbran a vystrelil po tobe!');
        x := random(100);
        if x < 50 then
          writeln('Trefil te primo do hlavy!');
        writeln('Zemrel jsi!');
        obraz := 0;
      end;
    until obraz = 0;

  writeln('KONEC HRY');
  if x > 50 then
    writeln('Netrefil se!');
  readln;
end.

哪里有问题?

3 个答案:

答案 0 :(得分:0)

end;声明之前添加until

答案 1 :(得分:0)

您遗失了end;个语句之一的if

这两个if语句从代码块开始:

end else if obraz=6 then begin
  if mampistoli=1 then begin

但只有一个end;来结束它们。

如果您仔细缩进代码,则更容易发现此类问题。

答案 2 :(得分:0)

repeat
...
    end else if obraz=6 then
    begin
        if mampistoli=1 then 
        begin
            writeln('Rozhodl jsi se vyloupit banku s pistoli.');
        writeln('Hlidac videl tvoji zbran a vystrelil po tobe!');
        x:=random(100);
        if x< 50 then writeln('Trefil te primo do hlavy!');
            writeln('Zemrel jsi!');
        obraz:=0;
        end;
    END; <---
until obraz=0;