Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование для начинающих. (Visual Basic-6.0)


Информационный Канал Subscribe.Ru

Главная

Архив

Вы спрашивали

НАШИ ПРОЕКТЫ

Форум

Чат

Автор

Здравствуй уважаемый подписчик!
Сегодня в номере:
"Звездное небо"
Новости сайта

В прошлом выпуске был дан алгоритм прорисовки "звездного неба", сегодня мы узнаем на практике, как он реализовывается в жизни.
  • для начала нам необходимо определить структуру программы - т.е. какими событиями, процедурами будем пользоваться и как они будут взаимосвязаны.
  • для наших простых целей идеально подойдет событие FORM_ACTIVATE в качестве основной процедуры
  • для выхода из программы можно взять событие FORM_MOUSEMOVE
Вот собственно программа
Private Sub Form_Activate()
' Описание переменных и массивов
' X(),Y() - Массивы, содержащие X и Y координаты текущей звезды,
'Color() - цвет текущей звезды.
' L- Переменная счетчик, служит для перебора звезд
' Speed - некоторая константа, отвечающая за скорость перемещения ВСЕХ звезд
' Помните, нумерация индексов массива начинается с 0
Dim X(49) As Integer, Y(49) As Integer, _
L As Integer, Color(49) As Long, Speed As Integer

' Начальная установка переменных и окна программы
Speed = 5
' Цвет фона - Черный
Form1.BackColor = 0
' Автоматически перерисовывать содержание фомы
Form1.AutoRedraw = True
' Форму развернуть на весь экран
Form1.WindowState = 2

' Установка начального расположения звезд
' координаты и цвет выбираются случайным образом
' Делается это все в цикле с параметром
For L = 0 To 49
X(L) = Rnd(1) * Form1.Width
Y(L) = Rnd(1) * Form1.Height
Color(L) = RGB(Rnd(1) * 255, Rnd(1) * 255, Rnd(1) * 255)
' Прорисовка текущей звезды (её порядковый номер хранится в переменной L, 'Координаты в X(L) и Y(L), цвет в Clor(L))
Form1.Circle (X(L), Y(L)), 10, Color(L)
Next L

' Начало основного "бесконечного" цикла
AAA:

For L = 0 To 49
' Стереть звезду
Form1.Circle (X(L), Y(L)), 10, 0
' рассчитать новую координату Y
Y(L) = Y(L) + Speed
If Y(L) > Form1.Height Then
' если звезда "вылетела" за пределы экрана, тогда:
' Обнулить ее координату Y
' Придумать новую координату X и цвет
Y(L) = 0
X(L) = Rnd(1) * Form1.Width
Color(L) = RGB(Rnd(1) * 255, Rnd(1) * 255, Rnd(1) * 255)
End If
' Нарисовать звезду в новой позиции
Form1.Circle (X(L), Y(L)), 10, Color(L)
Next L
' принудительно обновить содержание окна программы
Form1.Refresh
' разрешить программе прерваться и обработать другие программные события
' это необходимо для того, что бы можно было перехватить событие MOUSE_DOWN
DoEvents
' Вернутся к началу "основного бесконечного цикла"
GoTo AAA:

End Sub


Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
' В этом событии переменная D, используется как локальный счетчик и имеет значение равное количеству произошедших событий Mouse_Move
' Если этого не сделать, программа завершит свою работу, так и не успев начаться.
' дело в том, что при запуске программы, пользователь держит мышку в руках, и, как правило это приводит к возникновению 3-5 событий Mouse_Move. Здесь мы искусственно устанавливаем некоторый фильтр, для того, что бы не произошло ложного выхода из программы.
Static D As Byte
D = D + 1
If D > 20 Then End
End Sub

Новости сайта

На сайте обновлен форум,к сожалению, все Ваши вопросы пропали
Появился ЧАТ
Ну, вот на сегодня всё. До скорой встречи!


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное