Вход

Реверси Visual Basic и Word-отчёт

Реферат по программированию
Дата добавления: 21 мая 2006
Язык реферата: Русский
Word, rtf, 9.4 Мб (архив zip, 843 кб)
Реферат можно скачать бесплатно
Скачать
Не подходит данная работа?
Вы можете заказать написание любой учебной работы на любую тему.
Заказать новую работу



МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ИНСТИТУТ (ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)







ДИСЦИПЛИНА «ИНФОРМАТИКА»






КУРСОВАЯ РАБОТА НА ТЕМУ:





Создание игры “Реверси”, при помощи языка программирования Visual Basic










Выполнил студент гр. _____

________________




Москва, 20__ год.





Содержание.

Введение. 3

Описание хода работы. 4

Создание игрового интерфейса. 4

Написание кода программы для кнопки Новая Игра. 6

Написание программного кода для игрового поля. 8

Заключительная часть 14

Приложение (исходный код программы) 15







































Создание игры “Реверси”, при помощи языка программирования Visual Basic


Введение


Задачей, поставленной при написании курсовой работы, стало создание логической игры «Реверси» в среде программирования Visual Basic. При работе над ней использовалась сама среда программирования Visual Basic для создания непосредственно самой игры, а так же средство Microsoft Word для создания отчета о проделанной работе.


Интерфейс данной программы прост, как и действия, выполняемые пользователями. Поле для игры представляет собой квадрат жёлтых шашек 8?8. Для начала игры игроку необходимо нажать на кнопку Новая игра, а далее нажимать на шашки поля так, чтобы шашки противника оказались «зажаты». Для этого при нажатии шашки будут поочередно менять свой цвет, либо на белый, либо на чёрный. В случае, когда игра закончена, пользователю нужно снова нажать кнопку Новая игра, для начала новой партии.























Описание хода работы


Создание игрового интерфейса


Одна из важнейших задач, которая стоит перед тем, кто хочет создать при помощи Microsoft Visual Basic любую программу, пусть даже самую простейшую, это разработка интерфейса этой программы.

Используя панель инструментов, мы создаём следующий интерфейс:

Выбрав элемент CommandButton(Командная Кнопка), мы создаём на нашей форме 64 идентичных, ничем не отличающихся друг от друга кнопки, которые будут играть роль шашек, заполнение которых своим цветом и является целью игры. Все эти кнопки имеют одинаковое имя – Command1. Их цвет (параметр BackColor) жёлтый. Важно также отметить, что на кнопках ничего не написано (параметр Caption не заполнен). Кнопки имеют форму квадратов, т.е. параметры Width(ширина) и Height(высота) имеют одинаковые значения, в нашем случае эти значения равны 495.


Создание интерфейса программы


Помимо этих 64 кнопок, на форме мы располагаем кнопку для начала игры, её параметры следующие: имя – ComNew, она светлого жёлтого цвета(BackColor), в отличие от тех 64 кнопок, на этой есть надпись(Caption) – Новая игра, т.е. из названия следует, что после нажатия на эту кнопку начнётся новая игра, ширина(Width) и высота(Height) на этот раз отличаются по своим значениям, т.к. кнопка имеет прямоугольную форму.

Теперь, когда поле и кнопка начала игры создана, мы создаём при помощи элемента TextBox, два окошка, в которых будут отображаться кол-ва очков играющих сторон. Таких окна нам нужно два (т.к. количество игроков в нашей версии программы равно двум), они имеют имена Text1 и Text2 соответственно. Параметр Text для этих двух окон не заполняется, так как в них будут отображаться числа, равные кол-ву квадратов, занятых одной из сторон (Text1 для белых шашек, Text2 для чёрных) на игровом поле, а изначально эти два окна должны быть пусты.

Затем, при помощи элемента Label, мы создаём две надписи, и располагаем их над окошками где будут выводиться очки играющих (см. выше), эти две надписи создаются для удобства пользователя, чтобы было видно какое из окон отображает кол-во чёрных шашек, а какое кол-во белых. Надписи имеют параметры: Имена – Label1 и Label2, на одной из них написано “Белые”, а на второй “Чёрные”, т.е. параметры Caption заполняются соответствующим образом. Параметры текста (параметр Font) этих названий имеют следующий вид: Шрифт - Arial, начертание – жирный курсив, размер шрифта – 18. Текст на надписях расположен в центре (параметр Alignment).

Напоследок создаётся кнопка выполняющая операцию выхода из игры. Имя – ComEnd, надпись (Caption) – ВЫХОД.



























Написание кода программы для кнопки Новая игра


Создание программного кода является основным этапом в создании любой программы. Код представляет собой алгоритм, на основе которого будет действовать программа.

