Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовые работы ОС.doc
Скачиваний:
26
Добавлен:
12.08.2019
Размер:
159 Кб
Скачать
☆

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 игроков).

Обязательное дополнение для реализации параллельных процессов:

Компьютерный игрок в процессе ожидания завершения хода другого игрока (неважно, компьютерного или нет) должен составить для себя список последовательности клеток, по которому он собирается поражать клетки другого игрока. Таким образом, к началу своего хода, компьютер уже должен быть готов ходить без дополнительных размышлений. В случае обнаружения корабля противника, компьютерный игрок должен начать построение списка с нуля, с учетом выясненной информации. Но построение нового списка должно начаться только когда ход перейдет к противнику, текущий ход будет производиться без использования списка, непосредственным выбором координат стрельбы.