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

Игры visual basic. Делаем PineBall

 
 

На форму кинь кнопку(Enabled = False), Picture(Enabled = False, AutoSize = True, BorderStyle = "0 - None"), Timer(Interval = 1). Вот что у тебя должно получиться:

Вот код:

Dim BallTop As Boolean 'Тип Boolean озночает то что переменная может принемать только 2 значения True и False
Dim Q As Boolean, Q1 As Boolean

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
' если нажата кнопка "вправо", то бита едет вправо
If KeyCode = 39 Then
Bita1.Left = Bita1.Left + 120
End If
' если нажата кнопка "влево", то бита едет влево
If KeyCode = 37 Then
Bita1.Left = Bita1.Left - 120
End If
End Sub

Private Sub Timer1_Timer()
If BallTop = False Then ' Если BallTop = False то шар скачет вниз
Ball.Top = Ball.Top + 30
Else 'Если BallTop = True то шар едет вверх
Ball.Top = Ball.Top - 30
End If

If Ball.Left - Bita1.Left < 150 And Ball.Left - Bita1.Left > -320 And Bita1.Top <= Ball.Top + 300 Then ' Здесь начало вроде понятно, а в конце я написал Ball.Top + 300 это чтоб мяч ударялся об верх биты
BallTop = True ' Пускаем шар вверх
Q = True '' И влево
End If
If Q = True Then ' Если Q = True то мяч скачет влево
Ball.Left = Ball.Left - 60
End If
If Q1 = True Then ' Если Q1 = True то мяч скачет влево
Ball.Left = Ball.Left + 60
End If

If Ball.Left <= 0 Then ' Если мяч ударяется об левую стенку то меняем его направление
Q = False
Q1 = True
End If
End Sub

Эту программу сам доделай, а то скопировать код любой может(даже я :-)), а вот до делать...
Исходник качай здесь


Есть вопросы? Спроси на нашем форуме!!
Мишка) [11.08.2010 03:03]

Я три-четыре часа убил - не понял как сделать... У меня не хочет менять направление полета, у него похоже просто координаты вычитаются и становятся нулевыми. Точнее что-то в этом роде. Избил кучу вариантов, все перепробовал... Нафиг забил. Падрэ, сам допиши код в подробностях, плиз!

Мишка) [11.08.2010 14:13]

А! Щас сел, сделал по твоему коду) Правда без Play/Pause. Если их делаю, ползунок не двигается по кнопкам вправо\влево, типа он не активный, или что-то в этом роде. Вообще количество проигрышей тоже не получается поставить, тоже самое с ползунком.

Вот ссыль:
http://narod.ru/disk/23626023000/PineBall.exe.html

Капитан [24.08.2010 17:21]

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

Александр [14.11.2010 13:50]

