
- •Программное средство «Предсказатель»
- •1. Аналитический обзор литературы и аналогов
- •2. Постановка задач
- •2.1 Цель
- •2.2 Задачи
- •2.3 Область применения
- •2.4 Актуальность
- •2.5 Входные данные
- •2.6 Выходные данные
- •3. Разработка программного средства
- •3.1 Обоснование выбора языка программирования с#
- •3.2 Описание модулей
- •4. Руководство пользователя
- •5. Заключение
- •6. Список использованных источников
- •7. Приложение а. Листинг программы
- •8. Приложение б. Схемы алгоритмов.
3.2 Описание модулей
Программа включает в себя 9 ключевых модулей (см. приложение А). Вход в программу вызывается через модуль Program.cs. В этом модуле запускается меню, и пользователь может начинать работу с программой.
Не менее важным модулем является модуль Form2.cs. В данном модуле содержится меню и параметры окна программы. Данный модуль позволяет переключаться между режимами программы, а также может предоставить информацию о программе и справку о текущем режиме. Информацию о программе и справку модуль считывает из текстовых файлов, когда пользователь в ней нуждается, а затем отображает их в диалоговом окне (листинг 3.1) .
Листинг 3.1
private void Help(string filename)
{
System.IO.StreamReader file = new System.IO.StreamReader(
filename, System.Text.Encoding.Default);
string s = file.ReadToEnd();
Help msg = new Help();
msg.Text = "Предсказатель";
msg.richTextBox1.Text = s;
msg.ShowDialog();
msg.Dispose();
}
Модуль Card.cs содержит описание класса, который является наиболее часто используемым классом в приложении. На данном классе базируются четыре из пяти режимов взаимодействия пользователя с программой. Класс содержит следующие поля: suits (масть), number (величина карты), button (кнопка, привязанная к карте), Active (поле указывает, является карта активной или заблокированной), Prev (имя карты, которая расположена впереди текущей), Means (значение карты для гадания на «Картах судьбы»), storona (указывает место расположения карты относительно тузов в гадании «Демон»).
Модуль Pasiance.cs содержит описание класса, от которого наследуются четыре класса из модулей: Pas1.cs, Pas2.cs, Pas3.cs, а также модуль GadanieCards.cs. Было решено создать класс Pasience, т.к. большая часть классов имеет некоторое количество одинаковых полей и методов. Практически все методы в классе Pasiance виртуальные и переопределяются в классах, которые наследуются от этого класса. Объявление виртуальных методов в классе Pasiance продемонстрировано в листинге 3.2.
Листинг 3.2
public virtual void Inizalization(Form2 form) { } // Инициализациярасклада
public virtual void PutPas() { } // Размещение карт на форме
public virtual void card_Click(object sender, EventArgs e) { } //обработчик
//нажатия по карте
Модули Pas1.cs, Pas2.cs, Pas3.cs содержат методы позволяющие генерировать последовательность объектов класса Card из модуля Card.cs, заполнять поля этих объектов, а также размещать и удалять объекты (методы Inizalization, PutPas, ClearForm). В модулях организованы обработчики нажатия мыши на объекты класса Card (далее карты), которые позволяют определить дальнейшие действия. К этим методам относятся методы card_Click и card_DownClick. Обработчики срабатывают в тот момент, когда пользователь отпускает нажатую кнопку мыши.
Кроме того данные модули включают в себе алгоритмы, которые отражают в себе поведение каждого пасьянса (модули Pas1.cs, Pas2.cs, Pas3.cs организуют в себе как раз работу пасьянсами).
Для того, чтобы хранить и управлять набором объектов класса Card и объектами других классов, было решено использовать структурные типы данных массив и список.
В классе Pas1 для хранения расклада был использован трехмерный массив, т.е. это было удобно для представления пасьянса такого типа. В листинге 3.3 представлены инициализация и заполнение трехмерного массива.
Листинг 3.3
InitMatrix(List<Card> cards)
{
Card[, ,] matrix = new Card[3, 3, 4]; //Инициализация
int n=36;
for (int i = 0; i < 3; i++) //Заполнение массива
{ //значениями из списка
for (int j = 0; j < 3; j++)
{
for (int k = 0; k < 4; k++)
{
matrix[i, j, k] = cards[n];
cards.RemoveAt(n);
n--;
}
}
}
}
В классах Pas2 и Pas3 для хранения и управления объектами класса Card был использован структурный тип данных список (List<>). Список представляет собой динамическую струтуру данных, число элементов которой может изменяться по мере того как пременные помещаются в список или удаляются из него. Список не является наперед заданным набором и в отличие от массивов, списки поддерживают добавление в начало и в середину коллекции. В листинге 3.4 представлены инициализация и основные операции над списком.
Листинг 3.4
List<Card> cards = new List<Card>(); //Создание списка
cards.Add(card); //Добавление в конец списка
cards[i] = card; //Присваивание значения i-тому элементу
//списка
cards.RemoveAt(i); //Удаление i-того элемента из списка
Для того, чтобы использовать тип List<> необходимо подключить к программе модуль System.Collections.Generic.
Модуль GadanieCards.cs включает в себя методы, позволяющие получать случайную последовательность карт, раскладывать по форме, а также выдавать их значения по мере необходимости. В листинге 3.5 представлено заполнения списка rasklad случайными значениями из списка cards.
Листинг 3.5
InitRandomCards(List<Card> cards)
{
List<Card> rasklad = new List<Card>();
int randCard, n = 52;
Random r = new Random();
for (int i = 0; i < 15; i++)
{
randCard = r.Next(n);
rasklad[i] = cards[randCard];
cards.RemoveAt(randCard);
n--;
}
}
Значения карт хранятся в этом модуле в виде массивов строк. Массивов четыре – столько же, сколько и мастей у карт, т.е. четыре. Каждый массив содержит 13 элементов.
Модуль Domino.cs содержит совокупность методов, которые совершают генерацию случайной последовательности домино, устанавливают обработчики на нажатие кнопки мыши, а также размещают домино на форме (методы RandomDomino, InitDomino, Domino_Click). Хранение значений домино осуществляется в строковом массиве.
Для вывода различной информации в программе используются диалоговые окна, которые были определены в модулях Help.cs(экземпляр класса данного модуля выводит сообщение со справочной информацией по текущему режиму взаимодействия с программой), Message.cs(выводит сообщения любого вида, исключая справочные сообщения).
Для запуска и надёжной работы программы подойдут любые современные компьютеры сo следующими операционными системами:
Windows XP Professional
Windows XP SP3
Windows 7
Windows 8
На других операционных системах игровое приложение протестировано не было.
Программа требует немного ресурсов процессора и памяти. Запускается программное средство с помощью файла с расширением exe (рисунок 3.1).
Рисунок 3.1 Ярлык для запуска