Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой проект - копия.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
5.64 Mб
Скачать

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 Ярлык для запуска