ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 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;