РефератыИнформатика, программированиеПрПрограммирование в Бейсике

Программирование в Бейсике

Содержание

Введение


1. Постановка задачи


1.1 Моделирование


1.2 Входные, выходные данные


1.3 Организация данных


2. Разработка интерфейса


2.1 Редактор маршрутов


2.2 Создание нового маршрута


2.3 Просмотр маршрутов и управление автобусами


3. Алгоритм


4. Программная часть


Вывод


Список использованной литературы


Приложение


Введение

Обычно Basic ассоциируется с каким-то очень простым в освоении и использовании средством программирования. Это действительно так. На заре компьютерных технологий язык Basic был создан для создания простых программ и использовался в качестве учебного языка для первых шагов при изучении основ программирования с последующим переходом на более сложные и универсальные языки. Это было заложено в название языка BASIC — Beginners All-purpose Symbolic Instructional Code, то есть многоцелевой код символьных инструкций для начинающих. С прогрессом компьютерных технологий развивался и Basic. В настоящее время версия Visual Basic 6 дает возможность решать любые современные задачи разработки приложений. При этом Visual Basic 6 остался достаточно простым в освоении, став в то же время одним из мощных современных языков программирования.


По сути дела последняя версия языка Visual Basic 6 представляет собой интегрированную среду разработки — IDE (Integrated Development Environment). Это означает, что в Visual Basic 6 интегрирован набор инструментов, облегчающих и значительно ускоряющих процесс разработки готового приложения. Такая реализация языка Visual Basic 6 с полным правом позволяет отнести его к средствам быстрой разработки приложений — RAD (Rapid Application Development) и ставит практически в один ряд с такими средствами разработки, как Visual C++, Delphi и другими.


С помощью Visual Basic 6 можно создавать приложения практически для любой области современных компьютерных технологий: бизнес-приложения, игры, мультимедиа, базы данных. При этом приложения могут быть как простыми, так и очень сложными, в зависимости от поставленной задачи.


1. Постановка задачи


1.1 Моделирование


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


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


Предоставить при необходимости возможность изменения данных по маршруту: непосредственно имени самого маршрута, возможность добавить или удалить автобус, а также изменить данные по автобусам: имена водителя и кондуктора; Удалить, добавить, переместить, переименовать остановки или вообще изменить направление движения по маршруту, поменять порядок прохождения остановок автобусами данного маршрута, плюс удаление самого маршрута при необходимости.


Обеспечить возможности создания своего маршрута, а также корректировки данных (бортовой номер) по свободным автобусам (которые могут быть задействованы, если это необходимо).


Плюс ко всему, смоделировать (визуализировать) наглядное движение автобусов с учетом зависимости скорости автобусов от времени суток.


1.2 Входные, выходные данные


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


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


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


Предметной областью будет являться сама модель приложения, которая будет наглядно представлять работу оператора по управлению маршрутами и автобусами на них.


1.3 Организация данных


В данной работе для хранения уже существующих или записи ново созданных используются текстовые файлы.


Для хранения всех существующих маршрутов используется файл " c: Курсовая моя Маршруты.txt" , где представлен список названий имеющихся маршрутов.


Для хранения данных по всем маршрутам используются файлы (отдельный для каждого маршрута):


"c: Курсовая моя < название маршрута > .txt"


В таких файлах информация представлена например в следующем виде:


автобус, 512


водитель, Батуров П.П.


кондуктор, Иванова И.И.


автобус, 513


водитель, Рябова Т.И.


кондуктор, Шишкова Ю.М.


автобус, 514


водитель, Продидж Н.Н.


кондуктор, Мартысюк С.С.


остановка, , 405, 4680


остановка, , 915, 2730


остановка, , 870, 765


остановка, , 3750, 255


остановка, , 2790, 2490


остановка, , 5955, 3585


остановка, , 6030, 1995 и так далее …


Для хранения свободных на данный момент автобусов тоже используется свой файл :


" c: Курсовая моя Свободные автобусы .txt"


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


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


arLinesName(0 To 30) AsString


-- для записи названий всех маршрутов, 30 – максимальное число маршрутов


LinesCountAsInteger


-- для запоминания количества маршрутов


arBusNumber(0 To 30, 0 To 25) AsString


-- для записи номеров всех автобусов, 25 – максимальное число автобусов на одном маршруте


arBusCount(0 To 30) AsInteger


-- для запоминания количества автобусов на определенном маршруте


AllBusesAsInteger


-- для хранения числа всех задействованных на маршрутах автобусов


arDriveName(0 To 30, 0 To 25) AsString


-- для запоминания имени водителя автобуса на определенном маршруте


arConductorName(0 To 30, 0 To 25) AsString


-- для запоминания имени кондуктора автобуса на определенном маршруте


arStayName(0 To 30, 0 To 35) AsString


-- для хранения названий всех остановок определенного маршрута


arStayAbsciss(0 To 30, 0 To 35) As String


arStayOrdinata(0 To 30, 0 To 35) As String


-- для записи координат( по X и Y) для каждой остановки определенного маршрута


arStayCount(0 To 30) AsInteger


-- для хранения числа остановок на данном маршруте


2. Разработка интерфейса


Интерфейс пользователя, возможно, является самой важной частью приложения – это то, что видит пользователь. Для него интерфейс и есть само приложение. При разработке приложения необходимо ответить на множество вопросов. Сколько разных форм необходимо иметь в приложении? Какие команды войдут в меню? и т. д. До начала проектирования пользователю следует подумать о назначении приложения, чтобы как можно грамотнее правильнее подобрать стиль оформления и разработать подходящий и в тоже время удобный дизайн. Для реализации всех пунктов данного задания понадобилось две формы для работы в разных режимах : в режиме просмотра маршрутов и управления движением автобусов и в режиме редактирования маршрутов и данных по ним, а также создания своих собственных маршрутов. И конечно в качестве описания приложения, его свойств использовалась третья форма( About ).


2.1 Редактор маршрутов


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


Для хранения названий маршрутов, номеров автобусов( как задействованных, так и свободных) и названий остановок используются элементы управления Combo_Box; для прорисовки маршрутов – Picture_Box; для обозначения остановок – Image_Box.



2.2 Создание нового маршрута


Для создания своего маршрута аналогично выбираем пункт – Создать новый маршрут



Для записи названия маршрута, имен водителя и кондуктора, а также названия остановки (если нужно задать ей свое имя) используются элементы управления Text_Box; для хранения номеров автобусов( как прикрепленных к создаваемому маршруту, так и еще свободных) – Combo_Box; для рисования своего произвольного маршрута – Picture_Box.


2.3 Просмотр маршрутов и управление автобусами


