Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

Игра "Линии"

Тип: курсовая работа
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
Создание программы, реализующей игру "Линии". Среда разработки программы, описание ее общего вида. Основные алгоритмы программы. Реализация программы в среде разработки Microsoft Visual Studio 2008 на языке объектно-ориентированного программирования С++.
Краткое сожержание материала:

Размещено на

КУРСОВАЯ РАБОТА

По дисциплине «Практика на ЭВМ»

Тема

Игра «Линии»

Содержание

1. Постановка задачи

2. Описание программы

2.1 Среда разработки программы

2.2 Описание общего вида программы

3. Описание основных алгоритмов

4. Примеры работы программы

Список литературы

1. Постановка задачи

Целью курсовой работы является создание программы, реализующую игру «Линии». На поле 10x10 позиций строятся линии из одноцветных шаров. Перед каждым ходом игрока на поле случайным образом появляются три разноцветных шара. Игрок перемещает шар по полю с помощью мыши. Если удалось построить линию из пяти шаров одного цвета, они исчезают. Игра заканчивается, если на поле не остается свободных позиций для вывода шаров. Реализовать статистику игры.

2. Описание программы

2.1 Среда разработки программы

Программа реализована в среде разработки Microsoft Visual Studio 2008 на языке объектно-ориентированного программирования С++ с применением библиотеки классов MFC (Microsoft Foundations Classes). Программа создана на основе MFC-приложения с однодокументным интерфейсом. Преимуществами использования MFC и однодокументного приложения являются:

Библиотека содержит многоуровневую иерархию классов, насчитывающую около 200 членов. Они дают возможность создавать Windows-приложения на базе объектно-ориентированного подхода;

возможность многократного использования одного и того же кода;

упрощение взаимодействия с прикладным программным интерфейсом (API) Windows.

2.2 Описание общего вида программы

Программа содержит одно основное окно: “Untitled-lines”. При запуске программы появляется окно “Untitled-lines”, показанное на рис. 1.

Рис. 1. Вид окна “Untitled-lines”

Приведем описание элементов, расположенных на данном окне.

Описание окна “Untitled-lines”

Окно “Untitled-lines” представляет собой основное окно программы, в котором отображается игра Линии.

Перечислим основные элементы данного окна:

1. Элемент “Поле” представляет собой графический элемент, на котором производится игра Линии.

2. Окно содержит два меню «Игра», «Справка».

Меню «Игра» содержит набор инструментов для управления программой (см. рис. 2). Оно имеет следующие пункты:

2.1. Пункт “Новая игра” - позволяет начать новую игру.

2.2 Пункт «Открыть» - позволяет открыть файл.

2.3 Пункт «Сохранить» - позволяет сохранить игру.

2.4 Пункт «Статистика» - позволяет вывести статистику игры (см. рис 3).

2.5 Пункт «Выход» - позволяет выйти из игры.

Рис.2 Вид окна «Игра»

Рис.3. Вид окна «Статистика»

3. Меню «Справка» содержит данные о проекте lines (см. рис. 4). Оно имеет один пункт:

3.1 «О проекте»: Отображает окно с технической информацией (см. рис.5).

Рис. 4. Меню «Справка»

Рис. 5. Вид окна «О проекте»

3. Описание основных алгоритмов

При запуске программы появляется диалоговое окно “Untitled-lines”. В окне идет реализация игры.

Приведем последовательность действий алгоритма работы программы:

Алгоритм сначала в случайном порядке кидает 5 шариков.

{

m_iNumOfBalls=0; //Шариков на поле пока нет

m_iNumOfPoints=0;//Количество очков (пока ноль)

srand(GetTickCount()%32000); //Инициализируем датчик случайных чисел

for(int j=0;j<m_iNumOfRows;j++){

for(int i=0;i<m_iNumOfRows;i++){

m_field[i][j]=0; //заполняем поле нулями

}

}

Throw3Balls(5);//кидаем пять начальных шариков.

CString s1;

s1.Format(L"5 balls, 0 points");

return TRUE;

}

2.Алгоритм действий производимых с шариком.

