Программирование в школе – всегда тема очень сложная для понимания. И хотя именно эта тема имеет очевидное практическое применение (а отсутствие такового – причина для ученика, чтобы заявлять, что это ему знать не надо), мало кто из учеников изучает ее с желанием.
Чтобы немного разнообразить изучение программирование, предлагаю несколько уроков посвятить “занимательному” программированию.
Я предлагаю ученикам создать собственные игры. Конечно, консольные.
Вторая из них – это “Однорукий бандит”.
У пользователя имеется некоторая начальная сумма кредитов, которую он может тратить на запуск слот-машины.
В случае выпадения одной 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.