Для выбора режима просмотра маршрутов и управления движением автобусов нужно выбрать пункт меню: Маршруты



Здесь для хранения названий маршрутов используется элемент управления Combo_Box; для отображения данных по автобусам – Label и Text_Box; для отображения самого маршрута и движения по нему автобусов – Picture_Box; для самих автобусов, остановок.


3. Алгоритм


Алгоритм – это заданная последовательность действий, которые необходимо выполнить над исходными данными для получения конечного желаемого результата. Алгоритм является важным шагом на пути к созданию приложения. Он позволяет наглядно, а главное, в большинстве случаев, понятно, продемонстрировать работу программы. Он помогает не только сразу разобраться, что нужно реализовывать в данном проекте, понять как работает данная программа, на чем она основана, но и избежать многих ошибок или найти и исправить их, так как в самом коде программы они становятся почти незаметными на взгляд. Данное приложение можно разбить на три части:


1.Просмотр маршрутов и управление движением автобусов.


- Считывание из файла " Маршруты.txt" названия всех существующих маршрутов и запись их в Combo_Box


- При выборе определенного маршрута из списка представленных - считывание из файла выбранного маршрута " < Имя маршрута >.txt" данных : номера автобусов, имена их водителей и кондукторов, названия всех остановок и их координаты. Отображение в Picture_Box схемы самого маршрута с помощью линий, остановок и автобусов – Image_Box


- Осуществление с помощью Timer движения автобусов путем расчета новых координат промежуточного положения автобусов, учитывая изменения по координатным осям, и перерисовкой автобусов на новом месте


- При выборе автобуса – щелчок по нему – отображение основных данных по нему: имена водителя и кондуктора, номер, скорость с учетом времени суток и уровень оставшегося топлива


- При щелчке по остановкам перемещать активный в данный момент автобус( выделенный) на эти остановки


- При выборе пунктов меню: переместить на остановку вперед и назад - перемещать активный в данный момент автобус( выделенный) соответственно на эти остановки


- При выборе пунктов: Режимы передвижения или просмотра автобусов – соответственно разрешать или запрещать ручное (Drag_and_Drop) перетаскивание автобусов


2.Просмотр свободных автобусов


- открывает файл свободных автобусов


3.Редактор маршрутов


- Считывание из файла " Маршруты.txt" названия всех существующих маршрутов и запись их в Combo_Box


- При выборе определенного маршрута из списка представленных - считывание из файла выбранного маршрута " < Имя маршрута >.txt" данных : номера автобусов, имена их водителей и кондукторов, названия всех остановок и их координаты. Отображение в Picture_Box схемы самого маршрута с помощью линий и остановки – Image_Box


- При нажатии кнопки Новый считывание из файла " Маршруты.txt" названия всех существующих маршрутов и запись их в Combo_Box


- При выборе кнопок Добавление/Изменение или Удаление соответственно добавление, изменение или удаление в зависимости от определенных параметров


- При нажатии соответствующих после выбора режима изменения маршрутов кнопок переименование, удаление, перемещение выбранной остановки или добавление новой


- Перенаправление маршрута и запоминание соответственно уже измененного маршрута


- При нажатие соответствующей кнопки запись изменений в файл открытого маршрута


4.Создание нового маршрута


- Запись в файл маршрутов названия нового и создание файла самого маршрута


4. Программная часть


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


1.Визуализация движения автобусов


Fori = 0 To (AllBuses - 1)


Fuel(i) = Fuel(i) - 1 / (10000 * Me.Timer1.Interval)


If i = Misk Then Me.Label13.Caption = Str$(Fuel(Misk))


If Fuel(i) = 0 Then Fuel(i) = 100


Next i


For z = 0 To (Combo1.ListCount - 1)


For i = 0 To (arBusCount(z) - 1)


If z <> 0 Then


a = i


For j = 0 To (z - 1)


i = i + arBusCount(j)


Next j


End If


If arStayPast(z, i) = (arStayCount(z) - 1) Then arStayEdit(z, i)= -1


If arStayPast(z, i) = 0 Then arStayEdit(z, i) = 1


If Val(arStayAbsciss(z, arStayPast(z, i))) > Val(arStayAbsciss(z, arStayPast(z, i) + arStayEdit(z, i))) _


Then arCoordEdit(z, i) = -1


If Val(arStayAbsciss(z, arStayPast(z, i))) < Val(arStayAbsciss(z, arStayPast(z, i) + arStayEdit(z, i))) _


Then arCoordEdit(z, i) = 1


If Val(arStayAbsciss(z, arStayPast(z, i))) = Val(arStayAbsciss(z, arStayPast(z, i) + arStayEdit(z, i))) _


Then arCoordEdit(z, i) = 0


k(z, i) = (Val(arStayOrdinata(z, arStayPast(z, i))) - Val(arStayOrdinata(z, arStayPast(z, i) + arStayEdit(z, i)))) / _


(Val(arStayAbsciss(z, arStayPast(z, i))) - Val(arStayAbsciss(z, arStayPast(z, i) + arStayEdit(z, i))))


b(z, i) = Val(arStayOrdinata(z, arStayPast(z, i))) - k(z, i) * Val(arStayAbsciss(z, arStayPast(z, i)))


Dim c As Single


c = Cos(Atn(k(z, i)))


x0(z, i) = x0(z, i) + c * 2 * arCoordEdit(z, i)


y0(z, i) = k(z, i) * x0(z, i) + b(z, i)


Image1(i).Move x0(z, i) - Image1(i).Width / 2, y0(z, i) - Me.Image1(i).Height / 2


If arCoordEdit(z, i) = 1 Then


If x0(z, i) >= Val(arStayAbsciss(z, arStayPast(z, i) + arStayEdit(z, i))) _


Then arStayPast(z, i) = arStayPast(z, i) + arStayEdit(z, i)


End If


If arCoordEdit(z, i) = -1 Then


If x0(z, i) <= Val(arStayAbsciss(z, arStayPast(z, i) + arStayEdit(z, i)))_


Then arStayPast(z, i) = arStayPast(z, i) + arStayEdit(z, i)


End If


If z <> 0 Then i = a


Next i


Next z


End Sub


где k(z, i) – угловой коэффициент уравнения движения автобуса " i " по маршруту " z "; b(z, i) – свободный член того же уравнения; arCoordEdit(z, i) – в какую сторону изменять координату автобуса; arStayPast(z, i), arStayEdit(z, i) – соответственно последняя остановка, которую прошел автобус, и величина, показывающая в какую сторону будут изменяться остановки; с – изменение координаты автобуса по X; x0(z, i), y0(z, i) – промежуточные координаты автобуса. В данной процедуре программа сама проверяет в какую сторону должен двигаться определенный автобус, как должна изменяться его координата и где следующий момент времени он будет находиться.


