Christmas 2000 Exercise (3i)
HKCEE 1999 Paper 2 (3)
3.(a)
procedure init(var b:boxarray);
var I:integer;
begin
for I:=1 to 6 do
b[I]:=2
end;
(b)
procedure rules(var b : boxarray; num : integer);
var temp : integer;
begin
b[num] :=b[num] + 2;
temp :=num-1;
if temp = 0 then
temp :=6;
b[temp] :=b[temp]-1;
temp :=num+1;
if temp=7 then
temp :=1;
b[temp] :=b[temp]-1;
end;
(c)
procedure displaybox(b:boxarray);
var I:integer;
begin
writeln(_Box # :1 2 3 4 5 6_);
write(_Value : _);
for I:=1 to 6
write(b[I], _ _);
writeln
end;
(d)
function endgame(b:boxarray):boolean;
var I:integer;
andg:boolean;
begin
endg:=false;
for I:=1 to 6 do
if b[I]<0
then endg:=true;
endgame:=endg
end;
(e)
program game(input, output);
typeboxarray = array[1..6] of integer;
var box : boxarray;
turn : string;
n : integer;
begin
init(box);
displaybox(box);
repeat
writeln;
if turn=
‘Player_then turn:=
‘Computer_else begin
turn:= _Player_;
write(_Press<enter> to roll the dice._);
end;
readln;
randomize;
n:=random(6) + 1;
writeln(turn, _rolls a
‘, n, _._);rules(box, n);
displaybox(box)
until endgame(box);
if turn = _Player_
then writeln(_Computer wins._)
else writeln(_Player wins._)
end.