Программирование
Веб программирование

Создаем игру Pine Ball в vb.net, часть I

 
 

Pine Ball - это самая распространенная аркадная игра, и в принципе ее легче всего сделать. В недалеком будующем мы скорее всего сделаем еще парочку аркадных игрушек, например арканойд, или тетрис. Ну ладно, к делу:
На форме кинь 2 PictureBox:

PictureBox1: Name = "Bita1"
BackColor = Синий
Width = 100
Height=16

PictureBox2: Name = "Bita2"
BackColor = Зеленый
Width = 100
Height=16

Теперь расположи их на против, как показанно на рисунке:

Причем Bita1 должна быть снизу, а Bita2 сверху(ближе к заголовку формы). Теперь перейдем к программной части создания игры. В этом шаге мы сделаем самое легкое - передвижение обоих бит(если тебе не терпится посмотреть как работает игра, то из следующего шага качай исходник). Код:

Dim Left_Bita_1 As Boolean = False' Эта переменная отвечает за передвижение биты 1, если Left_Bita_1 = False то бита не двигается влево(или вправо, или стоит), если True то движется влево
Dim Right_Bita_1 As Boolean = False' Здесь все аналогично

Dim Left_Bita_2 As Boolean = False
Dim Right_Bita_2 As Boolean = False

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown' При нажатии на любую клавишу:

If e.KeyCode = Keys.F1 Then Dvijok()' Если нажата F1 то запускаем игру

If e.KeyCode = Keys.A Then' Если нажата клавиша A, то биту 1 двигаем влево(см. описание функции Dvijok)
Left_Bita_1 = True
Right_Bita_1 = False
End If
' Здесь все аналогично
If e.KeyCode = Keys.D Then
Right_Bita_1 = True
Left_Bita_1 = False
End If

If e.KeyCode = Keys.Left Then
Left_Bita_2 = True
Right_Bita_2 = False
End If

If e.KeyCode = Keys.Right Then
Right_Bita_2 = True
Left_Bita_2 = False
End If
End Sub

Function Dvijok()
Do ' Запускаем вечный цикл
Application.DoEvents()' Это чтобы цикл не зацикливался
Granica()' Запускаем функцию Granica, которая проверяет не заехала ли бита за края формы, если заехала то останавливает ее(т.е. значения переменных отвечающих за движение бит = False)
If Left_Bita_2 = True Then Bita2.Left = Bita2.Left - 1' Здесь я думаю все понятно
If Right_Bita_2 = True Then Bita2.Left = Bita2.Left + 1

If Left_Bita_1 = True Then Bita1.Left = Bita1.Left - 1
If Right_Bita_1 = True Then Bita1.Left = Bita1.Left + 1
Loop
End Function

Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp' Если какая - нибудь клавиша отжата:
If e.KeyCode = Keys.Left Then Left_Bita_2 = False' Если отжата клавиша Left, то если Bita 2 двигалась влево, то она останавливается
If e.KeyCode = Keys.Right Then Right_Bita_2 = False' Здесь все аналогично

If e.KeyCode = Keys.A Then Left_Bita_1 = False
If e.KeyCode = Keys.D Then Right_Bita_1 = False
End Sub

Function Granica()
If Bita1.Left <= 0 Then Left_Bita_1 = False' Если бита 1 заехала за левый край формы то останавливаем её
If Bita1.Left >= Me.Width - Bita1.Width Then Right_Bita_1 = False' Если бита 1 заехала за правый край формы то останавливаем ее(Я написал Me.Width - Bita1.Width потому что если написать просто Me.Width то бита будет полностью заходить за край формы, а если от ширины формы отнять ширину биты, то бита заходить за край формы не будет)
' Здесь все аналогично
If Bita2.Left <= 0 Then Left_Bita_2 = False
If Bita2.Left >= Me.Width - Bita1.Width Then Right_Bita_2 = False
End Function

Исходник


Есть вопросы? Спроси на нашем форуме!!
Нет комментариев

Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.