2.Работа с текстовыми файлами при считывании информации об определенном маршруте


Public Static Sub Work_With_Files()


arBusCount(Mis) = 0


arStayCount(Mis) = 0


Open "c:Курсоваямоя" + Combo1.List(Mis) + ".txt" For Input As 2


Do While Not EOF(2)


Input #2, a$


Select Case a$


Case "автобус": Input #2, arBusNumber(Mis, arBusCount(Mis))


Case "водитель": Input #2, arDriveName(Mis, arBusCount(Mis))


Case "кондуктор": Input #2, arConductorName(Mis, arBusCount(Mis))


arBusCount(Mis) = arBusCount(Mis) + 1


Case "остановка": Input #2, arStayName(Mis, arStayCount(Mis))


Input #2, arStayAbsciss(Mis, arStayCount(Mis))


Input #2, arStayOrdinata(Mis, arStayCount(Mis))


arStayCount(Mis) = arStayCount(Mis) + 1


End Select


Loop


Close 2


End Sub


где Mis – номер текущего маршрута, файл которого читается.


Полный код программы смотрите в Приложении.


Вывод


В данной программе удалось полностью реализовать поставленную задачу.


С помощью VisualBasic получили:


Программу - модель работы оператора по управлению автобусами


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


Предоставили возможность изменения данных по маршруту: непосредственно имени самого маршрута, возможность добавить или удалить автобус, а также изменить данные по автобусам: имена водителя и кондуктора; удалить, добавить, переместить, переименовать остановки или вообще изменить направление движения по маршруту, поменять порядок прохождения остановок автобусами данного маршрута, плюс удаление самого маршрута при необходимости.


Обеспечили возможности создания своего маршрута, а также корректировки данных (бортовой номер) по свободным автобусам (которые могут быть задействованы, если это необходимо).


Плюс ко всему, смоделировали (визуализировать) наглядное движение автобусов с учетом зависимости скорости автобусов от времени суток.


Список использованной литературы


1.VisualBasic 6.0 – Мастер – Разработка приложений. Санкт – Петербург, " БХВ - Петербург", 2000


2.Самоучитель по VisualBasic 6.0


Приложение


Form1


Public EditBus As Boolean


Public EditLine As Boolean


Dim DooM As Boolean, Doomy As Boolean, Do_Do As Boolean


Dim Mis As Integer, Mi As Integer


Dim Misk As Integer, disk As Integer


Dim w As Single


Dim arLinesName(0 To 30) As String, LinesCount As Integer '30 - max маршрутов


Dim arBusNumber(0 To 30, 0 To 25) As String, arBusCount(0 To 30) As Integer


Dim AllBuses As Integer '25 - max автобусов


Dim arDriveName(0 To 30, 0 To 25) As String


Dim arConductorName(0 To 30, 0 To 25) As String


Dim arStayName(0 To 30, 0 To 35) As String ' 35 max остановокнаодноммаршруте


Dim arStayAbsciss(0 To 30, 0 To 35) As String


Dim arStayOrdinata(0 To 30, 0 To 35) As String


Dim arStayCount(0 To 30) As Integer


Dim arName(0 To 30, 0 To 35) As String ' 35 - max остановокнаодноммаршруте


Dim arAbsciss(0 To 30, 0 To 35) As String


Dim arOrdinata(0 To 30, 0 To 35) As String


Dim arFreeBuses(0 To 100) As String


Dim q As Integer, food As Boolean, Boom As Boolean


Dim e As Integer, mx As Single, my As Single


Dim zzz As Integer, zxz As Integer


Dim aa As Integer, x0 As Single, y0 As Single, nama(0 To 30, 0 To 35) As String


Private Sub Combo1_Click()


Mi = 0


Misk = 0


Boom = True


disk = 999


Do_Do = False


Doomy = False


Command4.Enabled = False


Command5.Enabled = False


Command6.Enabled = False


Combo2.Clear


Combo3.Clear


Combo4.Clear


Text1.Text = "": Text2.Text = "": Text3.Text = "": Text4.Text = ""


Me.Picture1.Visible = True


Combo2.Enabled = True: Combo4.Enabled = True


Command1.Enabled = True: Command2.Enabled = True: Command3.Enabled = True: Command7.Enabled = True


Command5.Enabled = True


Mis = Combo1.ListIndex


If Len(Dir("c:Курсоваямоя" + Combo1.List(Mis) + ".txt")) = 0 Then


MsgBox"Файл маршрута не найден" + vbCrLf + _


"Проверьте его наличие: 'c:Курсовая моя" + Combo1.List(Mis) + ".txt'"


Exit Sub


Else


Files


End If


For i = 0 To arBusCount(Mis) - 1


Combo2.AddItem arBusNumber(Mis, i)


Next i


For i = 0 To 35


Image1(i).Picture = LoadPicture("c:КурсоваямояИконкиIcon2.ico")


Next i


Picture1.Cls


For i = 1 To 35


Me.Image1(i).Visible = False


Me.Label14(i).Visible = False


Next i


Me.Picture1.PSet (arStayAbsciss(Mis, 0), arStayOrdinata(Mis, 0))


w = Me.Image1(0).Width / 2


Me.Image1(0).Move arStayAbsciss(Mis, 0) - w, arStayOrdinata(Mis, 0) - w


Me.Label14(0).Move Image1(0).Left + 2 * w, Image1(0).Top


Me.Label14(0).Caption = arStayName(Mis, 0)


For i = 0 To (arStayCount(Mis) - 1)


Me.Picture1.Line -(arStayAbsciss(Mis, i), arStayOrdinata(Mis, i))


Me.Image1(i).Move arStayAbsciss(Mis, i) - w, arStayOrdinata(Mis, i) - w


Me.Image1(i).Visible = True


Me.Label14(i).Visible = True


Me.Label14(i).Move Image1(i).Left + 2 * w, Image1(i).Top


Me.Label14(i).Caption = arStayName(Mis, i)


Me.Combo4.AddItem arStayName(Mis, i)


Next i


End Sub


Private Sub Combo2_Click()


DooM = False


Text2.Enabled = True: Text3.Enabled = True


Me.Command8.Enabled = True


Misk = Combo2.ListIndex


Text1.Text = arBusNumber(Mis, Misk)


Text2.Text = arDriveName(Mis, Misk)


Text3.Text = arConductorName(Mis, Misk)


End Sub


Private Sub Combo3_Click()


DooM = True


Text2.Enabled = True: Text3.Enabled = True


