Логическая игра "Маджонг"
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
Пояснительная записка является полным описанием готового программного средства и принципа его работы.
Пояснительная записка содержит все необходимые разделы.
В разделе «Введение» указана оценка современного состояния решаемой проблемы, исходные данные для разработки курсового проекта, перечень решаемых в работе задач.
В разделе «Анализ задачи» описана предметная область, описаны существующие аналоги, описана функциональная модель программы, инструменты разработки программного продукта, требования к программе.
В разделе «Проектирования
задачи» описывается
В разделе «Реализация» описывается логическая и физическая организация данных, функциональное тестирование.
В разделе «Применение» описывается назначение программы, область применения, среда разработки, использование системы помощи.
В разделе «Список использованных источников» указан список литературы и других источников, которые были использованы при написании данной курсовой работы.
В разделе «Приложения»
представлен графический
1 Анализ задачи
1.1 Описание предметной области
Техническое задание данной работы требует разработать программу в интегрированной среде Microsoft Visual Studio 2012 на языке C#, являющейся логической игрой «Маджонг».
Правила игры:
В ходе игры необходимо очистить игровое поле, убирая одинаковые фишки. Удаляться они могут только в том случае, если у фишки открыта хотя бы одна сторона. Сложность игры зависит от раскладки. Чем больше открытых фишек, тем проще их убирать с поля. Игра может длиться долгое время.
Данная программа
предназначена для развлекатель
- позволяет поиграть в логическую игру «Маджонг» в соответствиями с правилами;
- улучшает реакцию;
- повышает внимательность.
Данная программа должна иметь простой и удобный интерфейс, так как в логическую игру «Маджонг» могут играть люди любого возраста, начиная от 5 лет.
Немало важным является и внешнее оформление программы, всё должно быть выполнено в едином стиле, чтобы не раздражало глаз пользователя.
1.2 Функциональная модель
Данное ПО предоставляет следующие основные функции:
- выбор уровня сложности игры;
- управление игровым процессом;
- переключение изображений фишек;
- вызов справки о программе;
- вызов окна с информацией о разработчике;
- выход из программы.
Последовательность и взаимодействие функций представлено на рисунке 1.1
Рисунок 1.1 – Последовательность и взаимодействие функций
1.3 Модель данных
Вызов окна о программе – выдаёт окно о программе.
Вызов справки – выдаёт справку по работе с программой.
Функция «Новая игра» – позволяет начать новую игру.
Функция «Уровень сложности» – позволяет сменить уровень сложности.
Функция «Фишки» – позволяет сменить изображения фишек.
Функция «Выход» – осуществляет выход из программы.
1.4 Инструменты разработки
Язык разработки: C#.
Среда разработки: Microsoft Visual Studio 2012.
Microsoft Visual Studio 2012 – линейка продуктов компании Microsoft, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework и Microsoft Silverlight.
Средство проектирования и моделирования: Rational Rose.
Rational Rose - средство
объектно-ориентированного
Работа в Rational Rose основывается на построении различного рода диаграмм, описывающих проект.
Основные свойства Rational Rose:
- охват всех этапов разработки проекта;
- построение моделей на основе методов Буча и OMT с возможностью автоматического преобразования нотаций;
- возможность повторного использования программных разработок пользователей за счет средств реинжениринга;
- наличие средств автоматического контроля, позволяющих вести отладку проекта по мере его разработки;
- возможность описания проекта на разных уровнях для различных категорий пользователей;
- удобный для пользователя графический интерфейс;
- автоматическая генерация кодов на языках С++, Ada (компиляторы поставляются), Smalltalk, SQLWindows, VisualBasic, PowerBuilder;
- наличие средств групповой разработки;
- широкий спектр применения системы - базы данных, банковские системы, телекоммуникация, системы реального времени, большие информационные системы и т.д.
Типы диаграмм, поддерживаемые Rational Rose:
- диаграммы классов (Classes);
- диаграммы состояний и переходов (State Transition Diagram);
- диаграммы сценариев объектов (Object Message Diagram);
- диаграммы сценариев сообщений (Message Trace Diagram);
- диаграммы модулей (Modules);
- Диаграммы процессов (Processes);
Rational Rose обеспечивает
единство модели, автоматически
поддерживая согласованность,
Программа для создания справки Help & Manual.
Help & Manual - удобный
инструмент, упрощающий создание
всех стандартных форматов
Help & Manual также генерирует Webhelp, PDF и Word RTF. В дополнение к этому можно генерировать полностью отформатированные печатные руководства непосредственно из тех же проектов, используемых для всех других форматов.
Вывод PDF и печатанных руководств полностью настраивается с программой пакета Print Manual Designer: можно включить оглавление и указатель ключевых слов, автоматическую страницу отношений для ссылок и перекрестных ссылок, настроить разметку страниц, заголовков, нижних колонтитулов, нумерацию страниц, обложку, введение и так далее.
1.5 Требования к программе
Программа должна быть разработана в интегрированной среде разработки Microsoft Visual Studio 2012 на языке C#.
Функциональные требования:
- выбор уровня сложности игрового процесса;
- выбор изображений фишек;
- возможность начала новой игры;
- наличие окна «О программе»;
1.6 Системные требования
Для нормальной работы программы требуется компьютер с характеристиками не менее чем:
- процессор не ниже 1Ггц;
- ОЗУ не ниже 512 Мб;
- свободным дисковым пространством не менее 50 Мб;
- наличие колонок или наушников для поддержки звукового сопровождения.
Требования к ОС:
- Windows XP;
- Windows 7;
- Windows 8.
На всех перечисленных ОС должен быть установлен .NET Framework 4.0.
2 Проектирование задачи
2.1 Организация данных
При написании программы был использован объектно-ориентированный подход к программированию.
При заполнении игрового поля, изображения фишек подгружаются из папок с программой.
Музыкальные файлы подгружаются при вызове необходимых событий в процессе работы программы.
2.2 Процессы
Данное ПО было разработано при помощи языка C#, в среде разработки Microsoft Visual Studio 2012.
Преимуществами данного приложения являются:
- не загруженность интерфейса;
- музыкальное сопровождение игрового процесса;
- повышение внимательности и улучшение реакции;
- нет никаких сложностей при установке на ПК.
2.3 Концептуальный прототип
Данная программа очень удобна в использовании. Программа является логической игрой, состоящую из 8Х8 фишек. Фишки можно выбирать мышью. Игровой процесс состоит из выбора сначала одной фишки, а потом другой. Если фишки совпали, то они удаляются с игрового поля. Фишки удаляться только в том случае, если они не заблокированы, хотя бы с одной стороны или две одинаковые фишки стоят впритык. Игра длиться до того момента, пока не истечет время, либо пока в процессе игры не удаляться все фишки.
2.4 Система помощи
Система помощи представлена в виде интегрированной справки (рисунок 2.1). Вызывается она с помощью пункта главного меню «Помощь»-> «Справка» на главной форме программы, на которой отображается игровое поле В ней описывается запуск и работа программы.
Рисунок 2.1 – Окно справки
Основные кнопки:
- кнопка «Новая» позволяет запустить новую игру;
- кнопка «Настройка» позволяет сменить изображения фишек и сменить уровень сложности;
- кнопка «Помощь» позволяет получить информацию о программе и справочную информацию по работе с программой;
- кнопка «Выход» для закрытия приложения.
2.5 Тесты на использование
При запуске программы появляется окно заставки (рисунок 2.2).
Рисунок 2.2 – Заставка
После окна заставки появляется окно выбор уровня сложности игрового процесса (рисунок 2.3).
Рисунок 2.3 – Выбор уровня сложности
Главная форма представляет собой игровое поле 8Х8 фишек.
Рисунок 2.4 – Главная форма
С главной формы можно вызвать окно справки (рисунок 2.5).
Рисунок 2.5 – Окно справки
А также окно «О программе» (рисунок 2.6).
Рисунок 2.6 – Окно «О программе»
Данная программа прошла тестирование среди учащихся группы 132. В результате этого были произведены некоторые изменения в игровом алгоритме программы.
3 Реализация
3.1 Функции: логическая и физическая организация
Вся программа основывается на отображении игрового поля 8Х8, состоящего из фишек с изображениями. В данной логической игре требуется, путем удаления одинаковых рядом лежащих или незаблокированных фишек, освободить все игровое поле. На любом этапе выполнения программы можно получить справочную информацию с помощью пункта главного меню «Помощь» -> «Справка», краткую информацию о программе и разработчике с помощью пункта главного меню «О программе».
3.2 Функции и элементы управления
Перечень основных подпрограмм для решения задач:
Данная программа является логической игрой «Маджонг», суть которой удалить все ячейки с игрового поля до истечения таймера.
В качестве элементов управления используются кнопки:
- кнопка «Новая игра», после нажатия на которую начинается новая игра;
- кнопка «Настройка» содержит кнопки «Фишки» и «Уровень сложности»;
- кнопка «Фишки» позволяет сменить изображения фишек;
- кнопка «Уровень сложности» позволяет сменить уровень сложности игрового процесса;
- кнопка «Помощь» содержит кнопки «Справка» и «О программе»;
- кнопка «Справка» для вызова справки;
- кнопка «О программ» для вызова сведений о программе;
- кнопка «Выход» для закрытия приложения.
3.3 Функциональное тестирование
Тестирование процесс исследования программного обеспечения с целью получения информации о качестве продукта.
Конечной целью любого процесса тестирования является обеспечение такого ёмкого понятия как качество, с учётом всех или наиболее критичных для данного конкретного случая составляющих.
Качество можно определить как совокупную характеристику исследуемого ПО с учётом следующих составляющих:
- надёжность;
- сопровождаемость;
- практичность;
- эффективность;
- мобильность;
- функциональность.
Для тестирования данного программного средства мной было выполнено ряд действий. В таблице 3.1 приведены результаты тестирования программного продукта.
Таблица 3.1 – Результаты тестирования программного продукта
Действие |
Результат |
Запуск программы |
Программа запускается корректно без ошибок, идёт загрузка. |
Выбор уровня сложности |
После нажатия на одну из трех кнопок, появится главная форма с таймером обратного отсчета со значением, в зависимости от выбранного уровня сложности. |
Нажатие на две рядом лежащие одинаковые фишки |
Фишки удалятся. |
Нажатие на две разные фишки |
Фишки не удалятся. |
Вызов функции «Справка» |
Отображается справочная информация по работе с программой. |
В ходе тестирования были обнаружены ошибки в алгоритме программы и ошибки в интерфейсе. Все обнаруженные ошибки были мной устранены, после чего я провел повторное тестирование программы.
3.4 Полное тестирование
Данная программа была протестирована на различных компьютерах, на ОС Windows XP,Windows 7 и Windows 8 с установленным .NET Framework 4.0, различными пользователями. Никаких ошибок и несоответствия к предъявленным требованиям к данному ПО не обнаружено.
В результате чего, можно сделать вывод, что программа «Маджонг» пригодна для использования конечным пользователем.
4 Применение
4.1 Назначение
Логическая игра «Маджонг» предназначена для развлекательного времяпровождения. Также игра позволяет повысить внимательность и увеличить реакцию. Программа подходит для использования в учреждениях дошкольного типа и школах. В игру могут играть люди от 5 лет. Также программу можно использовать в конкурсах на скорость удаления фишек.
4.2 Среда функционирования
Средой функционирования являются операционные системы платформы Windows NT: Windows XP, Windows Vista, Windows 7. Также на компьютере должен быть установлен NET Framework 4.0.
4.3 Инсталляция
Для того, чтобы полноценно пользоваться данным программным продуктом, необходимо скопировать папку с программой на жесткий диск.
Рисунок 4.1 – Папка с программой на жестком диске
Рисунок 4.2 – Содержимое папки с программой
4.4 Сообщения системы
При нажатии на кнопку или «Выход» в любом окне программы выскакивает системное сообщение «Точно выйти?».
При нажатии на кнопку «Да» вы выходите из программы, при нажатии на кнопку «Нет» отменяете это действие.
Рисунок 4.3 – Окно подтверждения выхода из программы
ЗАКЛЮЧЕНИЕ
Мною была разработана логическая игра «Маджонг» в соответствии с предъявленными требованиями, а именно:
- удобный и простой интерфейс;
- выбор уровня сложности игрового процесса;
- игровой процесс в соответствии с правилами.
При разработке программы мною были использованы знания полученные в ходе теоритических и практических занятий по предмету «Конструирование программ и языки программирования».
- СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- Методические указания по выполнению курсовых и дипломных проектов. Специальность: 2-40 01 01 «Программное обеспечение информационных технологий»;
- Интернет-ресурсы: www.programmersforum.ru, www.cyberforum.ru, www.msdn.microsoft.com, www.habrahabr.ru;
- Музыкальные файлы взяты с ресурса www.newgrounds.com по лицензии Creative Commons.
ПРИЛОЖЕНИЕ А
(обязательное)
Текст программы
Окно «Заставка»
private void timer1_Tick(object sender, EventArgs e)
{
if (progressBar1.Value != 100)
{
++progressBar1.Value;
}
else
{
timer1.Stop();
this.Close();
}
Окно «Выбор уровня сложности»
private void button1_Click(object sender, EventArgs e)
{
int mtimer = 1;
SetLevel(mtimer);
Close();
}
private void button2_Click(object sender, EventArgs e)
{
int mtimer = 2;
SetLevel(mtimer);
Close();
}
private void button3_Click(object sender, EventArgs e)
{
int mtimer = 3;
SetLevel(mtimer);
Close();
}
Окно «Новая игра»
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void button1_Click(object sender, EventArgs e)
{
Form1 fMainForm = new Form1();
fMainForm.Close();
fMainForm.NewGameClick();
}
Окно «Главная форма»
public partial class Form1 : Form
{
int x, y, x1, y1, x2, y2,sec;
public int mtimer=1;
bool find = false;
string path=@"graph\skins\Классика\";
int[,] cMap = new int[10,10];
Random random = new Random();
PictureBox firstClicked = null;
PictureBox secondClicked = null;
String[,] MassivA = new String[8, 8];
int[,] Map = new int[10, 10];
List<int> xlist = new List<int>();
List<int> ylist = new List<int>();
public WMPLib.WindowsMediaPlayer WMP = new WMPLib.WindowsMediaPlayer();
public Form1()
{
InitializeComponent();
Splash();
SelectLevel();
PlayMusic(@"sound\main.mp3");
GetSettings();
AssignIconsToSquares();
SetMassiv();
SetMap();
TimerDown();
}
private void SetLevel()
{
}
public void PlayMusic(string sound_path)
{
WMP.URL = sound_path;
WMP.settings.volume = 100;
WMP.controls.play();
}
private void SetMassiv()
{
int q = 1;
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
MassivA[i, j] = "pictureBox"+q;
q++;
}
}
}
private void SetMap()
{
for (int i = 0; i <10 ; i++)
{
for (int j = 0; j < 10; j++)
{
Map[i, j] = 1;
}
}
}
private void IndexDefinition(string idLabel)
{
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
if (MassivA[i, j] == idLabel)
{
x = i+1;
y = j+1;
}
}
}
}
private void AssignIconsToSquares()
{
List<string> icons = new List<string>()
{
"1.png","1.png","2.png","2.
"5.png","5.png","6.png","6.
"1.png","1.png","2.png","2.
"5.png","5.png","6.png","6.
"1.png","1.png","2.png","2.
"5.png","5.png","6.png","6.
"1.png","1.png","2.png","2.
"5.png","5.png","6.png","6.
};
foreach (Control control in tableLayoutPanel1.Controls)
{
PictureBox iconLabel = control as PictureBox;
iconLabel.BorderStyle = BorderStyle.FixedSingle;
iconLabel.BackColor = Color.FromName("Grey");
}
foreach (Control control in tableLayoutPanel1.Controls)
{
PictureBox iconLabel = control as PictureBox;
if (iconLabel != null)
{
int randomNumber = random.Next(icons.Count);
iconLabel.ImageLocation = path + icons[randomNumber];
icons.RemoveAt(randomNumber);
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void CheckForWinner()
{
int count = 0;
foreach (Control control in tableLayoutPanel1.Controls)
{
PictureBox iconLabel = control as PictureBox;
if (iconLabel != null)
{
if (iconLabel.BackColor == Color.FromName("white"))
{
count++;
// return;
}
}
}
if (count == 62)
{
PlayMusic(@"sound\win.mp3");
timer2.Stop();
MessageBox.Show("Вы выйграли!!!", "Поздравления");
NewGame();
}
}
private void pictureBox_Click(object sender, EventArgs e)
{
if (timer1.Enabled == true)
return;
PictureBox clickedLabel = sender as PictureBox;
if (clickedLabel != null)
{
if (clickedLabel.BackColor == Color.FromName("White"))
return;
if (firstClicked == null)
{
firstClicked = clickedLabel;
IndexDefinition(firstClicked.
firstClicked.BorderStyle = BorderStyle.Fixed3D;
x1 = x;
y1 = y;
return;
}
secondClicked = clickedLabel;
IndexDefinition(secondClicked.
secondClicked.BorderStyle = BorderStyle.Fixed3D;
x2 = x;
y2 = y;
CheckForWinner();
if (firstClicked.ImageLocation == secondClicked.ImageLocation)
{
find = false;
if (x1+1==x2||x1-1==y2||y1-1==y2|
{
find = true;
}
else
{
FindWave(x1, y1, x2, y2);
}
if (find == true)
{
Map[x1, y1] = 0;
Map[x2, y2] = 0;
firstClicked.ImageLocation = "";
firstClicked.BackColor = Color.FromName("white");
secondClicked.ImageLocation = "";
secondClicked.BackColor = Color.FromName("white");
firstClicked = null;
secondClicked = null;
return;
}
}
timer1.Start();
}
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
firstClicked.BorderStyle = BorderStyle.FixedSingle;
secondClicked.BorderStyle = BorderStyle.FixedSingle;
firstClicked = null;
secondClicked = null;
}
private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
}
private void GameOver()
{
PlayMusic(@"sound\gameover.
MessageBox.Show("Вы проиграли!!!", "");
NewGame();
}
private void TimerDown()
{
sec = mtimer *60 ;
timer2.Interval = 1000;
timer2.Enabled = true;
timer2.Start();
}
private bool FindWave(int startX, int startY, int targetX, int targetY)
{
if ((startX + 1 == 0 || startX - 1 == 0 || startY + 1 == 0 || startY - 1 == 0) &&
(targetX + 1 == 0 || targetX - 1 == 0 || targetY + 1 == 0 || targetY - 1 == 0))
{
return find = true;
}
else
{
return find = false;
}

- Логическая игра «Морской бой»
- Логическая структура нормы права
- Логическая структура языка школьной математики
- Логические задачи
- Логические и линейные датчики Холла
- Логические основы компьютера
- Логические основы системного анализа
- Логистическое управление информационной политикой на предприятии ЗАО «ПРЕМЬЕР»
- Логистическое управление складами
- Логистическое управление складами
- Логистическое управление современной организации
- Логистическое управление товарными запасами в аптеке
- Логистической подход при хранении и реализации товаров торговой базы
- Логистческие концепции управления: содержание и возможности реализации