Одна из самых важнейших частей программного кода связана с кнопкой Новая игра (ComNew), при её нажатии выполняются следующий действия: Во-первых, стираются все “окрашенные” шашки на игровом поле:


Col = vbBlack

For Index = 0 To 63

Command1.Item(Index).BackColor = vbYellow

Command1.Item(Index).Enabled = True

Next Index


Эти строчки означают, что поступает команда для всех этих кнопок поменять цвет на жёлтый.

Однако это не все операции, которые происходят при нажатии на кнопку Новая игра, также происходит окраска 4 шашек, расположенных в центре поля (это 27-ая, 28-ая, 35-ая и 36-ые шашки), две из шашек становятся чёрными, а две других белыми:


Command1.Item(27).BackColor = vbWhite

Command1.Item(28).BackColor = vbBlack

Command1.Item(35).BackColor = vbBlack

Command1.Item(36).BackColor = vbWhite

Command1.Item(27).Enabled = False

Command1.Item(28).Enabled = False

Command1.Item(35).Enabled = False

Command1.Item(36).Enabled = False


До нажатия клавиши Новая игра

После нажатия



Эта операция необходима для того, чтобы играющие вначале были в равных условиях, и у каждого уже было какое-то кол-во шашек на поле.

В состав кода для этой кнопки входят также следующие действия – во-первых, задаётся цвет первого хода, тут нужно обратить внимание на то, что этот цвет “ходит первым” после нажатия кнопки Новая игра, а не после появления 4 уже покрашенных шашек.



Во-вторых, в текстовые окна (TextBox) вводятся исходные данные, они равны 2, так как после нажатия на кнопку Новая игра, у каждого из играющего находиться по две, уже окрашенных шашки:


Text1.Text = 2

Text2.Text = 2


На этом заканчивается написание кода для кнопки Новая Игра.













Написание программного кода для игрового поля


Часть программного кода, касающегося самого игрового поля, является самой главной.

В первую очередь мы задаём 6 переменных, одна из них (переменная Col, которая будет относиться к цвету) имеет тип String, это стартовый тип, предназначенный для описания символов и строк символов. Другие 5 переменных (Down,Right, Vert, Gor, A, необходимые для вычислений) имеют тип Integer, предназначенный для хранения целых чисел, а также чисел со знаком.


Dim Col As String

Dim Down, Right, Vert, Gor, A As Integer


Теперь для массива управления 64 шашек (Command1) пишется операция, которая выбирает цвет следующего хода, в зависимости от того какой цвет ходил в прошлый раз, как раз тут используется переменная Col.

Затем создаётся процедура, которая выполняет такую функцию: после нажатия на шашку, она окрашивается в тот цвет, который сейчас активен (т.е. чей сейчас ход). Одновременно с этим задаётся команда, что такая шашка уже не может быть нажата игроками ещё раз, то есть её свойство Enabled становится False.


If Col = vbBlack Then

Col = vbWhite

Else

Col = vbBlack

End If

Command1.Item(Index).BackColor = Col

Command1.Item(Index).Enabled = False


Следующий шаг в написание алгоритма для этих кнопок это – вычисление по формулам координат шашек по вертикальной и горизонтальной осям. Происходит это по следующим формулам:


Vert = Index \ 8 + 1

Gor = 9 - (7 * Vert - (Index - Vert))

Down = 8 - Vert

Right = 8 – Gor

White = 0

Black = 0


На этом же шаге для некоторых переменных, которые будут позже использованы в дальнейших операциях, задаются исходные значения. Так переменным Down, Right, являющимися пределами максимально изменения параметра A во многих следующих циклах кода, задаются значения 8 – Vert и 8 – Gor соответственно. Также переменным White и Black задаются нулевые значения, что необходимо для дальнейшего корректного подсчета количества очков, полученных игроками в ходе игры.


Далее пишутся логические выражения, обеспечивающие смену цвета шашек, при выигрышном ходе игрока, то есть таком, при котором происходит двустороннее «окружение» шашек противника шашками своего цвета. Происходит это за счет использования циклического алгоритма For с шагом Step равным (-1) для переменной A. Например:

For A = Down To 1 Step -1

Next A

Внутрь это циклического алгоритма вкладывается разветвляющийся алгоритм, реализованный с помощью неполной команды ветвления с проверкой цвета фона необходимой клавиши, определяемой математическим выражением с параметром A.

Например:

If Command1.Item(Index - 7 * A).BackColor = Col Then

End If

В тело этого алгоритма вложена ещё одна неполная команда ветвления аналогичного вида, проверяющая свойство Enabled выбираемой при помощи математического выражения с параметром A кнопки, например:

If Command1.Item(Index - 7 * (A - 1)).Enabled = False Then

Command1.Item(Index - 7 * (A - 1)).BackColor = Col

