Занимательное программирование на Паскале 2. Игра “Однорукий бандит”.

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

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

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

Вторая из них – это “Однорукий бандит”.

У пользователя имеется некоторая начальная сумма кредитов, которую он может тратить на запуск слот-машины.
В случае выпадения одной 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.

 

Ответить

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

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