- •Общие положения
- •1 Разработка и реализация программы управления процессом имитационного моделирования информационно-вычислительной системы
- •Варианты заданий Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 8
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Рекомендуемая литература
- •Процесс p2
- •Требования к реализации
- •Требования к отчёту
- •Варианты
- •3 Разработка и программная реализация параллельных игровых алгоритмов
- •Задание 1 Курсовая работа «Крестики-нолики»
- •Задание 2 Курсовая работа «Игра "3 пальца"»
- •Задание 3 Курсовая работа «Гонки»
- •Задание 4 Курсовая работа «Морской бой»
- •Задание 5 Курсовая работа «Червяки»
- •Задание 6 Курсовая работа «Пакман»
- •Задание 7 Курсовая работа «Распределённое вычисление простых чисел»
- •Задание 8 Курсовая работа «Параллельный волновой алгоритм»
- •Задание 9
3 Разработка и программная реализация параллельных игровых алгоритмов
Все курсовые работы выполняются под ОС Linux.
Предполагается, что будет использован язык C++.
Задание 1 Курсовая работа «Крестики-нолики»
Интерфейс – консольный или графический на выбор студента.
Должна присутствовать возможность играть вдвоем или против компьютера.
Ход каждого игрока просчитывается в отдельном потоке.
(При работе в паре: первый делает игру против компьютера, второй – против человека).
Подробное описание.
Требуется реализовать программу на языке C или C++ под OS Linux. Интерфейс с пользователем можно осуществлять через консоль.
Пример интерфейса:
...
.x.
o..
Т.е. в начале каждого хода достаточно выводить 3 строки по 3 символа, которые отображают текущее состояние клетки поля - пустая, установлен нолик, установлен крестик.
(Аналогичный консольный интерфейс допустим и для всех остальных курсовых работ).
В игре участвуют два игрока.
Для их обработки требуется создать 2 дополнительных потока (threads).
За весь вывод на экран в любом случае должен отвечать только один основной поток. (Это относится ко всем курсовым работам).
Пример последовательности взаимодействия потоков показан на следующей диаграмме:
Задание 2 Курсовая работа «Игра "3 пальца"»
Интерфейс – консольный.
Количество игроков = 2. Управлять каждым может как человек, так и компьютер.
Ход каждого игрока просчитывается в отдельном потоке.
Требуется организовать взаимодействие нескольких процессов: 2 игрока и 1 ведущий (т.е. подсчет суммы).
Вывод результата на экран производится в основном потоке.
Суть задачи: игроки одновременно показывают 1, 2 или 3 пальца. Далее ведущий подсчитывает сумму очков S (по общему количеству показанных пальцев). Если сумма четная, то выигрывает второй игрок, иначе выигрывает первый игрок. Выигравший игрок добавляет эту сумму S к своим очкам, проигравший вычитает S из своих очков. Изначально у каждого игрока ноль очков.
Количество раундов задается в параметрах командной строки при запуске приложения. После окончания игры требуется вывести финальное количество очков каждого игрока.
(При работе в паре: первый делает игру против компьютера, второй – против человека).
Задание 3 Курсовая работа «Гонки»
Интерфейс – консольный или графический на выбор студента.
Игроки только компьютерные.
Суть задачи: на экране постепенно заполняется несколько (от 2 до 10) полосок (progress bar). Каждый ход каждая полоска получает случайное приращение.
За обработку хода каждой полоски отвечает отдельный поток.
Вывод результатов гонки на экран производятся в основном потоке.
Задание 4 Курсовая работа «Морской бой»
Интерфейс – консольный или графический на выбор студента.
Количество игроков = 2. Управлять каждым может как человек, так и компьютер.
Суть задачи:
В начале игры задается расположение кораблей каждого игрока – чтением координат кораблей из файла или случайным образом. В процессе расстановки кораблей программа должна проверить то, что их количество верное: 1 из 4 клеток, 2 из 3 клеток, 3 из 2х, 4 корабля по 1 клетке. Корабли не могут соприкасаться краями и углами. Корабли не могут быть изогнуты или установлены по диагонали, т.е. все клетки корабля располагаются либо горизонтально, либо вертикально.
В начале каждого хода экран очищается и выводится 2 поля 10x10 клеток.
На поле игрока, который сейчас должен ходить, отмечены пораженные клетки и корабли. На втором поле отмечены только пораженные клетки. Если в пораженной клетке был корабль, то это должно быть также указано (цветом или особым символом).
Ход игрока состоит в указании координат клетки поля соперника, которая далее будет считаться пораженной. В случае нахождении корабля в пораженной клетке, ход остается у того же игрока, в противном случае ход переходит противнику.
За обработку хода каждого игрока отвечает отдельный поток.
(При работе в паре: первый делает игру против компьютера, второй – против человека для 2 игроков).
Обязательное дополнение для реализации параллельных процессов:
Компьютерный игрок в процессе ожидания завершения хода другого игрока (неважно, компьютерного или нет) должен составить для себя список последовательности клеток, по которому он собирается поражать клетки другого игрока. Таким образом, к началу своего хода, компьютер уже должен быть готов ходить без дополнительных размышлений. В случае обнаружения корабля противника, компьютерный игрок должен начать построение списка с нуля, с учетом выясненной информации. Но построение нового списка должно начаться только когда ход перейдет к противнику, текущий ход будет производиться без использования списка, непосредственным выбором координат стрельбы.
