ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.03.2025
Просмотров: 196
Скачиваний: 1
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
Филиал ФГБОУ ВПО «Национальный исследовательский университет «МЭИ» в городе Смоленске
КУРСОВОЙ ПРОЕКТ
РАЗРАБОТКА ПРОГРАММЫ ДЛЯ ИГРЫ
Морской бой («человек+ машина»)В C++
Выполнил работу студент группы ПЭ1-12
Бутяйкин Н.Н.
Проверил работу преподаватель
Образцов. С.А.
СМОЛЕНСК 2014
Оглавление
|
1. |
Введение. |
3 |
|
2. |
Техническое задание. |
4 |
|
3. |
Краткое сведенье об игре морской бой. |
5 |
|
4. |
Анализ технического задания. |
7 |
|
6. |
Тестинг программы. |
7 |
|
7. |
Блок-схема программы. |
8 |
|
8. 9. 10. |
Исходный текст программы. Заключение Список используемой литературы |
9 31 31 |
|
1010.9. |
|
|
Введение
Игра – непременный спутник развития человечества. На стадии игры выполняется чрезвычайно важные функции. Они использовались для социализации подрастающего поколения, для подготовки к коллективной охоте, для тренировки. Но учебно-тренировочные функции были не главными в древней игровой деятельности; главное поле игры.
Игра – основной вид деятельности ребенка. С.Л. Рубинштейн отмечал, что игра хранит и развивает. По мнению Д.Б. Эльконина, «в игре не только развиваются или заново формируются отдельные интеллектуальные операции, но и коренным образом изменяется позиции ребенка и взрослого в отношении к окружающему миру и формируется механизм возможной смены позиции и координации своей точки зрения с другими возможными точками зрения ».
Целью данной курсовой работы является создание игры «Морской бой», ее теории и практики. Морской бой – это обманчиво простая игра для развития и логики, которая стала одной из самых популярных игр. Цель игры: потопить корабли противника раньше него.
ТЕХНИЧЕСКОЕ ЗАДАНИЕ
Написать консольную программу, для игры Морской бой. В качестве проверки работоспособности программы сыграть в него.
Рисунок 1 Тестовый вариант игры морской бой
Предметная область:
Реализовать консольную программу для игры морской бой. Вводными данными будет размер поля+ количество кораблей+ последовательность ходов. Выводными данными будет содержимое клеток и конец игры(выигрыш/проигрыш).
КРАТКОЕ СВЕДЕНЬЕ ОБ ИГРЕ МОРСКОЙ БОЙ
Описание.
«Морской бой» — игра для двух участников, в которой игроки по очереди называют координаты на неизвестной им карте соперника. Если у соперника по этим координатам имеется корабль (координаты заняты), то корабль или его часть «топится», а попавший получает право сделать ещё один ход. Цель игрока — первым поразить все корабли противника.
Правила размещения кораблей (флота)
Игровое поле — квадрат 10×10 каждого игрока, на котором размещается флот кораблей.
Горизонтали обычно нумеруются сверху вниз, а вертикали помечаются буквами слева направо. При этом используются буквы русского алфавита от «а» до «к» (буквы «ё» и «й» обычно пропускаются), либо буквы латинского алфавита от «a» до «l» (пропускается буква «j»). Иногда используется слово «республика» или «снегурочка», так как в этих 10-буквенных словах ни одна буква не повторяется. Поскольку существуют различные варианты задания системы координат, то об этом лучше заранее договориться.
Размещаются:
-
1 корабль — ряд из 4 клеток («линкоры», или «четырёхпалубные»)
-
2 корабля — ряд из 3 клеток («крейсеры», или «трёхпалубные»)
-
3 корабля — ряд из 2 клеток («эсминцы», или «двухпалубные»)
-
4 корабля — 1 клетка («подлодки», или «однопалубные»)
Другой вариант названия: -трубные (напр. двухтрубный).
При размещении корабли не могут касаться друг друга углами (встречаются, однако, варианты, когда это не запрещается).
Кроме того, встречаются варианты игры, когда корабли могут размещаться в виде квадрата («четырехпалубные») или буквой «Г» («трех-» и «четырехпалубные»).
Рядом со «своим» квадратом чертится «чужой» такого же размера, только пустой. Это участок моря, где плавают чужие корабли противника.
При попадании в корабль противника — на чужом поле ставится крестик. Попавший стреляет ещё раз.
История.
Игра была "придумана" в 1931 году Милтоном Брэдли (Milton Bradley). Точнее "настольная игра" выпущена его компанией как коммерческий продукт. Идея игры пришла во время первой мировой войны, в которой было много морских сражений. Хотя есть данные, что игра существовала в "бумажном" варианте (как мы в школьные годы играли) существенно раньше, еще до Первой мировой войны, и истинный автор неизвестен.
АНАЛИЗ ТЕХНИЧЕСКОГО ЗАДАНИЯ
Запуск программы осуществляется следующим образом: необходимо открыть папку, содержащую данную игру, и найти исполняемый файл. Сначала необходимо указать количество и размер кораблей, при расстановки кораблей используются кнопки мыши (правая- повернуть корабль на 900, левая зафиксировать корабль на поле), затем выбираешь кто стреляет первый и начинаешь играть. При попадании в корабль противника ставиться крестик и закрашиваются клетки в которых не может быть других кораблей. Когда заканчивается игра открывается поле противника и выводится сообщение о победе или поражении.
Тестинг программы
В ходе работы приложения мы получим выходной файл с нашей реализацией морского боя, в формате .xmp, который мы можем просмотреть простым блокнотом или при помощи Total Commander.
XMP – гибкая платформа метаданных (Extensible Metadata Platform – XMP). Этот формат создан для добавления информации в файл. Формат XMP разработан так, что файл может прочитать любая программа, в том числе не умеющая работать с XMP. XMP используется в PDF, фотографии и редактировании изображений.
БЛОК-СХЕМА ПРОГРАММЫ
ИСХОДНЫЙ ТЕКСТ ПРОГРАММЫ
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "shipsu.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma resource "*.dfm"
#include "AboutForm.cpp"
//---------------------------------------------------------------------------
TForm1 *Form1;
//-------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::side_x(int x,int y,int a,int b,int c,int d,int f)
{
if ( x>=a )
{
comp.put_bit(x+b,y,3);
}
comp.put_bit(x+c, y,3);
IComp->Canvas->Draw((x+d)*25,y*25,BitMapm);
IComp->Canvas->Draw((x+f)*25,y*25,BitMapm);
}
void __fastcall TForm1::side_y(int x,int y,int a,int b,int c,int d,int g)
{
if ( y>=a )
{
comp.put_bit(x,y+b,3);
}
comp.put_bit(x, y+c, 3);
IComp->Canvas->Draw(x*25,(y+d)*25,BitMapm);
IComp->Canvas->Draw(x*25,(y+g)*25,BitMapm);
}
void __fastcall TForm1::side(int x, int y, int control)
{
int vector_free2_w=0;
int vector_free3_w=0;
int vector_free2_o=0;
int vector_free3_o=0;
int vector_free2_n=0;
int vector_free3_n=0;
int vector_free2_s=0;
int vector_free3_s=0;
int vect_w=0; // для выбора направления по массиву
int vect_n=0; // для выбора направления по массиву
int vect_o=0; // для выбора направления по массиву
int vect_s=0; // для выбора направления по массиву
int vect_1w=0; // для выбора направления по массиву
int vect_1n=0; // для выбора направления по массиву
int vect_1o=0; // для выбора направления по массиву
int vect_1s=0; // для выбора направления по массиву
int vect_2w=0; // для выбора направления по массиву
int vect_2n=0; // для выбора направления по массиву
int vect_2o=0; // для выбора направления по массиву
int vect_2s=0; // для выбора направления по массиву
int array_around[12][2]={{ 0,-1},
{ 0,-2},
{ 0,-3},
{ 0, 1}, // 3 3 3 3 3 3 3 3 3 3
{ 0, 2}, //
{ 0, 3}, // 1 2 * 0 1 2 * 3 3 2 * 0 3 2 * 1 3 2 * 0
{-1, 0}, // 0 3 0 3 0 3 0 3 0 3
{-2, 0}, //
{-3, 0},
{ 1, 0},
{ 2, 0},
{ 3, 0}};
vect_12_wm=0; // 1 max 1
vect_13_wm=0;
vect_14_wm=0;
vect_12_om=0;
vect_13_om=0;
vect_14_om=0;
vect_12_nm=0;
vect_13_nm=0;
vect_14_nm=0;