以下代码有什么问题?当我输入数字时它会崩溃。
我花了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.
答案 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)
请不要说“崩溃”。它给你一些错误信息,它是什么?
你也遇到了一个问题,即无论一个球员得分为零。不过,这不会导致崩溃。