49574 (Генерирование псевдослучайных чисел на примере создания игры "Сапер"), страница 2
Описание файла
Документ из архива "Генерирование псевдослучайных чисел на примере создания игры "Сапер"", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "49574"
Текст 2 страницы из документа "49574"
Машинные языки неудобны для восприятия человеком. Машинные языки являются машинно-зависимыми, т.е. конкретный машинный язык может быть использован только с определённым типом компьютера.
Для преобразования программ были разработаны программы-трансляторы, называемые ассемблерами. С появлением языков ассемблера использование компьютеров значительно расширилось, однако всё ещё требовалось написание большого количества инструкций даже для реализации решений простейших задач.
Для ускорения процесса программирования были разработаны языки высокого уровня, в которых для выполнения сложных действий достаточно написать один оператор.
На практике программисту-одиночке или небольшой рабочей группе придется использовать какие-то мощные средства, вроде визуальных систем программирования (Visual Basic, C++Builder, С#, Delphi) или же универсальную среду разработки типа Borland C++ в сочетании с библиотекой классов, такой, как OWL или MFC. [3]
Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую "быструю разработку", среди которых можно выделить Borland Delphi , Microsoft Visual Basic. С появлением Visual Basic программирование в Windows не становится более эффективным, но оно становится более простым (в большинстве случаев).
Если говорить о создании программ с интерфейсом Windows, то нельзя, конечно, не обойти вниманием визуальные средства программирования C++Builder. Несколько лет назад рядовому программисту оставалось только мечтать о создании собственных программ, работающих в среде Windows, т. к. единственным средством разработки был Borland C++ for Windows, явно ориентированный на профессионалов, обладающих серьезными знаниями и опытом. C++ Builder буквально навязывает программисту свой собственный стиль программирования, при котором, даже при особом желании, перейти с C++ Builder на что-то другое уже не предоставляется возможным. С++ не поддерживает других языков программирования.
Delphi — это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi — строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal. Borland Delphi 7 Studio позволяет создавать самые различные программы: от простейших однооконных приложений до программ управления распределенными базами. Delphi- не поддерживает других языков программирования, но способен поддерживать различные платформы.
Однако, при всем этом выбор падает на язык С#, входящий в Visual Studio .Net , так как он имеет ряд преимуществ, которые упрощают процесс создания приложений.
C# создавался Microsoft, как основной язык для .NET Framework. Microsoft спроектировала C# таким образом, что бы С, С++ и Java-программисты смогли легко перейти на него. C# имеет корни в языках С, С++ и Java, поэтому такой переход не должен вызвать затруднений.
Синтаксис у C# не такой сложный как у С++, поэтому его изучение намного легче. Большинство операций, которые вы можете делать на С++, можно сделать и на C#, за исключением операций доступа к низкоуровневым функциям (это все-таки можно сделать с помощью неуправляемого кода).
С# - первый язык, поддерживаемый версиями .NET Framework для других платформ.
C# имеет схожий с C стиль синтаксиса (для управляющих конструкций, блоков кода, описания сигнатуры методов и др.), много общего с Java (отсутствие множественного наследования и шаблонов, наличие сборщика мусора) и Delphi (ориентированность на создание компонент), в то же время имеет и свой колорит.
C# объектно-ориентированный язык, как и вся платформа .NET[7].
В C# представлена концепция пространств имен, аналогичная пакетам в Java. Это позволяет иерархически структурировать систему типов, делая код намного более понятным и позволяя избежать проблем с именованием. Реализация структур как типов, работа с которыми идет по значению, вместе с возможностью использовать не только вложенные массивы (как в Java), но и многомерные позволяет оптимизировать производительность приложений.
Ввиду очень удобного объектно-ориентированного дизайна, C# является хорошим выбором для быстрого конструирования различных компонентов.
Платформа .Net содержит множество важных служб:
-
.Net предоставляет средства для исполнения инструкций, содержащихся в программе, написанной на C#. Эта часть .Net называется средой исполнения.
-
.Net помогает реализовать так называемую среду, безопасную к несоответствию типов данных.
-
.Net освобождает программиста от утомительного и нередко приводящего к ошибкам процесса управления компьютерной памятью, которая используется программой.
-
.Net предоставляет безопасную среду исполнения.
-
В состав .Net входят библиотека, содержащая массу готовых программных компонентов, которые можно использовать в собственных программах. Она экономит немало времени, так как программист может воспользоваться готовыми фрагментами кода. Фактически, он повторно использует код, созданный и тщательно проверенный профессиональными программистами Microsoft.
-
В .Net упрощена подготовка программы к исполнению.
-
.Net обеспечивает прекрасное взаимодействие программ, написанных на разных языках. Любой язык поддерживаемый .Net , может взаимодействовать с другими языками этой платформы.
Проанализировав преимущества С# по сравнению с другими языками, можно сделать вывод, что он удовлетворяет всем ранее озвученным требованиям.
-
-
2.Конструкторская часть
-
2.1.Структура проекта.
Данный проект состоит из файлов
Ниже представлено описание основных файлов:
-
Form1.cs – файл, в котором содержится код, отвечающий за работу главной формы программы;
-
Form1.resx – файл, в котором содержится информация о графическом представлении главной формы «Сапер»;
-
Form2.cs - файл, в котором содержится код, отвечающий за работу формы настроек игрового поля;
-
Form2.resx – файл, в котором содержится информация о графическом представлении формы настроек игрового поля;
-
AboutBox1.cs - файл, в котором содержится код, отвечающий за работу формы «О программе»;
-
AboutBox1.resx – файл, в котором содержится информация о графическом представлении формы «О программе»;
-
Справка.htm – HTML-страница, в которой содержится справка по игре;
-
Мина.jpg – изображение мины на форме «О программе»
-
Сапер.exe - закомпилированный файл программы, находящийся в папке debug, которая находится в папке bin
2.2. Программная реализация основных элементов C#.
Для его запуска необходимо кликнуть кнопку Пуск, выбрать в пункте Все программы \Microsoft Visual Studio .NET 2005\Microsoft Visual Studio .NET 2005. Далее в запустившемся приложении кликнуть кнопку Open Project и используя проводник, выбрать файл Сапер.sln. Программа откроет приложение. Для изменения внешнего вида программы необходимо воспользоваться ярлыком Design. Можно добавить новые элементы формы, перетащив их из окна Toolbox. В моей работе это HelpProvider и MenuStrip при конструировании главной формы, Label, TextBox и Button при создании формы настроек игрового поля. Свойства компонентов можно изменить, зайдя в меню View – Properties Windows или в коде программы:
//задается текст компонентов формы О программе
this.Text = String.Format("О программе");
this.labelProductName.Text = "Cапер";
this.labelVersion.Text = String.Format("Версия {0}", AssemblyVersion);
this.labelCopyright.Text = "Автор Темерев Кирилл";
this.labelCompanyName.Text = "КФ МГТУ им.Н.Э.Баумана, группа САПР-31";
this.textBoxDescription.Text ="Программа создана в Microsoft Visual Studio
Щелкнув значок Молния в меню Properties можно найти все события и дважды щелкнув на одно из них, написать обработчик.
2.2.1.Классы
Следует отметить, что любая форма, являющаяся основным элементом пользовательского интерфейса и основой для построения приложения, одновременно и класс, поэтому удается создавать экземпляры форм и порождать одни формы от других. В рассматриваемой программе присутствуют следующие классы, соответствующие формам Windows приложения.
public partial class Form1 : Form //главная форма программы
{
………
public Form1() //конструктор главной формы
{
InitializeComponent();
//присваиваем начальные значения полям
MR = 10;
MC = 10;
NM = 10;
W = 40;
H = 40;
this.newGame(1);//вызов метода newGame(int r)
}
………
}
public partial class Form2 : Form //форма настроек игрового поля
{
………
public Form2()//конструктор формы Настройки
{
InitializeComponent();
}
………
}
partial class AboutBox1 : Form //форма «О программе»
{
………
public AboutBox1()//конструктор формы О программе
{
InitializeComponent();
//задается текст компонентов формы О программе
this.Text = String.Format("О программе");
this.labelProductName.Text = "Cапер";
this.labelVersion.Text = String.Format ("Версия {0}", AssemblyVersion);
this.labelCopyright.Text = "Автор Темерев Кирилл";
this.labelCompanyName.Text = "КФ МГТУ им.Н.Э.Баумана, группа САПР-31";
this.textBoxDescription.Text ="Программа создана в Microsoft Visual Studio 2005 для среды .NET Framework";
}
………
}
2.2.2.Члены класса
Поля
Полем называется член-переменная, содержащий некоторое значение. В ООП поля иногда называют данными объекта.
Для классов
public partial class Form1 : Form
public partial class Form2 : Form
полями являются следующие переменные:
private int
MR,//кол-во клеток по вертикали
MC,//кол-во клеток по горизонтали
NM,//кол-во мин
W,//ширина клетки поля
H;//высота клетки поля
private int
nMin,//кол-во найденных мин
nFlag;//кол-во поставленных флагов
private int status;/*отражает различные этапы работы программы:
0-начало игры,
1-игра,
2-конец игры*/
private int[,] Pole;/*элемент массива задает клетку поля и принимает значения
0-8 -кол-во мин в соседних клетках,
9 -в клетке мина,
100-109 -клетка открыта,
200-209 -в клетку поставлен флаг*/
Следует отметить, что переменная Pole хранит в себе ссылку на двумерный массив. Массивы в C# разделяются на два типа: одномерные и многомерные.
Элементы многомерных массивов идентифицируются набором индексов - "координат" в многомерном пространстве. Каждое измерение имеет свою размерность, не зависящую от других.
Инициализация
Pole = new int[MR + 2, MC + 2];
происходит в методе
private void newGame(int r)
{
}
который будет рассмотрен далее.
Доступ к элементам производится с помощью оператора [ ], в котором индексы указываются через запятую. Присвоение значений элементам присваивается в методе:
private void newGame(int r)
{
…………
/*неотражаемым элементам массива минного поля присваиваем
значение -3 для завершения процесса открытия клеток*/
for (row = 0; row <= MR + 1; row++)
{
Pole[row, 0] = -3;
Pole[row, MC + 1] = -3;
}
for (col = 0; col <= MC + 1; col++)
{
Pole[0, col] = -3;
Pole[MR + 1, col] = -3;
}
//обнуление элементов массива минного поля
for (row = 1; row <= MR; row++)
{
for (col = 1; col <= MC; col++)
{
Pole[row, col] = 0;
}
}
………
}
а также в других методах.
Методы
Методом называется реальный код, воздействующий на данные объекта (или поля). При объявлении методов используется конструкция вида:
(opt)
{
}
Метод в процессе своей работы может не только изменять поля объекта, но и вычислять некоторые дополнительные значения. Если возвращать значения не нужно, то в качестве типа возвращаемого значения указывается void.
Методы, используемые в разработанном приложении и обеспечивающие процесс игры:
private void newGame(int r)//метод, запускающий новую игру
{
…………
//выбор метода расстановки мин
int random = r;
if (random == 1)
{
this.Rand();//вызов метода Rand()
}
if (random == 2)
{
this.Lin();//вызов метода Lin()
}