Игра 'Линии'

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    512,75 kb
  • Опубликовано:
    2012-03-16
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Игра 'Линии'













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

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

Тема

Игра «Линии»

Содержание


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

{_iNumOfBalls=0; //Шариков на поле пока нет_iNumOfPoints=0;//Количество очков (пока ноль)(GetTickCount()%32000); //Инициализируем датчик случайных чисел(int j=0;j<m_iNumOfRows;j++){(int i=0;i<m_iNumOfRows;i++){_field[i][j]=0; //заполняем поле нулями

}

}

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

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

}

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

{

x, y;//место, в которое кидаем шарикiColor; //цвет шарика(iNum!=0){(int i=0;i<iNum;i++){

//выбор свободного места{=rand()%m_iNumOfRows;=rand()%m_iNumOfRows;

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

//выбор цвета=rand()%m_iNumOfColors+1;(x,y,iColor); //ставим шарик нужного цветаInLine(x, y, false);

}true;

{

//обмен шарика и пустого местаiTmp;= m_field[xTo][yTo];(xTo, yTo, m_field[xFrom][yFrom]);(xFrom, yFrom, iTmp);

}

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

{

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

//int x1=x, y1=y;//координаты поля справа, слева и т.п.i;//смещение относительно точки (x, y)bSeeFuther;//смотрим ли далее

//число совпадений вправо, влево, вверх и внизiO=0, iW=0, iN=0, iS=0;

//число совпадений вправо-вверх, влево-вверх, вправо-вниз и влево-внизiNO=0, iNW=0, iSO=0, iSW=0;bRes =false;//возвращемое значение

{//если поле справа существует=false;(m_field[x+i][y]==m_field[x][y]){//и его цвет совпадает с цветом (x,y)++;//увеличиваем счётчик совпадений вправо=true;

}++;

};

//смотрим влево=true;=1;(x-i>=0 && bSeeFuther){//если поле справа существует=false;(m_field[x-i][y]==m_field[x][y]){//и его цвет совпадает с цветом (x,y)++;//увеличиваем счётчик совпадений вправо=true;

}++;

};

//смотрим вниз=true;=1;(y+i<iNumOfRows && bSeeFuther){//если поле справа существует=false;(m_field[x][y+i]==m_field[x][y]){//и его цвет совпадает с цветом (x,y)++;//увеличиваем счётчик совпадений вправо=true;

}++;

};

//смотри вверх=true;=1;(y-i>=0 && bSeeFuther){//если поле справа существует=false;(m_field[x][y-i]==m_field[x][y]){//и его цвет совпадает с цветом (x,y)++;//увеличиваем счётчик совпадений вправо=true;

}++;

};

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

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

bSeeFuther=true;=1;

//если поле справа внизу существует(x+i<iNumOfRows && y+i<iNumOfRows && bSeeFuther){=false;(m_field[x+i][y+i]==m_field[x][y]){//и его цвет совпадает с цветом (x,y)++;//увеличиваем счётчик совпадений вправо=true;

}++;

};

//смотрим вверх-влево=true;=1;(x-i>=0 && y-i>=0 && bSeeFuther){//если поле слева вверху существует=false;(m_field[x-i][y-i]==m_field[x][y]){//и его цвет совпадает с цветом (x,y)++;//увеличиваем счётчик совпадений вправо=true;

}++;

};

//смотрим вправо-вверх=true;=1;(x+i<iNumOfRows && y-i>=0 && bSeeFuther){//если поле справа вверху существует=false;(m_field[x+i][y-i]==m_field[x][y]){//и его цвет совпадает с цветом (x,y)++;//увеличиваем счётчик совпадений вправо=true;

}++;

};

//смотрим вниз-влево=true;=1;

(x-i>=0 && y+i<iNumOfRows && bSeeFuther){//если поле слева внизу существует=false;(m_field[x-i][y+i]==m_field[x][y]){//и его цвет совпадает с цветом (x,y)++;//увеличиваем счётчик совпадений вправо=true;

}++;

};

//запоминаем, сколько шариков было до удаленияiWasNumOfBalls = m_iNumOfBalls;(iS+iN+1>=5){//есть 5 в рядInLine(x,y-iN,x,y+iS);=true;

//return true;

}(iO+iW+1>=5){//есть 5 в рядInLine(x-iW,y,x+iO,y);=true;

//return true;

}

//есть 5 в ряд по диагонали слева-сверху справа-снизу(iNW+iSO+1>=5){InLine(x-iNW,y-iNW,x+iSO,y+iSO);=true;

//return true;

}

//есть 5 в ряд по диагонали справа-сверху слева-снизу(iSW+iNO+1>=5){InLine(x+iNO,y-iNO,x-iSW,y+iSW);=true;

//return true;

}(bAddPoints){_iNumOfPoints+=CalcPoints(iWasNumOfBalls-m_iNumOfBalls);

}bRes;//нет 5 в ряд

}ClinesDoc::CalcPoints(int iNumDeletedBalls)

{iRes;(iNumDeletedBalls<5){0;

}{= 2* iNumDeletedBalls*iNumDeletedBalls

*iNumDeletedBalls+60;

}iRes;

}ClinesDoc::Delete5InLine(int x1, int y1, int x2, int y2)

{

//удаляет 5 шариков, расположенных в ряд

//от поля (x1, y1) до поля (x2, y2).i;

//удаление по горизонтали(y1==y2){(i=x1;i<=x2;i++){(m_field[i][y1]!=0){(i,y1,0);

}

}

}

//удаление по вертикали(x1==x2){(i=y1;i<=y2;i++){(m_field[x1][i]!=0){(x1,i,0);

}

}

}

//удаление по диагонали сверху-слева - снизу-справа((x1<x2) && (y1<y2)){(i=x1;i<=x2;i++){(m_field[i][y1-x1+i]!=0){(i,y1-x1+i,0);

}

}

}

//удаление по диагонали снизу-слева - сверху-справа((x1>x2) && (y1<y2)){(i=y1;i<=y2;i++){(m_field[x1+y1-i][i]!=0){(x1+y1-i,i,0);

}

}

}

}

4. Алгоритм окончания программы.

void ClinesDoc::StopGame(void)

{(L"Игра закончена!");

//MessageBox(L"Игра закончена!+\nИгра закончена!+\nИгра закончена!+\nИгра закончена!+\nИгра закончена!");

}

В данной процедуре мы сначала при запуске кидаем 5 шариков в случайном порядке. Потом перетаскиваем шарики, чтобы собрать линию из 5 одинаковых шариков. Игра заканчивается, когда поле будет полностью заполнено.

программа алгоритм игра объектный ориентированный

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

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

На рис. 6 приведен вид программы в процессе игры.

Рис. 6

На рис. 7 демонстрируется результат когда игра завершена.

Рис. 7

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

1. Павловская, Т. А. C/C++. Программирование на языке высокого уровня / Т. А. Павловская. - СПб.: Питер, 2010. - 461 с.

2. Прата, С. Язык программирования С++. Лекции и упражнения / С. Прата. М.: Вильямс, 2006. - 1184 с.

3. Богуславский, А.А. Основы программирования на языке Си++. Часть 4: Программирование для Microsoft Windows с использованием Visual C++ и библиотеки классов MFC / А. А. Богуславский, С.М. Соколов. - Коломна: КГПИ, 2002. - 490 с.


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!