End If

Таким образом в совокупности они выглядят следующим образом (примерный вариант):

For A = Vert - 1 To 1 Step -1

If Command1.Item(Index - 7 * A).BackColor = Col Then

If Command1.Item(Index - 7 * (A - 1)).Enabled = False Then

Command1.Item(Index - 7 * (A - 1)).BackColor = Col

End If

End If

Next A


Вышеприведенный цикл последовательно производит следующие логические операции:

1 шаг: задает численное значение переменной A;

2 шаг: проверяет цвет фона, выбираемой согласно параметру A, шашки и при его совпадении со значением переменной Col, переходит к проверке следующего условия, то есть шагу 3, а в обратном случае возвращается к шагу 1;

3 шаг: проверяет, была ли нажата ранее кнопка, определяющаяся выражением с параметром A, если условие выполняется, то данная шашка закрашивается цветом, определяющимся переменной Col, в обратном случае возвращается на шаг 1.


До нажатия помеченной кнопки


После нажатия пользователем кнопки

Циклов таких было использовано 8, связанно это с направлениями изменения определяющего параметра A:

For A = Down To 1 Step -1

If Command1.Item(Index + 8 * A).BackColor = Col Then

If Command1.Item(Index + 8 * (A - 1)).Enabled = False Then

Command1.Item(Index + 8 * (A - 1)).BackColor = Col

Else

End If

End If

Next A

For A = Vert - 1 To 1 Step -1

If Command1.Item(Index - 8 * A).BackColor = Col Then

If Command1.Item(Index - 8 * (A - 1)).Enabled = False Then

Command1.Item(Index - 8 * (A - 1)).BackColor = Col

End If

End If

Next A

For A = Right To 1 Step -1

If Command1.Item(Index + A).BackColor = Col Then

If Command1.Item(Index + A - 1).Enabled = False Then

Command1.Item(Index + A - 1).BackColor = Col

End If

End If

Next A

For A = Gor - 1 To 1 Step -1

If Command1.Item(Index - A).BackColor = Col Then

If Command1.Item(Index - A + 1).Enabled = False Then

Command1.Item(Index - A + 1).BackColor = Col

End If

End If

Next A


For A = Down To 1 Step -1

If Command1.Item(Index + 7 * A).BackColor = Col Then

If Command1.Item(Index + 7 * (A - 1)).Enabled = False Then

Command1.Item(Index + 7 * (A - 1)).BackColor = Col

Else

End If

End If

Next A


For A = Vert - 1 To 1 Step -1

If Command1.Item(Index - 7 * A).BackColor = Col Then

If Command1.Item(Index - 7 * (A - 1)).Enabled = False Then

Command1.Item(Index - 7 * (A - 1)).BackColor = Col

End If

End If

Next A


For A = Down - 1 To 1 Step -1

If Command1.Item(Index + 9 * A).BackColor = Col Then

If Command1.Item(Index + 9 * (A - 1)).Enabled = False Then

Command1.Item(Index + 9 * (A - 1)).BackColor = Col

Else

End If

End If

Next A


For A = Vert - 2 To 1 Step -1

If Command1.Item(Index - 9 * A).BackColor = Col Then

If Command1.Item(Index - 9 * (A - 1)).Enabled = False Then

Command1.Item(Index - 9 * (A - 1)).BackColor = Col

End If

End If

Next A


После это происходит процесс подсчета очков обоих игроков. Для этого вводится циклический алгоритм

For Index = 0 To 63

...

Next Index

Внутри которого происходит проверка цветов шашек при помощи команды выбора Select, где предположением служит Command1.Item(Index).BackColor, то есть цвет фона шашки. В соответствии со значениями этого предположения изменяются переменные White и Black, значения которых выводятся в элементы Text1 и Text2.


For Index = 0 To 63

Select Case Command1.Item(Index).BackColor

Case Is = vbWhite

White = White + 1

Case Is = vbBlack

Black = Black + 1

End Select

Text1.Text = White

Text2.Text = Black

Next Index


После этого в аналогичном цикле происходит подсчет количества уже нажатых кнопок, достигается это путем вложения в тело цикла неполной команды ветвления с проверкой условия о нажатии кнопки.



A = 0

For Index = 0 To 63

If Command1.Item(Index).Enabled = False Then

A = A + 1

End If

Next Index

If A = 64 Then

приглашение = "Игра закончена.Начните снова!"

If White > Black Then

сообщение = "Белые выиграли!"

Else

If White < Black Then

сообщение = "Чёрные выиграли!"

Else

сообщение = “Ничья!”

End If

End If

MsgBox сообщение, vbExclamation, приглашение

End If


Последнее описываемое событие – нажатие на кнопку ВЫХОД. Самый простой алгоритм