{

int x, y;//место, в которое кидаем шарик

int iColor; //цвет шарика

if(iNum!=0){

for(int i=0;i<iNum;i++){

//выбор свободного места

do{

x=rand()%m_iNumOfRows;

y=rand()%m_iNumOfRows;

}while(m_field[x][y]!=0);

//выбор цвета

iColor=rand()%m_iNumOfColors+1;

SetField(x,y,iColor); //ставим шарик нужного цвета

Is5InLine(x, y, false);

}

return true;

{

//обмен шарика и пустого места

int iTmp;

iTmp = m_field[xTo][yTo];

SetField(xTo, yTo, m_field[xFrom][yFrom]);

SetField(xFrom, yFrom, iTmp);

}

3. Алгоритм проверяет совпала ли линия.

{

//проверяет, есть ли 5 или более шариков подряд

//int x1=x, y1=y;//координаты поля справа, слева и т.п.

int i;//смещение относительно точки (x, y)

bool bSeeFuther;//смотрим ли далее

//число совпадений вправо, влево, вверх и вниз

int iO=0, iW=0, iN=0, iS=0;

//число совпадений вправо-вверх, влево-вверх, вправо-вниз и влево-вниз

int iNO=0, iNW=0, iSO=0, iSW=0;

bool bRes =false;//возвращемое значение

//смотрим вправо

bSeeFuther=true;

i=1;

while(x+i<iNumOfRows && bSeeFuther)

{//если поле справа существует

bSeeFuther=false;

if(m_field[x+i][y]==m_field[x][y]){//и его цвет совпадает с цветом (x,y)

iO++;//увеличиваем счётчик совпадений вправо

bSeeFuther=true;

}

i++;

};

//смотрим влево

bSeeFuther=true;

i=1;

while(x-i>=0 && bSeeFuther){//если поле справа существует

bSeeFuther=false;

if(m_field[x-i][y]==m_field[x][y]){//и его цвет совпадает с цветом (x,y)

iW++;//увеличиваем счётчик совпадений вправо

bSeeFuther=true;

}

i++;

};

//смотрим вниз

bSeeFuther=true;

i=1;

while(y+i<iNumOfRows && bSeeFuther){//если поле справа существует

bSeeFuther=false;

if(m_field[x][y+i]==m_field[x][y]){//и его цвет совпадает с цветом (x,y)

iS++;//увеличиваем счётчик совпадений вправо

bSeeFuther=true;

}

i++;

};

//смотри вверх

bSeeFuther=true;

i=1;

while(y-i>=0 && bSeeFuther){//если поле справа существует

bSeeFuther=false;

if(m_field[x][y-i]==m_field[x][y]){//и его цвет совпадает с цветом (x,y)

iN++;//увеличиваем счётчик совпадений вправо

bSeeFuther=true;

}

i++;

};

/////////////проверки диагоналей/////////////

//смотрим вправо-вниз

bSeeFuther=true;

i=1;

//если поле справа внизу существует

while(x+i<iNumOfRows && y+i<iNumOfRows && bSeeFuther){

bSeeFuther=false;

if(m_field[x+i][y+i]==m_field[x][y]){//и его цвет совпадает с цветом (x,y)

iSO++;//увеличиваем счётчик совпадений вправо

bSeeFuther=true;

}

i++;

};

//смотрим вверх-влево

bSeeFuther=true;

i=1;

while(x-i>=0 && y-i>=0 && bSeeFuther){//если поле слева вверху существует

bSeeFuther=false;

if(m_field[x-i][y-i]==m_field[x][y]){//и его цвет совпадает с цветом (x,y)

iNW++;//увеличиваем счётчик совпадений вправо

bSeeFuther=true;

}

i++;

};

//смотрим вправо-вверх

bSeeFuther=true;

i=1;

while(x+i<iNumOfRows && y-i>=0 && bSeeFuther){//если поле справа вверху существует

bSeeFuther=false;

if(m_field[x+i][y-i]==m_field[x][y]){//и его цвет совпадает с цветом (x,y)

iNO++;//увеличиваем счётчик совпадений вправо

Другие файлы:

Игры развивающие речевую функцию у детей
В данный сборник включены развивающие настольно-печатные игры в количестве 10 игр, направленные на обогащение словаря, развитие языкового анализа и си...

Вслед кувырком
Описание:Два уровня восприятия... Две линии сюжета... Два мира, в которых действуют близнецы Джек и Джилл. Первый - виртуальный мир Игры, в котором ид...

Предметы из сюжетов. Настольная развивающая игра-лото
Настольная развивающая игра-лото. Направлена на развитие речи, зрительного восприятия, памяти и логического мышления. Игра для детей 2-5 лет. Игра сос...

Исследование поведения линии с распределенными параметрами
Уравнения линии с распределенными параметрами. Эффект непрерывного изменения тока и электрического напряжения вдоль линии. Продольное активное сопроти...

Начала партий в шашки
Основательно рассмотрены 8 дебютов: старая партия, тычок, жертваКукуева, перекрёсток, косяк, игра Бодянского, обратная игра Бодянского,игра Каулена....