Занимательное программирование на Паскале 1. Игра “Угадай число”.

Программирование в школе – всегда тема очень сложная для понимания. И хотя именно эта тема имеет очевидное практическое применение (а отсутствие такового – причина для ученика, чтобы заявлять, что это ему знать не надо), мало кто из учеников изучает ее с желанием.

Чтобы немного разнообразить изучение программирование, предлагаю несколько уроков посвятить “занимательному” программированию.

Я предлагаю ученикам создать собственные игры. Конечно, консольные.

И первая из них – это “Угадай число”.

Компьютер “загадывает” число из указанного диапазона. Задача пользователя – отгадать это число. Пользователь вводит свой вариант ответа, компьютер отвечает, как введенное число относится к загаданному (больше, меньше или равно). На отгадывание дается определенное количество попыток.

Примерный текст на экране:

Задание для учеников можно сформулировать так.

Самостоятельно сделайте следующее:

  1. Наберите в среде программирования исходный код приложения (размещен дальше по заданию).
  2. Дополните код, добавив в него еще два уровня сложности.
  3. Исправьте ошибку программиста (угадывание не прекращается, если число потраченных попыток превысило допустимое значение).
    Подсказка
    until (chislo=number)or(popytki=max);
  4. Доработайте программу таким образом, чтобы в случае неудачной игры пользователю выводилось сообщение о том, что он не угадал число.
  5. Доработайте программу таким образом, чтобы после завершения игры пользователю предлагалось либо завершить игру, либо начать заново. Во втором случае на экране должен снова появиться выбор сложности.

Исходный код проекта:

 

Полный исходный код программы со всеми исправлениями

program guessnumber;
var
b,uroven, chislo, popytki, number, max :integer;

begin
randomize;
writeln('###############################');
writeln('##### Игра "Угадай число" #####');
writeln('###############################');
repeat
writeln;
uroven:=0;
popytki:=0;

while (uroven<1) or (uroven>4) do  //Защита от неправильно введенного уровня
begin
writeln('Выберите уровень сложности:');
writeln('1 - Числа от 1 до 10, 3 попытки');
writeln('2 - Числа от 1 до 50, 5 попыток');
writeln('3 - Числа от 1 до 100, 8 попыток');
writeln('4 - Числа от 1 до 1000, 15 попыток');
readln(uroven);
end;

if uroven =1 then begin chislo:=random(10)+1; max:=3 end; 
if uroven =2 then begin chislo:=random(50)+1; max:=5 end;
if uroven =3 then begin chislo:=random(100)+1; max:=8 end;
if uroven =4 then begin chislo:=random(1000)+1; max:=15 end;

repeat
inc(popytki);
write('Попытка ',popytki,' Ваше число? ');
read(number);

if number>chislo then writeln('   Я загадал число поменьше') else
if number<chislo then writeln('   Я загадал число побольше') else
writeln('Вы угадали!')
until (chislo=number)or(popytki=max);
if (chislo<>number)and(popytki=max)then writeln('К сожалению, Вам не удалось отгадать число. Я загадал ',chislo);
writeln('Хотите сыграть еще раз? Если да, введите 1, если нет, то 0');
readln(b);
until b=0;
end.

 

Успехов в программировании!

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.