Private Sub ComEnd_Click()

End

End Sub


На этом разработка кода программы завершена и программа игры Реверси готова к использованию.



















Заключительная часть



Таким образом, создание программы в среде программирования Visual Basic можно разделить на 2 основных этапа:

  1. создание интерфейса

  2. написание программного кода

Именно возможность создания и просмотра интерфейса программы в режиме проектирования и является отличительной чертой среды Visual Basic, как графической, делающей её гибкой и приемлемой для решения разнообразных задач, в том числе и для создания игр, что было рассмотрено нами на примере создания игры «Реверси».




























Приложение (исходный код программы)


Dim Col As String

Dim Down, Right, Vert, Gor, A As Integer

Private Sub ComNew_Click()

Col = vbBlack


For Index = 0 To 63

Command1.Item(Index).BackColor = vbYellow

Command1.Item(Index).Enabled = True

Next Index


Command1.Item(27).BackColor = vbWhite

Command1.Item(28).BackColor = vbBlack

Command1.Item(35).BackColor = vbBlack

Command1.Item(36).BackColor = vbWhite

Command1.Item(27).Enabled = False

Command1.Item(28).Enabled = False

Command1.Item(35).Enabled = False

Command1.Item(36).Enabled = False


Text1.Text = 2

Text2.Text = 2

End Sub


Private Sub Command1_Click(Index As Integer)

If Col = vbBlack Then

Col = vbWhite

Else

Col = vbBlack

End If



Command1.Item(Index).BackColor = Col

Command1.Item(Index).Enabled = False


Vert = Index \ 8 + 1

Gor = 9 - (7 * Vert - (Index - Vert))



Down = 8 - Vert

Right = 8 - Gor

White = 0

Black = 0


For A = Down To 1 Step -1

If Command1.Item(Index + 8 * A).BackColor = Col Then

If Command1.Item(Index + 8 * (A - 1)).Enabled = False Then

Command1.Item(Index + 8 * (A - 1)).BackColor = Col

Else

End If

End If

Next A

For A = Vert - 1 To 1 Step -1

If Command1.Item(Index - 8 * A).BackColor = Col Then

If Command1.Item(Index - 8 * (A - 1)).Enabled = False Then

Command1.Item(Index - 8 * (A - 1)).BackColor = Col

End If

End If

Next A


For A = Right To 1 Step -1

If Command1.Item(Index + A).BackColor = Col Then If Command1.Item(Index + A - 1).Enabled = False Then

Command1.Item(Index + A - 1).BackColor = Col

End If

End If

Next A

For A = Gor - 1 To 1 Step -1

If Command1.Item(Index - A).BackColor = Col Then

If Command1.Item(Index - A + 1).Enabled = False Then

Command1.Item(Index - A + 1).BackColor = Col

End If

End If

Next A


For A = Down To 1 Step -1

If Command1.Item(Index + 7 * A).BackColor = Col Then

If Command1.Item(Index + 7 * (A - 1)).Enabled = False Then

Command1.Item(Index + 7 * (A - 1)).BackColor = Col

Else

End If

End If

Next A


For A = Vert - 1 To 1 Step -1

If Command1.Item(Index - 7 * A).BackColor = Col Then

If Command1.Item(Index - 7 * (A - 1)).Enabled = False Then

Command1.Item(Index - 7 * (A - 1)).BackColor = Col

End If

End If

Next A


For A = Down - 1 To 1 Step -1

If Command1.Item(Index + 9 * A).BackColor = Col Then

If Command1.Item(Index + 9 * (A - 1)).Enabled = False Then

Command1.Item(Index + 9 * (A - 1)).BackColor = Col

Else

End If

End If

Next A


For A = Vert - 2 To 1 Step -1

If Command1.Item(Index - 9 * A).BackColor = Col Then

If Command1.Item(Index - 9 * (A - 1)).Enabled = False Then

Command1.Item(Index - 9 * (A - 1)).BackColor = Col

End If

End If

Next A


For Index = 0 To 63

Select Case Command1.Item(Index).BackColor

Case Is = vbWhite

White = White + 1

Case Is = vbBlack

Black = Black + 1

End Select

Text1.Text = White

Text2.Text = Black

Next Index


A = 0

For Index = 0 To 63

If Command1.Item(Index).Enabled = False Then

A = A + 1

End If

Next Index

If A = 64 Then

приглашение = "Игра закончена.Начните снова!"

If White > Black Then

сообщение = "Белые выиграли!"

Else

If White < Black Then

сообщение = "Чёрные выиграли!"

Else

сообщение = "Ничья!"

End If

End If

MsgBox сообщение, vbExclamation, приглашение

End If


End Sub

Private Sub ComEnd_Click()

End

End Sub

© Рефератбанк, 2002 - 2017