Программирование в школе – всегда тема очень сложная для понимания. И хотя именно эта тема имеет очевидное практическое применение (а отсутствие такового – причина для ученика, чтобы заявлять, что это ему знать не надо), мало кто из учеников изучает ее с желанием.
Чтобы немного разнообразить изучение программирование, предлагаю несколько уроков посвятить “занимательному” программированию.
Я предлагаю ученикам создать собственные игры. Конечно, консольные.
Вторая из них – это “Однорукий бандит”.
У пользователя имеется некоторая начальная сумма кредитов, которую он может тратить на запуск слот-машины.
В случае выпадения одной 7 выигрыш 5 кредитов.
В случае выпадения двух 7 выигрыш 25 кредитов.
В случае выпадения трех 7 выигрыш 100 кредитов.
Пример окна вывода
Наберите текст программы.
Исправьте ошибки программиста (не отслеживается семерка в позиции сотен, не учитывается вариант когда выпали все три семерки).
Доработайте программу, добавив в нее возможность вносить не одну монету, а 2 или 3. Выигрыш увеличивается в 2 или 3 раза соответственно.
Добавьте окончание игры после достижения баланса отрицательного значения.
Полный исходный ход, со всеми доработками.
program bandit; var balans, a, number, win, k:integer; begin randomize; writeln('###############################'); writeln('### Игра "Однорукий бандит" ###'); writeln('###############################'); writeln; balans:=100; win:=0; writeln('На вашем счете ',balans,' кредитов. Крутим автомат.'); repeat writeln('Сколько монет бросаем? (От 1 до 3)'); readln(k); if (k>0) and (k<4) then begin balans:=balans-k; number:=random(1000); writeln('На автомате выпало ',number:4); if number mod 10 = 7 then inc(win); if (number div 10)mod 10 = 7 then inc(win); if number div 100 = 7 then inc(win); if win=0 then begin writeln('Вы ничего не выиграли :(') end; if win=1 then begin writeln('Ваш выигрыш ',5*k,'!!!'); balans:=balans+5*k end; if win=2 then begin writeln('Ваш выигрыш ',25*k,'!!!'); balans:=balans+25*k end; if win=2 then begin writeln('Ваш выигрыш ',100*k,'!!!'); balans:=balans+100*k end; win:=0; end else writeln('Вы ввели неправильное число.'); writeln('На вашем счете ',balans,' кредитов. Крутим автомат? 1 - Да, 0 - Нет'); readln(a); until (a=0)or(balans=0); writeln('Поздравляем! Вы успешно ушли от автомата! В Вашем кошельке побрякивают ',balans,' монет'); end.