Mi = Combo3.ListIndex


Text1.Text = Combo3.List(Mi)


Text2.Text = ""


Text3.Text = ""


End Sub


Private Sub Combo4_Click()


disk = Combo4.ListIndex


Text4.Enabled = True


Text4.Text = Combo4.List(disk)


For i = 0 To 35


If Label14(i).Caption = Combo4.List(disk) Then


Image1(i).Picture = LoadPicture("c:КурсоваямояИконки!conMania.cur")


Else


Image1(i).Picture = LoadPicture("c: КурсоваямояИконкиIcon2.ico")


End If


Next i


End Sub


Private Sub Combo5_Click()


zxz = Combo5.ListIndex


Text7.Text = Combo5.List(zxz)


Text6.Text = ""


Text5.Text = ""


Command11.Enabled = True


Text5.Enabled = True


Text6.Enabled = True


End Sub


Private Sub Combo7_Click()


Text9.Enabled = True


Text9.Text = nama(LinesCount - 1, Combo7.ListIndex)


End Sub


Private Sub Command1_Click()


IfLen(Dir("c:Курсовая мояСвободные автобусы.txt")) = 0 Then


MsgBox "Файл свободных автобусов не найден!!!" + vbCrLf + _


"Проверьте его наличие : 'c: Курсовая мояСвободные автобусы.txt'"


Exit Sub


End If


Combo3.Enabled = True


i = 0


Open "c: Курсовая мояСвободные автобусы.txt" ForInputAs 3


Do While Not EOF(3)


Input #3, arFreeBuses(i)


Combo3.AddItem arFreeBuses(i)


i = i + 1


Loop


Close 3


End Sub


Private Sub Command10_Click()


IfCommand10.Caption = "Начать последовательность остановок" Then


Command7.Enabled = False


food = True


q = 0


Else


Command7.Enabled = True


food = False


Combo4.Enabled = False


Text4.Enabled = False


Command3.Enabled = False


Command4.Enabled = False


Command5.Enabled = False


Command6.Enabled = False


End If


End Sub


Private Sub Command11_Click()


Combo6.Enabled = True


If Text7.Text = "" Or Text6.Text = "" Or Text5.Text = "" Then


MsgBox "Все поля должны быть заполнены!!!"


Exit Sub


End If


arBusNumber(LinesCount - 1, zzz) = LTrim(Str$(LinesCount - 1 + 1) + Combo5.List(zxz))


arDriveName(LinesCount - 1, zzz) = Text6.Text


arConductorName(LinesCount - 1, zzz) = Text5.Text


Combo6.AddItem arBusNumber(LinesCount - 1, zzz)


Combo5.RemoveItem Mi


zzz = zzz + 1


End Sub


Private Sub Command12_Click()


IfLen(Dir("c: Курсовая мояСвободные автобусы.txt")) = 0 Then


MsgBox "Файл свободных автобусов не найден!!!" + vbCrLf + _


"Проверьте его наличие : 'c: Курсовая мояСвободные автобусы.txt'"


Exit Sub


End If


Combo3.Enabled = True


Combo5.Enabled = True


End Sub


Private Sub Command13_Click()


If Text8.Text = "" Then MsgBox "Напишитеназваниемаршруту!!!": Exit Sub


If Len(Dir("c: КурсоваямояМаршруты.txt")) = 0 Then


MsgBox "Файл маршрутов не найден!!!" + vbCrLf + _


"Проверьте его наличие : 'c: Курсовая мояМаршруты.txt'"


Combo1.Enabled = False


Label11.Visible = False


Exit Sub


End If


Open "c: КурсоваямояМаршруты.txt" For Append As 1


Print #1, Text8.Text


Close 1


Open "c:курсоваямоя" + Text8.Text + ".txt" For Output As 3


For zzz = 0 To (Combo6.ListCount - 1)


Print #3, "автобус,", arBusNumber(LinesCount - 1, zzz)


Print #3, "водитель,", arDriveName(LinesCount - 1, zzz)


Print #3, "кондуктор,", arConductorName(LinesCount - 1, zzz)


Next zzz


For i = 0 To (Combo7.ListCount - 1)


Print #3, "остановка,", nama(LinesCount - 1, i), ",", Combo7.List(i)


Next i


Close 3


Open "c: КурсоваямояСвободныеавтобусы.txt" For Output As 6


For i = 0 To (Combo5.ListCount - 1)


Print #6, Combo5.List(i)


Next i


Close 6


mnuNewLine_Click


End Sub


Private Sub Command14_Click()


Frame2.Visible = False


End Sub


Private Sub Command15_Click()


Frame1.Visible = False


End Sub


Private Sub Command16_Click()


IfText9.Text = "" ThenMsgBox "Напишите название остановки!!!" Else _


nama(LinesCount - 1, Combo7.ListIndex) = Text9.Text


End Sub


Private Sub Command17_Click()


Picture2.Cls


Combo6.Clear: Combo6.Enabled = False


Combo5.Enabled = False


Text6.Text = "": Text6.Enabled = False


Text5.Text = "": Text5.Enabled = False


Command11.Enabled = False


Combo7.Enabled = False: Combo7.Clear


Text9.Text = "": Text9.Enabled = False


Command16.Enabled = False: Command13.Enabled = False


End Sub


Private Sub Command2_Click()


If Text1.T

ext = "" Or Text2.Text = "" Or Text3.Text = "" Then


MsgBox "Все поля должны быть заполнены!!!"


Exit Sub


End If


Select Case DooM


Case False: arDriveName(Mis, Misk) = Text2.Text


arConductorName(Mis, Misk) = Text3.Text


Case True: arBusNumber(Mis, Combo2.ListCount) = LTrim(Str$(Mis + 1) + Combo3.List(Mi))


arDriveName(Mis, Combo2.ListCount) = Text2.Text


arConductorName(Mis, Combo2.ListCount) = Text3.Text


Combo2.AddItem arBusNumber(Mis, Combo2.ListCount), Combo2.ListCount


Combo3.RemoveItem Mi


End Select


End Sub


Private Sub Command3_Click()


Doomy = True


Picture1.Cls


Command4.Enabled = True


Command5.Enabled = True


Command6.Enabled = True


End Sub


Private Sub Command4_Click()


If Doomy = True Then


If disk <> 999 Then


Image1(disk).Visible = False


Label14(disk).Visible = False


Combo4.List(disk) = " - "


End If


disk = 999


End If


End Sub


Private Sub Command5_Click()


Text4.Enabled = True


If Doomy = True Then Exit Sub


If disk <> 999 Then


If Do_Do = True Then


IfText4.Text = "" Then