Не могу сделать что бы отскакивало от биты (((

Денис [21.12.2010 11:12]

Задумка та не сложная,просто надо подумать,чтобы мяч рандомовски отскакивал а не только в одном направлении по диагонали,так не интересно:)

Денис [21.12.2010 11:15]

Блин,научился двигать кнопкой,в 4 направлениях 4 клавишами и чтобы они за форму не уходили,а чтобы еще по диагонали теме же клавишами хз как:( при ножатии 2 клавиш почему-то действует только первая:( Мож,кто подскажет?)

Денис [21.12.2010 12:30]

Александр,задай,чтобы при попадании шана на высоту биты(if высота шара> высоты биты then шар двигался вверх)

Денис [21.12.2010 12:31]

Еще и 2 кнопки сразу двигать нельзя:(

Yablok [11.04.2011 20:49]

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

Андрей [12.04.2011 08:19]

Я сделал всё,размеры вычислены,когда проигрываешь вылезает форм2 и спрашивает заново или выход но, как сделать прямоугольнички, которые надо уничтожать, я думал прост накидать картинок,но как тогда с ними столкновения проделывать??

Андрей [12.04.2011 17:54]
  • советую всем движение сделать не через кей даун, а через кей даун+кей ап,тоесть кинуть ещё 2 таймера с изначальным интервалом-0 и при кей даун If KeyCode = 37 Then у таймера MoveRight(в моём случае) ставить интервал в единичку,а при кей ап тоесть If KeyCode = 37 Then обратно 0,и также с левой стороной ВНИМАНИЕ: различие в том, что если ставить просто кей даун,то перед тем как поехать идёт задерка,а у меня её нет!!
Антон [09.05.2011 19:27]

Падрэ.
Ничего не получается. Я отбросил коды с битой и полётом шарика в стороны. Т.е. оставил только вверх вниз. Но летит только вниз почему-то. Помогите

Антон [09.05.2011 19:38]

Падрэ.
Ничего не получается. Я отбросил коды с битой и полётом шарика в стороны. Т.е. оставил только вверх вниз. Но летит только вниз почему-то. Помогите

Антон [09.05.2011 19:40]

Пришлите пожалуйста кто-нибудь код рабочей программы в текстовом виде с пояснениями.
Не могу разобраться.
linux2000@list.ru

Гость [08.07.2011 23:53]

Вместо 150 пиши 1200 If Ball.Left - Bita1.Left < 1200

Дима [16.07.2011 13:18]

Блин 3 раз встречаю подобый урок и во всех просят доделать самому =)

Ильдар [13.12.2011 23:25]

Сделал с трудом свой собственный ПинБОл! Одна проблема! У меня круг Shape2 был создан первее, чем метки, которые я добавил! И когда круг пролетает сквозь них, он как бы остаётся на заднем плане! Как вывести его на передний план - ума не приложу!!! Подскажите плиз!

Олег [22.12.2011 22:41]

Чтобы на передний план перенести нажми на Shape2 правой кнопкой, "Перенести вперед".

Макс [26.03.2012 13:45]

Вообще параша!!!! Не работает и всё!

Release [26.03.2012 14:19]

Сделай лучше?!

Masslay [30.03.2012 13:51]

Я пользовался пятью таймерами, чтобы все заработало. Может это конечно тупее, но тем не менее. Единственное чего я не понял - это как ограничить передвижение биты, чтобы она не вылазила за пределы окна. Может кто подскажет?

alex13sh [30.03.2012 15:52]

есть 2 способа простой (ограниченный) и сложны (не ограниченный)
в данный момент пойдёт простой вы просто пишите if shape1.left>0 then shape1.left=shape1.left-1
это было в лево а сейчас будет в право
if shape1.left+shape1.W<me.ScaleW then shape1.left=shape1.left+1

W***- это я просто забыл как на англ. пишится ширена первая буква W вторая возможно h

THORR [27.05.2012 00:14]
  1. у меня шар вначале отскакивает от биты под углом, а потом вдруг просто идёт вверх-вниз и направление уже не меняет. как устранить это?
  2. как всё-таки накидать блоки, чтобы шар сбивал их?
112233 [14.06.2012 20:23]

'Качаем с этой страницы проект, заменяем код, играем в бесконечный PineBall.

Dim BallTop As Boolean
Dim Q As Boolean, Q1 As Boolean

Private Sub FormKeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = 39 Then
Bita1.Left = Bita1.Left + 120
End If

If KeyCode = 37 Then
Bita1.Left = Bita1.Left - 120
End If
End Sub

Private Sub Timer1
Timer()
If BallTop = False Then
Ball.Top = Ball.Top + 30
Else
Ball.Top = Ball.Top - 30
End If

If Ball.Left - Bita1.Left <= 413 And Ball.Left - Bita1.Left > -389 And Bita1.Top <= Ball.Top + 390 Then
BallTop = True
If Q1 = True Then
Q1 = False
End If
Q = True
End If

If Ball.Left - Bita1.Left > 413 And Ball.Left - Bita1.Left < 1214 And Bita1.Top <= Ball.Top + 390 Then
BallTop = True
If Q = True Then
Q = False
End If
Q1 = True
End If

If Ball.Top <= 0 Then
BallTop = False
End If

If Q = True Then
Ball.Left = Ball.Left - 60
End If
If Q1 = True Then
Ball.Left = Ball.Left + 60
End If

If Ball.Left <= 0 Then
Q = False
Q1 = True
End If

If Ball.Left >= 5040 Then
Q = True
Q1 = False
End If
End Sub



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




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