pascalABC.net: При проигрыше, сообщение о том, что вы проиграли выводится два раза
Сделал игру угадай число, и так как в разных местах мне нужно делать одну и ту же проверку, я решил изучить функции и процедуры. Сделал функцию, что если попыток у игрока меньше или равно 0, то пишет У вас закончились попытки, перезапуск..., но когда заканчиваются попытки, эта фраза пишется 2 раза. Вот код:
uses crt;
label restart;
procedure wrn(text: string);
begin
writeln(text);
end;
function check1(at: integer): boolean;
var abc: boolean;
begin
if at <= 0 then begin
wrn('У вас закончились попытки!');
wrn('Перезапуск...');
check1 := True;
{print(at);}
end
else check1 := False;
{print(at);}
end;
begin
randomize;
var _restart: boolean;
var _attempts: integer;
restart: _restart := False;
_attempts := 10;
var random_number := random(100);
{print(random_number);}
var a := ReadInteger('Введите любое число от 1 до 100: ');
if a > 100 then begin
wrn('Вы написали число больше 100!');
_restart := True;
goto restart;
end;
while _restart <> True do
begin
var b := ReadInteger('Угадывайте: ');
if b > random_number then begin
check1(_attempts);
if check1(_attempts) = True then begin
goto restart;
end;
_attempts := _attempts - 1;
wrn('Ваше число больше загаданного.');
end;
if b < random_number then begin
check1(_attempts);
if check1(_attempts) = True then begin
goto restart;
end;
_attempts := _attempts - 1;
wrn('Ваше число меньше загаданного.');
end;
if b = random_number then begin
wrn('Вы угадали число!');
wrn('Перезапуск...');
_restart := True;
goto restart;
end;
end;
end.
Просьба не переделывать код полностью, а просто переделать тот момент, где я ошибся. На остальное можете просто указать, чтоб я в дальнейшем мог это изучить. Заранее спасибо!
Ответы (1 шт):
Все очень просто - вы дважды подряд вызываете функцию check1(), печать в которой происходит при исчерпании количества попыток. Причем результат первого вызова функции вы никак не используете. Поэтому две строки check1(_attempts); в разных блоках кода у вас совершенно лишние. Удалите или закомментируйте их:
check1(_attempts); // удалите или закомментируйте (встречается дважды в коде)
if check1(_attempts) = True then begin