MsgBox "напишите название остановки!!!"


Else


arStayName(Mis, disk) = Text4.Text


For i = 0 To 35


If Label14(i).Caption = Combo4.List(disk) Then Label14(i).Caption = Text4.Text


Next i


Me.Combo4.List(disk) = Text4.Text


Do_Do = False


End If


End If


End If


End Sub


Private Sub Command6_Click()


If Boom = True Then


If disk <> 999 Then Image1(disk).DragMode = 1


Else


If disk <> 999 Then Image1(disk).DragMode = 0


Boom = True


End If


End Sub


Private Sub Command7_Click()


Open "c:Курсоваямоя" + Combo1.List(Mis) + ".txt" For Output As 5


For i = 0 To (Combo2.ListCount - 1)


If Combo2.List(i) <> " - " Then


Print #5, "автобус,", Combo2.List(i)


Print #5, "водитель,", arDriveName(Mis, i)


Print #5, "кондуктор,", arConductorName(Mis, i)


End If


Next i


If Command10.Caption = "Сохранитьвсесделанныеизменения" Then


For i = 0 To (Combo4.ListCount - 1)


If Combo4.List(i) <> " - " Then _


Print #5, "остановка,", arStayName(Mis, i), ",", arStayAbsciss(Mis, i), ",", arStayOrdinata(Mis, i)


Next i


Else


For i = 0 To (Combo4.ListCount - 1)


If Combo4.List(i) <> " - " Then _


Print #5, "остановка,", arName(Mis, i), ",", arAbsciss(Mis, i), ",", arOrdinata(Mis, i)


Next i


End If


Close 5


Open "c: Курсовая мояСвободные автобусы.txt" ForOutputAs 6


For i = 0 To (Combo3.ListCount - 1)


Print #6, Combo3.List(i)


Next i


Close 6


End Sub


Private Sub Command8_Click()


If DooM = True Then MsgBox "Нечегоудалять!!!"


If DooM = False Then


Combo2.List(Misk) = " - "


IfLen(Dir("c: Курсовая мояСвободные автобусы.txt")) = 0 Then


MsgBox "Файл маршрутов не найден!!!" + vbCrLf + _


"Проверьте его наличие : 'c: Курсовая мояСвободные автобусы.txt'"


Exit Sub


End If


Open "c: КурсоваямояСвободныеавтобусы.txt" For Append As 7


Print #7, arBusNumber(Mis, Misk)


Close 7


End If


End Sub


Private Sub Command9_Click()


If Len(Dir("c: Курсоваямоямаршруты.txt")) = 0 Then


MsgBox " Файл маршрутов не найден!!!" + vbCrLf + _


" Проверьте его наличие: 'c: Курсовая моямаршруты.txt'"


Combo1.Enabled = False


Label11.Visible = False


Exit Sub


End If


Open "c: Курсовая моямаршруты.txt" For Output As 4


For i = 0 To (Combo1.ListCount - 1)


If i <> Mis Then Print #4, Combo1.List(i)


Next i


Close 4


Open "c:Êóðñîâàÿ ìîÿ" + Combo1.List(Mis) + ".txt" For Output As 4


Close 4


End Sub


Private Sub Form_Load()


aa = 0


q = 999


For i = 1 To 35


Load Image1(i)


Load Label14(i)


Me.Image1(i).Visible = False


Me.Label14(i).Visible = False


Next i


disk = 999


End Sub


Private Sub Image1_Click(Index As Integer)


w = Image1(0).Width / 2


If q = 0 Then


Picture1.PSet (Image1(Index).Left, Image1(Index).Top)


Combo4.Clear


End If


If food = True Then


Command10.Caption = "Çàïîìíèòü"


arName(Mis, q) = arStayName(Mis, Index)


arAbsciss(miss, q) = arStayAbsciss(Mis, Index)


arOrdinata(miss, q) = arStayOrdinata(Mis, Index)


Combo4.AddItem arName(Mis, q)


Picture1.Line -(arStayAbsciss(Mis, Index), arStayOrdinata(Mis, Index))


q = q + 1


Else


disk = Index


Combo4.ListIndex = disk


End If


End Sub


Private Sub mnuEditLine_Click()


Combo1.Clear


Me.Frame1.Visible = True


If Len(Dir("c: Курсовая моямаршруты.txt")) = 0 Then


MsgBox " Файл маршрутов не найден!!!" + vbCrLf + _


"Ïðîâåðüòå åãî íàëè÷èå : 'c: Курсовая моямаршруты.txt'"


Combo1.Enabled = False


Label11.Visible = False


Exit Sub


End If


Open "c: Курсовая моямаршруты.txt" For Input As 1


LinesCount = 0


Do While Not EOF(1)


Input #1, arLinesName(LinesCount)


Combo1.AddItem arLinesName(LinesCount)


LinesCount = LinesCount + 1


Loop


Close 1


End Sub


Private Sub mnuFree_Click()


If Len(Dir("c: КурсоваямояСвободныеавтобусы.txt")) = 0 Then


MsgBox " Файл маршрутов не найден!!!" + vbCrLf + _


" Проверьте его наличие: 'c: Курсовая мояСвободные автобусы.txt"


ExitSub


EndIf


Retval = Shell("NotePad.exec: Курсовая мояСвободные автобусы.txt", 1)


End Sub


Private Sub mnuLines_Click()


Form2.Show


End Sub


Public Static Sub Files()


arBusCount(Mis) = 0


arStayCount(Mis) = 0


Open "c:Êóðñîâàÿ ìîÿ" + Combo1.List(Mis) + ".txt" For Input As 2


Do While Not EOF(2)


Input #2, a$


Select Case a$


Case "автобус": Input #2, arBusNumber(Mis, arBusCount(Mis))


Case "водитель": Input #2, arDriveName(Mis, arBusCount(Mis))


Case "кондуктор": Input #2, arConductorName(Mis, arBusCount(Mis))


arBusCount(Mis) = arBusCount(Mis) + 1


Case "остановка": Input #2, arStayName(Mis, arStayCount(Mis))


Input #2, arStayAbsciss(Mis, arStayCount(Mis))


Input #2, arStayOrdinata(Mis, arStayCount(Mis))


arStayCount(Mis) = arStayCount(Mis) + 1


End Select


Loop


Close 2


End Sub


Private Sub Image1_DragOver(Index As Integer, Source As Control, X As Single, Y As Single, State As Integer)


If e = 0 Then


mx = X


my = Y


e = 1


End If


End Sub


Private Sub mnuNewLine_Click()


zzz = 0


Frame1.Visible = False


Frame2.Visible = True


If Len(Dir("c: Курсовая моямаршруты.txt")) = 0 Then


