Разработка программы «Лабиринт»
Государственное образовательное учреждение высшего профессионального образования
«Сибирская
государственная автомобильно-
(СибАДИ)»
Факультет Информационные системы в управлении
Специальность Прикладная информатика в экономике
Кафедра Прикладная
информатика в экономике
Пояснительная записка
к курсовой
работе
по дисциплине
«Вычислительная математика и программирование»
Название работы
Разработка программы «Лабиринт»
Выполнил: студентка гр. ПИ-09И1
Ф.И.О. Названов Павел Александрович
Проверил преподаватель
Толкачева
Е.В.
Омск 2010
Содержание
Введение
Целью курсовой работы является получение опыта самостоятельной разработки в соответствии с заданием пользовательского приложения, работающего под управлением ОС Microsoft Windows, в среде разработки приложений Microsoft Visual Basic .Net, а также получение навыка составления пояснительной записки и оформления в соответствии с требованиями, принятыми на факультете «Информационные системы в управлении».
Задачами
курсовой работы являются: 1) разработка
программы
в соответствии с заданием; 2) составление
пояснительной записки
в соответствии с требованиями.
В первой главе пояснительной записки к курсовой работе приводится краткое описание возможностей интегрированной среды разработки приложений Microsoft Visual Basic .Net, основных алгоритмических конструкций языка программирования Visual Basic и базовых элементов управления.
Во второй главе приводится краткое описание программы, блок-схема программы и демонстрация работы программы.
В заключении приводится перечень изученных вопросов и основных результатов курсовой работы.
В приложение вынесен программный код с подробными комментариями.
1. Среда разработки приложений Microsoft Visual Basic .Net
1.1 Основы языка Visual Basic
В таблице 1.1 описаны типы данных Visual Basic и диапазоны значений.
Таблица 1.1 – Типы данных Visual Basic
| Тип
Visual Basic |
Диапазон значений |
| Boolean | True или False |
| Byte | От 0 до 255 (беззнаковый). |
| Char | От 0 до 65535 (беззнаковый). |
| Date | От 0:00:00 (полночь)
1 января 0001 года до 11:59:59 вечера 31 декабря 9999 года. |
| Decimal | От 0 до +/–7,9... E + 28 без десятичной запятой. |
| Double | Число двойной
точности с плавающей запятой;
от –1,79769313486231570E+308
до –4.94065645841246544E–324 для отрицательных
значений; от 4,94065645841246544E–324 |
| Integer | От –2 147 483 648 до 2 147 483 647 (знаковый) |
| Long | Длинное целое число, от –9 223 372 036 854 775 808 (–9,2... E+18) до 9 223 372 036 854 775 807 (9,2... E+18) (знаковый) |
| SByte | От –128 до 127 (знаковый) |
| Short | Короткое целое число, от –32 768 до 32 767 (знаковый) |
| Single | Число одиночной
точности с плавающей запятой,
от –3,4028235E+38 до –1,401298E–45 для отрицательных значений; от 1,401298E–45 до 3,4028235E+38 для положительных значений |
| String | Строка переменной длины, от 0 до приблизительно 2 миллиардов знаков в кодировке Юникод. |
| UInteger | От 0 до 4 294 967 295 (беззнаковый). |
| ULong | От 0 до 18 446 744 073 709 551 615 (1,8... E+19) (знаковый) |
| UShort | От 0 до 65 535 (беззнаковый) |
В
таблице 1.2 кратко описаны основные
циклические структуры в Visual Basic (позволяют
выполнить одну или несколько строк кода
несколько раз).
Таблица 1.2 – Циклические структуры Visual Basic
| Циклическая конструкция | Краткое описание |
| While...
End While |
Выполняет набор инструкций, пока значение условия, указанного в операторе While, равно True. |
| Do...Loop | Позволяет проверить условие в начале или в конце структуры цикла. Можно также указать, следует ли повторять цикл, пока значение условия равно True или же до тех пор, пока оно не станет равно True. |
| For...Next | Выполняет определенное число итераций. Для отслеживания числа повторений в ней используется управляющая переменная цикла, называющаяся счетчиком. Необходимо указать начальное и конечное значения для этого счетчика и при необходимости указать шаг, на который счетчик будет увеличен за одно повторение. |
| For Each...
Next |
Выполняет набор
инструкций один раз применительно
к каждому элементу коллекции. При
этом указывается управляющая |
Подробную информацию об основах программирования на языке Visual Basic можно найти в [1, 2].
1.2 Элементы управления в Microsoft Visual Basic .Net
Свойства управляющих
элементов, используемых в программе,
описаны в таблице 1.3
Таблица 1.3 – Свойства управляющих элементов Visual Basic
| Тип | Назначение |
| PictureBox | Предназначен
для размещения на форме графического
изображения. Размещенное в форме
графическое изображение |
| ImageList | Предназначен для хранения графического изображения домино. |
1.3 Обработка событий в Microsoft Visual Basic .Net
Большинство программ управляются событиями, то есть ход работы программы определяется внешними воздействиями, называемыми событиями.
Под событием в данном случае подразумевается сигнал, сообщающий приложению о внешнем воздействии, в частности, о действии пользователя. Например, когда пользователь щелкает элемент управления на форме, форма может инициировать событие Click и вызывать процедуру, обрабатывающую событие. События также допускают взаимодействие отдельных задач. Например, приложение выполняет задачу по сортировке. Если пользователь отменяет сортировку, то приложение может послать событие отмены, которое остановит процесс сортировки.
Любой объект, способный вызывать события, является отправителем событий, также называемым источником событий. Формы и элементы управления являются примерами отправителей событий.
Обработчики событий – это процедуры, вызываемые при возникновении соответствующего события. Можно использовать любые допустимые процедуры в качестве обработчика событий. В Visual Basic используется стандартное положение об именовании обработчиков событий. Имя должно состоять из имени отправителя события, знака подчеркивания и имени события. Например, событие Click кнопки с именем button1 будет иметь имя Sub button1_Click [1]. В теле процедуры необходимо описать действия, которые программа должна выполнить при получении сигнала о том, что данное событие произошло.
Пользователь
оказывает управляющее
Таблица 1.4 – Перечень основных событий, связанных с клавиатурой
| Название
события |
Краткое описание события | Параметры,
передаваемые в процедуру обработки |
| KeyDown | Происходит при нажатии клавиши, если элемент управления имеет фокус. | Sender
типа Object,
e типа KeyEventArgs |
| KeyPress | Происходит при нажатии клавиши, если элемент управления имеет фокус. | Sender
типа Object,
e типа KeyPressEventArgs |
| KeyUp | Происходит при отпускании клавиши, если элемент управления имеет фокус. | Sender
типа Object,
e типа KeyEventArgs |
Sender – ссылка на объект-отправитель события.
Объект класса KeyPressEventArgs имеет свойство KeyChar типа Char, которое получает знак, соответствующий нажатой клавише.
Объект класса KeyEventArgs имеет свойства:
- Alt, Control, Shift типа Boolean показывают, была ли нажата клавиша ALT, CTRL, SHIFT;
- KeyCode, KeyData типа Keys получают код нажатой клавиши (например, Keys.A, Keys.F1, Keys.Insert и т. п.);
- KeyValue типа Integer получает значение нажатой клавиши (например, для клавиши ENTER значение KeyValue равно 13).
Таблица 1.5 – Перечень основных событий, связанных с мышью
| Название
события |
Краткое описание события | Параметры,
передаваемые в процедуру обработки |
| Click | Происходит при щелчке левой кнопкой мыши по элементу управления | Sender
типа Object,
e типа EventArgs |
| DoubleClick | Происходит при двойном щелчке левой кнопкой мыши по элементу управления | Sender
типа Object,
e типа EventArgs |
| MouseClick | Происходит при щелчке любой кнопкой мыши по элементу управления | Sender
типа Object,
e типа MouseEventArgs |
| Mouse-
DoubleClick |
Происходит при двойном щелчке любой кнопкой мыши по элементу управления | Sender
типа Object,
e типа MouseEventArgs |
| MouseDown | Происходит при нажатии любой кнопки мыши, если указатель мыши установлен на элементе управления | Sender
типа Object,
e типа MouseEventArgs |
| MouseEnter | Происходит, когда указатель мыши входит в границы элемента управлеия | Sender
типа Object,
e типа EventArgs |
| MouseHover | Происходит, когда указатель мыши наведен на элемент управления | Sender
типа Object,
e типа EventArgs |
| MouseLeave | Происходит, когда указатель мыши покидает границы элемента управления | Sender
типа Object,
e типа EventArgs |
| MouseMove | Происходит при перемещении указателя мыши по элементу управления | Sender
типа Object,
e типа MouseEventArgs |
| MouseUp | Происходит при отпускании любой кнопки мыши, если указатель мыши установлен на элементе управления | Sender
типа Object,
e типа MouseEventArgs |
| MouseWheel | Происходит при повороте колесика мыши, если указатель мыши установлен на элементе управления | Sender
типа Object,
e типа MouseEventArgs |
Sender – ссылка на объект-отправитель события.
Объект класса EventArgs не содержит данных.
Объект класса MouseEventArgs имеет свойства:
- Button типа MouseButton получает сведения о нажатой кнопке мыши (MouseButton.Left, если нажата левая кнопка мыши, MouseButton.Right – правая кнопка мыши, MouseButton.Middle – средняя кнопка мыши);
- Clicks типа Integer получает число нажатий и отпусканий кнопки мыши;
- Delta типа Integer получает число со знаком, указывающее количество делений, на которое повернулось колесико мыши (делением называется один зубец колесика мыши);
- X типа Integer получает координату x указателя мыши на момент создания события;
- Y типа Integer получает координату у указателя мыши на момент создания события.
2. Описание программы
Приложение представляет собой стандартное окно Windows фиксированных размеров, которое можно свернуть или закрыть. В окне имеется стандартное меню, включающее разделы «Игра» и «Справка». Раздел «Игра» включает подразделы «Новая игра», «Отменить ход» (доступна только для последнего сделанного хода) и «Выход». Раздел «Справка» содержит подразделы «Вызов справки» и «О программе…». Программа поддерживает два способа управления: с помощью мыши и с помощью клавиатуры.
В заголовке окна отображается информация о количестве сделанных ходов.
В
таблице 2.1 перечислены используемые
в программе глобальные константы
и переменные, в таблице 2.2 – элементы
управления, в таблице 2.3 – процедуры и
функции.
Таблица 2.1 – Глобальные константы и переменные
| Имя | Тип | Назначение |
| rn | Integer | Координаты куда мы кликнули мышкой |
| cn | Integer | Координаты куда мы кликнули мышкой |
| Mass | Комната | Масив в которм храняться данные комнаты о проходах |
| mas(7, 7) | Integer | Массив где находится информация где находится фишка |
| R,c | Integer | Координаты фишки |
| mask(7, 7) | Integer | Масив где находятся информация о ключах и дверях |
| smas(7, 7) | Integer | Координаты фишки прошлого хода |
| Имя | Тип | Назначение |
| sr, sc | Integer | Координаты фишки прошлого хода |
| st | Integer | Количество ходов прошлого хода |
| s | Integer | Количество ходов |
| KA, KB, KC, KD, KE, KF, KG | String | Информация о ключах если 0 нету если 1 то есть |
| sKA, sKB, sKC, sKD, sKE, sKF, sKG | String | Старая информация о ключах |
Таблица 2.3 – Процедуры и функции
| Имя | Тип | Назначение |
| NewGame | Пользовательская процедура | Инициализация начальных значений параметров игры |
| Form1_Load | Пользовательская функция | Инициализация игры |
| L_MouseDown | Пользовательская процедура | Передвижение фишки |
| PictureBox1_Paint | Пользовательская процедура | Рисует ключи там где стоит 0 |
| НазадToolStripMenuItem_Click_1 | Пользовательская процедура | Действие Назад |
| Ход() | Пользовательская процедура | Записание ходов |
| Проверка() | Пользовательская процедура | Происходит возврат домино. |
2.1 Блок-схема программы
Программа PictureBox1_MouseDown
Рисует ключи
там где написано 0
Проверка есть ли в ячейке ключ
Ход назад
2.2
Демонстрация работы
программы
Для начала работы с программой нужно запустить файл Лабиринт.exe. Появится окно программы (рисунок 2.6).
Рисунок 2.6 – окно программы «Лабиринт»
Заключение
В
ходе выполнения курсовой работы были
более подробно изучены
и изложены в пояснительной записке следующие
вопросы:
- базовые элементы управления, их свойства и методы;
- управление
программой с помощью событий, связанных
с клавиатурой; - управление программой с помощью событий, связанных с мышью.
Полученные знания использованы на практике. Результатом работы является приложение-игра «Лабиринт», работающее под ОС Windows.
Список использованных источников
- Библиотека
MSDN (по-русски) [Электронный ресурс] – Электрон.
дан. – Microsoft Corporation, 2010 – Режим доступа: http://msdn.microsoft.com/ru-
ru/library/ms123401.aspx, свободный. – Загл. с экрана. – Яз. рус. - Долженков В. Visual Basic .NET. Учебный курс / В. Долженков, М. Мозговой. – СПб., Питер, 2003. – 464 с.
Приложение
А
Листинг программы
Public Class Form1
Const p = 30 ' ширина клетки поля в пиксв.
Dim Mass(14, 15) As Комната 'Масив в которм храняться данные комнаты о проходах
Dim mas(14, 15), r, c As Integer
Dim mask(7, 7) As Integer
Dim smas(14, 15), sr, sc, st, s As Integer 'Массив для отмены хода
Dim KA, KB,
KC, KD, KE, KF, KG, sKA, sKB, sKC, sKD, sKE, sKF, sKG As String
Sub newgame()
'Проход L-Слева P-Справа V-Сверху N-Снизу,
LN-Слева и снизу, LP...
Mass(1, 1).PN() : Mass(1, 2).LPN() : Mass(1, 3).LPN() : Mass(1, 4).LPN() : Mass(1, 5).LPN() : Mass(1, 6).LPN() : Mass(1, 7).LN()
Mass(2, 1).PVN() : Mass(2, 2).LPVN() : Mass(2, 3).LPVN() : Mass(2, 4).LVN() : Mass(2, 5).LPVN() : Mass(2, 6).LPVN() : Mass(2, 7).LVN()
Mass(3, 1).PVN() : Mass(3, 2).LPVN() : Mass(3, 3).LPVN() : Mass(3, 4).LPVN() : Mass(3, 5).LPVN() : Mass(3, 6).LPVN() : Mass(3, 7).LVN()
Mass(4, 1).PV() : Mass(4, 2).LPVN() : Mass(4, 3).LPVN() : Mass(4, 4).LPVN() : Mass(4, 5).LPVN() : Mass(4, 6).LPVN() : Mass(4, 7).LVN()
Mass(5, 1).PN() : Mass(5, 2).LPVN() : Mass(5, 3).LPVN() : Mass(5, 4).LPVN() : Mass(5, 5).LPV() : Mass(5, 6).LPVN() : Mass(5, 7).LVN()
Mass(6, 1).PVN() : Mass(6, 2).LPVN() : Mass(6, 3).LPVN() : Mass(6, 4).LVN() : Mass(6, 5).PN() : Mass(6, 6).LPVN() : Mass(6, 7).LVN()
Mass(7, 1).V() : Mass(7, 2).PV() : Mass(7, 3).LPV() : Mass(7, 4).LPV() : Mass(7, 5).LV() : Mass(7, 6).PV() : Mass(7, 7).LV()
s = 0
KA = 0
KB = 0
KC = 0
KD = 0
KE = 0
KF = 0
KG = 0
Label3.Text = " Ключ А-" + KA + " Ключ B-" + KB + " Ключ C-" + KC + " Ключ D-" + KD + " Ключ E-" + KE + " Ключ F-" + KF + " Ключ G-" + KG
For i = 1 To 13
For j = 1 To 15
mas(i, j) = 1
Next
Next
mask(4, 1) = 1 : mask(7, 2) = 2 : mask(4, 2) = 3 : mask(6, 5) = 4 : mask(5, 5) = 5 : mask(7, 6) = 6 : mask(7, 7) = 7
mask(2, 5) = 8 : mask(5, 1) = 9 : mask(6, 2) = 10 : mask(2, 6) = 11 : mask(3, 3) = 12 : mask(7, 1) = 13 : mask(7, 5) = 14
'Начальные координаты нашей фишки
r = 4
c = 1
mas(4, 1) = 0
Label2.Text = s
Me.Refresh()
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Создаем экзэмпляр класса
For i = 1 To 14
For j = 1 To 15
Mass(i, j) = New Комната
Next j
Next i
newgame()
End Sub
Private Sub
L_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.
'Здесь мы описываем условия по которым будет передвигаться фишка
Dim rn, cn As Integer
rn = e.Y \ p + 1
cn = e.X \ p + 1
If mas(rn, cn) = 1 And r - rn = -1 And c = cn And Mass(r, c).NN = 1
And Mass(rn, cn).VV = 1 Then
st = s
sr = r
sc = c
Ход()
mas(rn, cn) = 0
mas(r, c) = 1
r = rn
c = cn
s = s + 1
Проверка()
End If
If mas(rn, cn) = 1 And r - rn = 1 And c = cn And Mass(r, c).VV = 1 And Mass(rn, cn).NN = 1 Then
st = s
sr = r
sc = c
Ход()
mas(rn, cn) = 0
mas(r, c) = 1
r = rn
c = cn
Проверка()
s = s + 1
End If
If mas(rn, cn) = 1 And r = rn And c - cn = -1 And Mass(r, c).PP = 1 And Mass(rn, cn).LL = 1 Then
Ход()
st = s
sr = r
st = s
mas(r, c) = 1
mas(rn, cn) = 0
r = rn
c = cn
Проверка()
s = s + 1
End If
If mas(rn, cn) = 1 And r = rn And c - cn = 1 And Mass(r, c).LL = 1 And Mass(rn, cn).PP = 1 Then