无法使Pascal正常工作

时间:2011-04-17 13:30:50

标签: pascal

以下代码有什么问题?当我输入数字时它会崩溃。

我花了2个多小时才想出来,但仍然不能,我学习pascal所以请耐心等待。

Program Game;

var
  PlayerOneScore: Integer;
  PlayerTwoScore: Integer;
  BallsNo: Integer;
  CurrentScore: Integer;
  Ptr: Integer;
  Result: Integer;

Begin
  CurrentScore := 0;
  PlayerOneScore:= 0;
  PlayerTwoScore:= 0;
  Writeln('How many balls do you wish to face?');
  Readln(BallsNo);
  Ptr:=BallsNo;
  While Ptr < 1 Do
  Begin
    Repeat
      Ptr:=Ptr+1;
      CurrentScore:=0;
      Writeln ('Player turn');
      Writeln ('Please roll the bowling die');
      Writeln ('Enter 1 if result is a 1');
      Writeln ('Enter 2 if result is a 2');
      Writeln ('Enter 3 if result is a 4');
      Writeln ('Enter 4 if result is a 6');
      Writeln ('Enter 5 if result is a 0');
      While BallsNo >0 Do
      Begin
        Repeat
          Writeln('This is',BallsNo);
          Readln(Result);
          BallsNo:=BallsNo-1;
        Until BallsNo = 0;
        If Result = 1 Then
          CurrentScore:= CurrentScore+1
        Else If Result = 2 THEN
          CurrentScore:= CurrentScore+2
        Else If Result = 3 THEN
          CurrentScore:= CurrentScore+4
        Else If Result = 4 THEN
          CurrentScore := CurrentScore+6
      End;
    Until Ptr=2;
  End;

  If Ptr = 1 Then
    PlayerOneScore := CurrentScore
  Else
    PlayerTwoScore := CurrentScore;
  If PlayerOneScore > PlayerTwoScore Then
    Writeln('Player One Wins');
  If PlayerTwoScore > PlayerOneScore Then
    Writeln('Player Two Wins');
  If PlayerOneScore = PlayerTwoScore Then
    Writeln('Tie');
End.

4 个答案:

答案 0 :(得分:1)

PTR:= 1; 而Ptr&lt; 1做

这是你的问题。我相信你必须用BallsNo替换1。

答案 1 :(得分:1)

更改

而Ptr&lt; 1

虽然Ptr&gt; 1

你在算法中有一个错误的循环。

-Cheers!

答案 2 :(得分:0)

并不总是初始化CurrentScore。 尝试插入“CurrentScore:= 0;”在第一个“开始”之后。

另外,你怎么知道它崩溃了? 也许它只是不打印任何东西。 如果您在“结束”之前添加“如果PlayerOneScore = PlayerTwoScore Then Writeln('Tie')”会发生什么?

答案 3 :(得分:0)

请不要说“崩溃”。它给你一些错误信息,它是什么?

你也遇到了一个问题,即无论一个球员得分为零。不过,这不会导致崩溃。