MsgBox " Файл маршрутов не найден í!!!" + vbCrLf + _


"Ïðîâåðüòå åãî íàëè÷èå : 'c: Курсовая моямаршруты.txt'"


Combo1.Enabled = False


Label11.Visible = False


Exit Sub


End If


Open "c: Курсовая моямаршруты.txt" For Input As 1


LinesCount = 0


Do While Not EOF(1)


Input #1, arLinesName(LinesCount)


Combo1.AddItem arLinesName(LinesCount)


LinesCount = LinesCount + 1


Loop


Close 1


i = 0


Open "c: Курсовая мояСвободные автобусы.txt" ForInputAs 3


Do While Not EOF(3)


Input #3, arFreeBuses(i)


Combo5.AddItem arFreeBuses(i)


i = i + 1


Loop


Close 3


End Sub


Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single)


Source.Move X - mx, Y - my: Label14(disk).Move X - mx + w * 2, Y - my


arStayAbsciss(Mis, disk) = Str$(X - mx)


arStayOrdinata(Mis, disk) = Str$(Y - my)


e = 0


Boom = False


Command6_Click


End Sub


Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)


If Doomy Then


If Text4.Text = "" Then MsgBox "Напишитеназваниеостановки!!!": Exit Sub


If Do_Do = False Then


Exit Sub


Else


If Text4.Text = "" Then MsgBox " Напишите название остановки!!!": Exit Sub


Image1(Combo4.ListCount).Visible = True


Image1(Combo4.ListCount).Move X - w, Y - w


Me.Label14(Combo4.ListCount).Visible = True


Me.Label14(Combo4.ListCount).Move Image1(Combo4.ListCount).Left + 2 * w, Image1(Combo4.ListCount).Top


Me.Label14(Combo4.ListCount).Caption = Text4.Text


arStayAbsciss(Mis, Combo4.ListCount) = Str$(X - w): arStayOrdinata(Mis, Combo4.ListCount) = (Y - w)


arStayName(Mis, Combo4.ListCount) = Text4.Text


Me.Combo4.AddItem arStayName(Mis, Combo4.ListCount)


Me.Text4.Text = ""


End If


Else


Exit Sub


End If


End Sub


Private Sub Picture2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)


Combo7.Enabled = True


aa = aa + 1


Combo7.AddItem Str$(X) + "," + Str$(Y)


nama(LinesCount - 1, aa - 1) = Str$(aa - 1)


If aa <> 1 Then


Me.Picture2.Line -(X, Y)


Command13.Enabled = True


Else


Me.Picture2.PSet (X, Y)


End If


x0 = X: y0 = Y


End Sub


Private Sub Text4_Change()


Do_Do = True


End Sub


Private Sub Text9_Change()


Command16.Enabled = True


End Sub


Form2


Dim Boom As Boolean


Dim MovePossible As Boolean


Dim arLinesName(0 To 30) As String, LinesCount As Integer '30 max маршрутов


Dim arBusNumber(0 To 30, 0 To 25) As String, arBusCount(0 To 30) As Integer


Dim AllBuses As Integer '25 - max автлбусов


Dim arDriveName(0 To 30, 0 To 25) As String


Dim arConductorName(0 To 30, 0 To 25) As String


Dim arStayName(0 To 30, 0 To 35) As String ' 35 - max остановокнаодноммаршруте


Dim arStayAbsciss(0 To 30, 0 To 35) As String


Dim arStayOrdinata(0 To 30, 0 To 35) As String


Dim arStayCount(0 To 30) As Integer


Dim arStayPast(0 To 30, 0 To 25) As Integer последняяостановкаавтобуса


DimarStayEdit(0 To 30, 0 To 25) AsIntegerв какую сторону изменять остановки


Dim arCoordEdit(0 To30,Dim k(0 To 30, 0 To 25) As Single вкакуюсторонуизменятькоординаты


Dim b(0 To 30, 0 To 25) As Single угловойкоэффициентпридвижении


Dim x0(0 To 30, 0 To 25) As Single


Dim y0(0 To 30, 0 To 25) As Single


Dim mx As Single '


Dim my As Single, p As Integer, Pisk As Integer


Public Mis As Integer определенныймаршрут


Public Misk As Integer определенныйавтобус


Dim i As Integer


Dim w As Single


Const t0 = 4: Const t1 = 7: Const t2 = 10: Const t3 = 13


Const t4 = 15: Const t5 = 17: Const t6 = 20: Const t7 = 23


Dim Fuel(0 To 750) As Single


Private Sub Combo1_Click()


Me.mnuEditBuses.Enabled = True


Me.mnuMove.Enabled = True


Me.Command1.Enabled = True


For i = 0 To (AllBuses - 1)


Image1(i).Picture = LoadPicture("c: Курсовая мояИконкиBlue Bus.ico")


Next i


Me.Frame1.Visible = True


Me.Label2.Visible = True


Mi = Mis


Mis = Combo1.ListIndex


Me.Picture1.Visible = True


Me.Label9.Visible = True


arBusCount(Combo1.ListIndex) = 0


arStayCount(Combo1.ListIndex) = 0


If Len(Dir("c:Êóðñîâàÿ ìîÿ" + Combo1.List(Mis) + ".txt")) = 0 Then


MsgBox " Файл маршрутов не найден!!!" + vbCrLf + _


"Ïðîâåðüòå åãî íàëè÷èå : 'c:Êóðñîâàÿ ìîÿ" + Combo1.List(Mis) + ".txt'"


Combo1.ListIndex = Mi


Exit Sub


Else


Work_With_Files


End If


Picture1.Cls


For i = 1 To 35


Me.Image2(i).Visible = False


Me.Label14(i).Visible = False


Next i


Me.Picture1.PSet (arStayAbsciss(Mis, 0), arStayOrdinata(Mis, 0))


w = Me.Image2(0).Width / 2


Me.Image2(0).Move arStayAbsciss(Mis, 0) - w, arStayOrdinata(Mis, 0) - w


Me.Label14(0).Move Image2(0).Left + 2 * w, Image2(0).Top


Me.Label14(0).Caption = arStayName(Mis, 0)


For i = 0 To (arStayCount(Mis) - 1)


Me.Picture1.Line -(arStayAbsciss(Mis, i), arStayOrdinata(Mis, i))


Me.Image2(i).Move arStayAbsciss(Mis, i) - w, arStayOrdinata(Mis, i) - w


Me.Image2(i).Visible = True


Me.Label14(i).Visible = True


Me.Label14(i).Move Image2(i).Left + 2 * w, Image2(i).Top


Me.Label14(i).Caption = arStayName(Mis, i)


Next i


For i = 0 To (AllBuses - 1)


Image1(i).Visible = False


Next i


If Boom = True Then Boom = False: First_Stay_of_Buses


For i = 0 To (arBusCount(Combo1.ListIndex) - 1)


If Mis <> 0 Then


a = i


For j = 0 To (Mis - 1)


i = i + arBusCount(j)


Next j


Me.Image1(i).Visible = True


i = a


GoTo 1


Else


Me.Image1(i).Visible = True


End If


1: Next i


Me.Timer1 = True


If Misk <> 999 Then If Image1(Misk).Visible = True Then Image1_Click (Misk)


t = Time


tnow = Val(Mid$(Str$(t), 1, 2))


If tnow > t0 And tnow < t1 Or tnow > t2 And tnow < t3 Or tnow > t4 And tnow < t5 Or _


tnow > t6 And tnow <= t7 Then Label8.Caption = "60 êì/÷": Timer1.Interval = 5


If tnow >= t1 And tnow <= t2 Or tnow >= t3 And tnow <= t4 Or tnow >= t5 And tnow <= t6 Then _


Label8.Caption = "30 êì/÷": Timer1.Interval = 10


If tnow = 24 Or tnow >= 0 And tnow <= 4 Then Label8.Caption = " - ": 'Timer1.Enabled = False


Label13.Caption = "100"


End Sub


Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)


