Игра "Линии"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
КУРСОВАЯ РАБОТА
По диiиплине Практика на ЭВМ
Тема
Игра Линии
Содержание
1. Постановка задачи
. Описание программы
.1 Среда разработки программы
.2 Описание общего вида программы
. Описание основных алгоритмов
. Примеры работы программы
Список литературы
1. Постановка задачи
Целью курсовой работы является создание программы, реализующую игру Линии. На поле 10x10 позиций строятся линии из одноцветных шаров. Перед каждым ходом игрока на поле случайным образом появляются три разноцветных шара. Игрок перемещает шар по полю с помощью мыши. Если удалось построить линию из пяти шаров одного цвета, они исчезают. Игра заканчивается, если на поле не остается свободных позиций для вывода шаров. Реализовать статистику игры.
2. Описание программы
.1 Среда разработки программы
Программа реализована в среде разработки Microsoft Visual Studio 2008 на языке объектно-ориентированного программирования С++ с применением библиотеки классов MFC (Microsoft Foundations Classes). Программа создана на основе MFC-приложения с однодокументным интерфейсом. Преимуществами использования MFC и однодокументного приложения являются:
- Библиотека содержит многоуровневую иерархию классов, насчитывающую около 200 членов. Они дают возможность создавать Windows-приложения на базе объектно-ориентированного подхода;
- возможность многократного использования одного и того же кода;
- упрощение взаимодействия с прикладным программным интерфейсом (API) Windows.
.2 Описание общего вида программы
Программа содержит одно основное окно: Untitled-lines. При запуске программѾграммы
Программа содержит одно основное окно: 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. В окне идет реализация игры.
Приведем последовательность действий алгоритма работы программы:
- Алгоритм сначала в случайном порядке кидает 5 шариков.
{_iNumOfBalls=0; //Шариков на поле пока нет_iNumOfPoints=0;//Количество очков (пока ноль)(GetTickCount()000); //Инициализируем датчик случайных чисел(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;//возвращемое значение
//смотрим вправо=true;=1;(x+i<iNumOfRows && bSeeFuther)
{//если поле справа существует=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;
}++;