Разработать программу, реализующую функции игры в бильярд.
Программа должна выводить в графическом режиме траекторию движения шарика в прямоугольном бильярде. Шарик можно считать точечным объектом, трением можно пренебречь. Столкновение шарика со стенками происходит по закону зеркального отражения. Входные параметры – скорость и направление начального удара по шарику. Учесть возможность попадания шарика в лузу.
18. Разработать программу, реализующую задачу “Кубик в лабиринте”.
На прямоугольном поле из X на Y квадратных клеток находится куб со стороной, равной длине стороны клетки. За один ход куб может перекатываться через ребро, перемещаясь на соседнюю по вертикали или горизонтали клетку. Между некоторыми клетками могут стоять стенки, которые являются препятствиями. Куб не может перекатываться через препятствия. Куб также не может покидать пределы поля.
Требуется определить минимальное число ходов, необходимых для того, чтобы переместить куб из заданной начальной клетки с координатами A и B в заданную конечную клетку с координатами C и D. При этом в конечном положении верхняя грань должна быть та же, что и в начальном положении.
Ограничения: Все числа натуральные, 2<=X,Y<=10;
Входной файл содержит следующую информацию:
- размеры поля X (по горизонтали) и Y (по вертикали), отделенные друг от друга одним или несколькими пробелами; координаты начальной клетки A и B и координаты конечной клетки C и D;
информация о стенках (пары чисел, говорящие о вертикальных стенках и пары чисел, говорящие о горизонтальных стенках).
19. Разработать программу, реализующую функции игры «Полоска».
Вводится целое число K>=1. Бумажная полоса разбита на N клеток (K <= N <= 40). Играют двое, по очереди выбирая и зачеркивая K пустых смежных клетки. Выигрывает сделавший последний ход.
1)Ввести N и определить, имеет ли игрок 1 выигрышную стратегию ( т.е. может ли игрок 1 выиграть при наилучших последующих ходах игрока 2). Сообщение вида 'У игрока 1 (не) существует выигрышная стратегия'.
2)Для N определить, имеет ли игрок 1,сделав заданный первый ход, выигрышную стратегию.
3)Провести игру для N и первого хода игрока 1. За второго игрока играет программа. Ходы первого вводятся с клавиатуры. Цель второго игрока - победа. Ход задается индекcoм ячейки L (1<=L<=N-K+1). При этом вычеркиваются клетки с индексами от L до L+K-1. После каждого хода выводится текущая позиция в виде
1 | 2 | 3 | ... | n |
* | * |
Сверху печатается номер позиции. Зачеркнутые клетки помечаются символом '*'. В конце игры выдать сообщение 'Победа игрока 1(2)'. При вводе N и K выдать подсказывающие сообщения 'N>'и 'K>', при вводе хода - 'Ход игрока 1>'. Предусмотреть контроль корректности входных данных.
20. Разработать программу, моделирующую игру «Морской бой».На поле 10х10 располагают корабли, которые не должны иметь общих точек. Два игрока вводят позиции в соответствующие элементы матрицы, тем самым определяя конфигурацию и положение кораблей. Игроки по очереди наносят удары по кораблям противника. После каждого хода выдаются сообщения: «мимо», «ранен», «убит». При этом соответствующие клетки помечаются крестиком или точкой.
21. Разработать программу, реализующую функции игры «Приз»
Правила игры: игровое поле представляет собой лабиринт, по которому игрок может перемещаться с помощью клавиш управления курсора. В случайном месте игрового поля возникает «приз». Задача игрока — добраться до приза раньше, чем он исчезнет. Если игрок достигает приза, он получает очко. Если игрок не успевает достичь приза, приз исчезает и в новом месте появляется новый приз. Таким образом, игра продолжается в течение определенного времени. Цель игры — набрать в течение этого времени наибольшее количество очков. Рекордное значение должно сохраняться, чтобы обеспечить дух соревнования.
22. Разработать программу,реализующую функции логической игры «Звезда».
Необходимо числа от 1 до 12 расположить в кружках данной шестиконечной числовой звезды, так чтобы она обладала следующим свойством: суммы чисел расположенных на каждой линии были равны.
23. Разработать программу, реализующую игру «Ним».
Имеются три кучки спичек. Двое играющих по очереди делают ходы. Каждый ход заключается в том, что из одной какой-то кучки берется произвольное ненулевое число спичек. Выигрывает взявший последнюю спичку.