For z = 0 To (Combo1.ListCount - 1)


Me.Picture1.PSet (arStayAbsciss(z, 0), arStayOrdinata(z, 0))


For i = 0 To (arStayCount(z) - 1)


Me.Picture1.Line -(arStayAbsciss(z, i), arStayOrdinata(z, i)), QBColor(z + 3)


Next i


For i = 0 To (arBusCount(z) - 1)


If z <> 0 Then


a = i


For j = 0 To (z - 1)


i = i + arBusCount(j)


Next j


Me.Image1(i).Visible = True


i = a


GoTo 1


Else


Me.Image1(i).Visible = True


End If


1: Next i


Next z


End Sub


Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)


Combo1_Click


End Sub


Private Sub Command2_Click()


Misk = 999


Unload Me


End Sub


Private Sub Form_Load()


Misk = 999


Boom = True


MovePossible = False


If Len(Dir("c: Курсовая моямаршруты.txt")) = 0 Then


MsgBox " Файл маршрутов не найден!!!" + vbCrLf + _


" Проверьте его наличие: 'c: Курсовая моямаршруты.txt'"


Combo1.Enabled = False


Label11.Visible = False


Exit Sub


End If


Open "c: Курсовая моямаршруты.txt" For Input As 1


LinesCount = 0


Do While Not EOF(1)


Input #1, arLinesName(LinesCount)


Combo1.AddItem arLinesName(LinesCount)


LinesCount = LinesCount + 1


Loop


Close 1


AllBuses = 0


For Mis = 0 To (Combo1.ListCount - 1)


If Len(Dir("c:Курсоваямоя" + Combo1.List(Mis) + ".txt")) = 0 Then


MsgBox " Файл маршрутов не найден!!!" + vbCrLf + _


" Проверьте его наличие: 'c:Курсовая" + Combo1.List(Mis) + ".txt'"


Else


Work_With_Files


AllBuses = AllBuses + arBusCount(Mis)


End If


Next Mis


Fuel(0) = 100


For i = 1 To (AllBuses - 1)


Load Image1(i)


Fuel(i) = 100


Next i


For i = 1 To 35


Load Image2(i)


Load Label14(i)


Next i


End Sub


Public Static Sub Work_With_Files()


arBusCount(Mis) = 0


arStayCount(Mis) = 0


Open "c:Курсоваямоя" + Combo1.List(Mis) + ".txt" For Input As 2


Do While Not EOF(2)


Input #2, a$


Select Case a$


Case "автобус": Input #2, arBusNumber(Mis, arBusCount(Mis))


Case "водитель": Input #2, arDriveName(Mis, arBusCount(Mis))


Case "кондуктор": Input #2, arConductorName(Mis, arBusCount(Mis))


arBusCount(Mis) = arBusCount(Mis) + 1


Case "остановка": Input #2, arStayName(Mis, arStayCount(Mis))


Input #2, arStayAbsciss(Mis, arStayCount(Mis))


Input #2, arStayOrdinata(Mis, arStayCount(Mis))


arStayCount(Mis) = arStayCount(Mis) + 1


End Select


Loop


Close 2


End Sub


Private Sub Image1_Click(Index As Integer)


Misk = Index


For i = 0 To (AllBuses - 1)


Image1(i).Picture = LoadPicture("c: Курсовая мояИконки Blue Bus.ico")


Next i


For i = 0 To (arBusCount(Mis) - 1)


If Mis <> 0 Then


a = i


For j = 0 To (Mis - 1)


i = i + arBusCount(j)


Next j


If i = Index Then


Frame1.Visible = False


Label4.Caption = arBusNumber(Mis, a)


Text1.Text = arDriveName(zmis, a)


Text2.Text = arConductorName(Mis, a)


Me.Label13.Caption = Str$(Fuel(Index))


Me.Image1(i).Picture = LoadPicture("c: Курсовая мояИконки Purple Bus.ico")


End If


i = a


GoTo 1


Else


If i = Index Then


Frame1.Visible = False


Label4.Caption = arBusNumber(Mis, i)


Text1.Text = arDriveName(Mis, i)


Text2.Text = arConductorName(Mis, i)


Me.Label13.Caption = Str$(Fuel(Index))


Me.Image1(i).Picture = LoadPicture("c: Курсовая мояИконки Purple Bus.ico")


End If


End If


1: Next i


End Sub


Private Sub Image1_DragOver(Index As Integer, Source As Control, X As Single, Y As Single, State As Integer)


Pisk = Index


End Sub


Private Sub Image2_Click(Index As Integer)


If Misk <> 999 Then


If Image1(Misk).Visible = True Then


x0(Mis, Misk) = Val(arStayAbsciss(Mis, Index))


y0(Mis, Misk) = Val(arStayOrdinata(Mis, Index))


If x0(Mis, Misk) = Val(arStayAbsciss(Mis, Index)) _


Then arStayPast(Mis, Misk) = Index


If arStayPast(Mis, Misk) = (arStayCount(Mis) - 1) Then arStayEdit(Mis, Misk) = -1


If arStayPast(Mis, Misk) = 0 Then arStayEdit(Mis, Misk) = 1


End If


End If


End Sub


Private Sub Image3_Click()


If Misk <> 999 Then If Image1(Misk).Visible = True Then Fuel(Misk) = 100


End Sub


