Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
Shasha
-
- Продвинутый пользователь
-
-
- Сообщения: 106
- Зарегистрирован: 08.11.2005 (Вт) 15:09
Shasha » 08.11.2005 (Вт) 15:17
Здравствуйте!
пытаюсь сделать игру танки, необходимо, что бы за одной клавой было несколько игроков...
если писать так:
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = ...
то при движении обькта нажав клавишу передвигающую второй обьект, движение первого останавливается...
как сделать, что бы по нажати одвременном танки могли передвигаться?
пытался таймер втулить, ничего не получается!
приведите пожалуйста работающий пример.
зарание спасибо.
-
alibek
-
- Большой Человек
-
-
- Сообщения: 14205
- Зарегистрирован: 19.04.2002 (Пт) 11:40
- Откуда: Russia
alibek » 08.11.2005 (Вт) 15:22
Смотри KeyDown.
Lasciate ogni speranza, voi ch'entrate.
-
Shasha
-
- Продвинутый пользователь
-
-
- Сообщения: 106
- Зарегистрирован: 08.11.2005 (Вт) 15:09
Shasha » 08.11.2005 (Вт) 15:34
alibek писал(а):Смотри KeyDown.
Смотрел.и кеуап тоже смотрел.
как программа сможет выполнить другой иф если предыдущий ещё не окончен!?
-
alibek
-
- Большой Человек
-
-
- Сообщения: 14205
- Зарегистрирован: 19.04.2002 (Пт) 11:40
- Откуда: Russia
alibek » 08.11.2005 (Вт) 16:23
Значит, плохо смотрел.
Lasciate ogni speranza, voi ch'entrate.
-
GB826
-
- Постоялец
-
-
- Сообщения: 312
- Зарегистрирован: 04.08.2005 (Чт) 0:58
- Откуда: Планета #3
-
GB826 » 08.11.2005 (Вт) 16:50
- Код: Выделить всё
Dim Keyb(255) As Boolean
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
Keyb(KeyCode) = False
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Keyb(KeyCode) = True
End Sub
Соответственно обработка
- Код: Выделить всё
if Keyb(vbKeyUp) Then
Tank1.Up
ElseIf Keyb(vbKeyDown) Then
Tank1.Down
ElseIf Keyb(vbKeyRight) Then
Tank1.Right
ElseIf Keyb(vbKeyLeft) Then
Tank1.Left
End If
Пора уже всем хорошим людям собраться и убить всех плохих людей.
-
Shasha
-
- Продвинутый пользователь
-
-
- Сообщения: 106
- Зарегистрирован: 08.11.2005 (Вт) 15:09
Shasha » 08.11.2005 (Вт) 17:42
на форуме у меня 2 пикчербокса. Picture1 и Picture2 аля танки.
далее то что нужно доработать
- Код: Выделить всё
Private Sub Form_KeyPress(KeyAscii As Integer)
'Picture1
If KeyAscii = 52 Then
Picture1.Left = Picture1.Left - 50
End If
If KeyAscii = 54 Then
Picture1.Left = Picture1.Left + 50
End If
If KeyAscii = 53 Then
Picture1.Top = Picture1.Top + 50
End If
If KeyAscii = 56 Then
Picture1.Top = Picture1.Top - 50
End If
'Picture2
If KeyAscii = 97 Then
Picture2.Left = Picture2.Left - 50
End If
If KeyAscii = 100 Then
Picture2.Left = Picture2.Left + 50
End If
If KeyAscii = 115 Then
Picture2.Top = Picture2.Top + 50
End If
If KeyAscii = 119 Then
Picture2.Top = Picture2.Top - 50
End If
End Sub
в таком виде пикчеры перемещаются клаваим wasd(1) и 8456(2)
но по очереди!!!
Последний раз редактировалось
Shasha 08.11.2005 (Вт) 18:28, всего редактировалось 1 раз.
-
GAGArin
-
- Неистовый флудер
-
-
- Сообщения: 1777
- Зарегистрирован: 23.12.2002 (Пн) 12:46
- Откуда: я тут взялся, не знаю...
-
GAGArin » 08.11.2005 (Вт) 18:24
По пять состояний на танк +один таймер. При дауне включаем состояние, при апе выключаем...
-
Zoomie
-
- Продвинутый пользователь
-
-
- Сообщения: 181
- Зарегистрирован: 10.05.2004 (Пн) 10:07
- Откуда: СПб
-
Zoomie » 08.11.2005 (Вт) 19:10
Ээээ... ты брось такое дело!
При трех игроках в моей гаме системный динамик уже хрипел! Используй
DirectInput
-
Shasha
-
- Продвинутый пользователь
-
-
- Сообщения: 106
- Зарегистрирован: 08.11.2005 (Вт) 15:09
Shasha » 08.11.2005 (Вт) 19:11
Дайти мне рабочий пример, что бы дват танка двигались одновременно,кто нить!!!
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: SemrushBot, YaCy [Bot], Yandex-бот и гости: 166