Условие задачи : Написать программу-игру которая задумывает число от 1 до 10 и предлагает пользователю угадать его за несколько попыток. Число попыток вводит пользователь.
Сложность : средняя .
Для того чтобы решить задачу мы будем использовать цикл repeat until, а условие выхода у нас будет превышение количества попыток.
Давайте создадим каркас с переменными :
uses crt; var limit, count, number, otvet : integer ; begin end.
Четыре переменные :
- limit — количество попыток
- count — какая по счету попытка
- number — число которое загадал компьютер
- otvet — число которое ввел пользователь
Теперь сделаем следующее , попросим пользователя ввести число попыток , также для генерации случайных числе нам нужно прописать randomize.
Сразу же давайте присвоим переменной count единицу, т.к. при заходе в цикл у нас будет первая попытка, а уже потом в самом цикле будем её увеличивать.
А переменной number присвоим какое-то случайное число.
write('Введите число попыток : '); readln(limit); randomize ; count := 1 ; number := random(10) + 1;
Теперь нужно добавить цикл, условие выхода которого будет превышение количества попыток.
repeat until(count > limit);
Что мы будем делать в самом цикле ?
Для начала мы выведем какая сейчас идет попытка. Затем попросим пользователя ввести число. Дальше уже у нас пойдут условия.
if (otvet = number) then begin writeln('Вы выиграли поздравляю!!!'); break; {выходим из цикла} end
Если мы угадали число то выводим что выиграли и выходим из цикла. Что если мы не угадали ?
else begin writeln('Вы не угадали!!!'); count := count + 1 ; end;
Если не угадали то выводим что не угадали и увеличиваем попытку на 1 .
Нам понадобиться еще одно условие.
if (count > limit) then begin writeln('Вы проиграли'); writeln('Это было число : ', number); end;
Нужно для того чтобы как только у нас кончились попытки вывести что мы проиграли и вывести число которое мы не угадали.
Весь код программы :
uses crt; var limit, count, number, otvet : integer ; begin clrscr; writeln('Игра "Угадай число"'); write('Введите число попыток : '); readln(limit); writeln('Компьютер загадал число от 1 до 10'); randomize ; count := 1 ; number := 1 + random(10); repeat write(count, ' попытка : '); readln(otvet); if (otvet = number) then begin writeln('Вы выиграли поздравляю!!!'); break; end else begin writeln('Вы не угадали!!!'); count := count + 1 ; end; if (count > limit) then begin writeln('Вы проиграли'); writeln('Это было число : ', number); end; until(count > limit); writeln('Для выхода из игры нажмите Enter'); readln; end.