Private Sub mnuEditNext_Click()


If Misk <> 999 Then


If Image1(Misk).Visible = True Then


x0(Mis, Misk) = Val(arStayAbsciss(Mis, arStayPast(Mis, Misk) + arStayEdit(Mis, Misk)))


If x0(Mis, Misk) = Val(arStayAbsciss(Mis, arStayPast(Mis, Misk) + arStayEdit(Mis, Misk))) _


Then arStayPast(Mis, Misk) = arStayPast(Mis, Misk) + arStayEdit(Mis, Misk)


End If


End If


End Sub


Private Sub mnuEditPast_Click()


If Misk <> 999 Then


If Image1(Misk).Visible = True Then


x0(Mis, Misk) = Val(arStayAbsciss(Mis, arStayPast(Mis, Misk)))


End If


End If


End Sub


Private Sub mnuMove_Click()


If MovePossible = True Then


Me.mnuMove.Caption = "Включить режим: передвижение автобусов"


For i = 0 To (AllBuses - 1)


Image1(i).DragMode = 0


Next i


MovePossible = False


Exit Sub


End If


If MovePossible = False Then


Me.mnuMove.Caption = "Включить: режим выбора автобуса"


MovePossible = True


For i = 0 To (AllBuses - 1)


Image1(i).DragMode = 1


Next i


End If


End Sub


Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single)


If Val(arStayAbsciss(Mis, arStayPast(Mis, Pisk))) > Val(arStayAbsciss(Mis, arStayPast(Mis, Pisk) + arStayEdit(Mis, Pisk))) _


Then


For i = Val(arStayAbsciss(Mis, arStayPast(Mis, Pisk))) To Val(arStayAbsciss(Mis, arStayPast(Mis, Pisk) + arStayEdit(Mis, Pisk))) Step -1


If i = Fix(X) Then x0(Mis, Pisk) = X


Next i


Else


For i = Val(arStayAbsciss(Mis, arStayPast(Mis, Pisk))) To Val(arStayAbsciss(Mis, arStayPast(Mis, Pisk) + arStayEdit(Mis, Pisk))) Step 1


If i = Fix(X) Then x0(Mis, Pisk) = X


Next i


End If


End Sub


Private Sub Timer1_Timer()


For i = 0 To (AllBuses - 1)


Fuel(i) = Fuel(i) - 1 / (1000 * Me.Timer1.Interval)


If i = Misk Then Me.Label13.Caption = Str$(Fuel(Misk))


If Fuel(i) = 0 Then Fuel(i) = 100


Next i


For z = 0 To (Combo1.ListCount - 1)


For i = 0 To (arBusCount(z) - 1)


If z <> 0 Then


a = i


For j = 0 To (z - 1)


i = i + arBusCount(j)


Next j


End If


If arStayPast(z, i) = (arStayCount(z) - 1) Then arStayEdit(z, i) = -1


If arStayPast(z, i) = 0 Then arStayEdit(z, i) = 1


If Val(arStayAbsciss(z, arStayPast(z, i))) > Val(arStayAbsciss(z, arStayPast(z, i) + arStayEdit(z, i))) _


Then arCoordEdit(z, i) = -1


If Val(arStayAbsciss(z, arStayPast(z, i))) < Val(arStayAbsciss(z, arStayPast(z, i) + arStayEdit(z, i))) _


Then arCoordEdit(z, i) = 1


If Val(arStayAbsciss(z, arStayPast(z, i))) = Val(arStayAbsciss(z, arStayPast(z, i) + arStayEdit(z, i))) _


Then arCoordEdit(z, i) = 0


k(z, i) = (Val(arStayOrdinata(z, arStayPast(z, i))) - Val(arStayOrdinata(z, arStayPast(z, i) + arStayEdit(z, i)))) / _


(Val(arStayAbsciss(z, arStayPast(z, i))) - Val(arStayAbsciss(z, arStayPast(z, i) + arStayEdit(z, i))))


b(z, i) = Val(arStayOrdinata(z, arStayPast(z, i))) - k(z, i) * Val(arStayAbsciss(z, arStayPast(z, i)))


Dim c As Single


c = Cos(Atn(k(z, i)))


x0(z, i) = x0(z, i) + c * 2 * arCoordEdit(z, i)


y0(z, i) = k(z, i) * x0(z, i) + b(z, i)


Image1(i).Move x0(z, i) - Image1(i).Width / 2, y0(z, i) - Me.Image1(i).Height / 2


If arCoordEdit(z, i) = 1 Then


If x0(z, i) >= Val(arStayAbsciss(z, arStayPast(z, i) + arStayEdit(z, i))) _


Then arStayPast(z, i) = arStayPast(z, i) + arStayEdit(z, i)


End If


If arCoordEdit(z, i) = -1 Then


If x0(z, i) <= Val(arStayAbsciss(z, arStayPast(z, i) + arStayEdit(z, i))) _


Then arStayPast(z, i) = arStayPast(z, i) + arStayEdit(z, i)


End If


If z <> 0 Then i = a


Next i


Next z


End Sub


Public Static Sub First_Stay_of_Buses()


For z = 0 To (Combo1.ListCount - 1)


For i = 0 To (arBusCount(z) - 1)


a = i


If z <> 0 Then


a = i


For j = 0 To (z - 1)


i = i + arBusCount(j)


Next j


End If


If a = 0 Then


arStayEdit(z, i) = 1


arStayPast(z, i) = 0


Me.Image1(i).Move arStayAbsciss(z, 0) - Image1(i).Width / 2, _


arStayOrdinata(z, 0) - Image1(i).Height / 2


x0(z, i) = Val(arStayAbsciss(z, 0)): y0(z, i) = Val(arStayOrdinata(z, 0))


'MsgBox Str$(z) + " - " + Str$(i) + " - " + Str$(X0(z, i)) + " " + Str$(Y0(z, i))


Else


arStayEdit(z, i) = 1


arStayPast(z, i) = arStayPast(z, i - 1) + 1


Me.Image1(i).Move arStayAbsciss(z, arStayPast(z, i)) _


- Image1(i).Width / 2, _


arStayOrdinata(z, arStayPast(z, i)) _


- Image1(i).Height / 2


x0(z, i) = Val(arStayAbsciss(z, arStayPast(z, i)))


y0(z, i) = Val(arStayOrdinata(z, arStayPast(z, i)))


'MsgBox Str$(z) + " - " + Str$(i) + " - " + Str$(X0(z, i)) + " " + Str$(Y0(z, i))


End If


i = a


1: Next i


Next z


End Sub

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Программирование в Бейсике

Слов:6328
Символов:58603
Размер:114.46 Кб.