Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/14: Рейтинг темы: голосов - 14, средняя оценка - 4.93
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 423
1

Эффект движения поплавка и его траектория движения

08.02.2012, 16:00. Показов 2853. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.Нужна помощь.Я делаю игру в которой нужно ловить рыбу.Столкнулся с проблемой.Как сделать эффект движения поплавка(т.е. смена изображений) и как задать его траекторию движения.Я думал это сделать с помощью таймера,но это не удалось сделать(возможно не тот код((). Помогите пожалуйста.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.02.2012, 16:00
Ответы с готовыми решениями:

Траектория движения
Стоит задача нарисовать траекторию движения объекта в 3D, что-то в духе трубопровода в старой...

Траектория движения
Вот ищо одна задачка. Надо построить траекторию движения шара на прямоугольному поле (угол падения...

Траектория движения в 3D
всем привет. ребята, помогите пожалуйста со следующий вопросом использую PhysX 1. есть объект...

Траектория движения шара
Помогите исправить что не работает плиииз =) unit Unit1; interface uses Windows,...

17
Почетный модератор
21413 / 9147 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
08.02.2012, 17:09 2
ElectronicES, у нас кто-то не шибко давно писал "рыбалку" вроде InstallGame (потом он ник сменил, а на аве у него пес)
Как вариант можно заюзать Гиф-анимацию.
Или рисовать анимацию в таймере, то есть таймер ведет счетчик например, с 1 до 5, при пяти скидывает на 1
В ресурсах картинки "1", "2", "3" ... Так легче анимировать, ну или делать проверку
0
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 423
08.02.2012, 17:28  [ТС] 3
Цитата Сообщение от Памирыч Посмотреть сообщение
рисовать анимацию в таймере
Памирыч,в том то и проблема,что часть элементов интерфейса удалось анимировать,а в этом месте произошла загвоздка.Просто напросто 2 изображения не сменяли друг друга.
0
Почетный модератор
21413 / 9147 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
08.02.2012, 18:37 4
Поплавок нарисован в PictureBox?
0
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 423
08.02.2012, 19:07  [ТС] 5
Цитата Сообщение от Памирыч Посмотреть сообщение
Поплавок нарисован в PictureBox?
Нет.Я разбил карту водоёма на квадраты и в определённых квадратах должна происходить смена картинки.
P.S Квадраты - это кнопки
0
755 / 554 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
09.02.2012, 09:26 6
ElectronicES, А что если разбить пикчурбокс на квадраты (условно). В памяти хранить параметры квадратов (положение и сторону). Поплавок прорисовывать в нужном месте.

Цитата Сообщение от ElectronicES Посмотреть сообщение
как задать его траекторию движения
Траектория линейна?
0
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 423
09.02.2012, 10:11  [ТС] 7
Цитата Сообщение от gitarillo Посмотреть сообщение
разбить пикчурбокс на квадраты
Разве так можно?
Цитата Сообщение от gitarillo Посмотреть сообщение
Поплавок прорисовывать в нужном месте.
С присваиванием поплавка всё происходит нормально,а вот его замена на другой не происходит(нужно,например,в течении 6 сек. сделать смену 2-ух изображений чередуя их.(Т.Е.3 раза одно изображение и 3 раза второе))
Цитата Сообщение от gitarillo Посмотреть сообщение
Траектория линейна?
Траектория кривая.Не далеко от удочки.
0
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 423
16.02.2012, 08:17  [ТС] 8
Доброе утро.Поле долгих мучений я наконец придумал код движения поплавка:dance3:,но столкнулся с проблемой.Тот код который я написал не выполняет,то что нужно.
В кнопке:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Private Sub a1PictureBox_Click(sender As System.Object, e As System.EventArgs) Handles a1PictureBox.Click
        If удаLabel.Text = "0" Then
            MsgBox("Выбери уду")
        ElseIf удаLabel.Text = "1" Then
            Dim vremyklic As New Random
            Dim vremyklic2 As Integer = vremyklic.Next(5, 10)
            If vremyklic2 = "5" Then
                квадратА1Timer.Enabled = True
                квадратА1Timer.Interval = "5000"
            ElseIf vremyklic2 = "6" Then
                квадратА1Timer.Enabled = True
                квадратА1Timer.Interval = "6000"
            ElseIf vremyklic2 = "7" Then
                квадратА1Timer.Enabled = True
                квадратА1Timer.Interval = "7000"
            ElseIf vremyklic2 = "8" Then
                квадратА1Timer.Enabled = True
                квадратА1Timer.Interval = "8000"
            ElseIf vremyklic2 = "9" Then
                квадратА1Timer.Enabled = True
                квадратА1Timer.Interval = "9000"
            End If
        End If
        Me.Panel7.BackgroundImage = Nothing
        Me.Panel7.BackgroundImage = My.Resources.ozeroloko
        Me.a1PictureBox.BackgroundImage = My.Resources.popl
        If poplovok = 0 Then
            poplovok = 1
        ElseIf poplovok = 1 Then
            квадратА1Timer.Enabled = False
            poplovok = 0
        End If
    End Sub
В первом таймере:
VB.NET
1
2
3
Private Sub квадратА1Timer_Tick(sender As System.Object, e As System.EventArgs) Handles квадратА1Timer.Tick
        квадратА1Timer2.Enabled = True
    End Sub
Во втором таймере:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Private Sub квадратА1Timer2_Tick(sender As System.Object, e As System.EventArgs) Handles квадратА1Timer2.Tick
        квадратА1Timer.Enabled = False
        If a1PictureBox.Visible = True Then
            a1PictureBox.Visible = False
            PictureBox7.Visible = True
        ElseIf a1PictureBox.Visible = False Then
            a1PictureBox.Visible = True
            PictureBox7.Visible = False
        End If
        Dim namba As Integer = 0
        Do While namba < 20
            namba += 1
            If namba = "20" Then
                Dim ruba As New Random
                Dim ruba2 As Integer = ruba.Next(2)
                If ruba2 = "0" Then
                    WOFSADOKForm.Show()
                    WOFSADOKForm.Label1.Text = "Пескарь"
                    квадратА1Timer2.Enabled = False
                ElseIf ruba2 = "1" Then
                    WOFSADOKForm.Show()
                    WOFSADOKForm.Label1.Text = "Рак"
                    квадратА1Timer2.Enabled = False
                End If
            ElseIf namba <> "10" Then
 
            End If
        Loop
    End Sub
Должно происходить:
При нажатии на "кнопку" генерируется числа от 5 до 9 и каждому числу соответствует интервал от 5000 до 9000(этот интервал времени записывается в первый таймер).После окончания работы первого таймера открывается второй,в котором в течение 20 сек должно происходить срабатывание свойство Visible(т.е. происходит появление разных пикчербоксов с разными картинками поплавка).После окончания нужного времени появляется окно,в котором записывается какая рыба выловлена.
Не происходит:
Не срабатывает нужное действие во втором таймере.Подскажите как сделать,чтобы всё работало как нужно.Заранее благодарен.
P.S.Не обращайте на огромное количество говно-кода
0
es geht mir gut
11272 / 4756 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
16.02.2012, 10:10 9
Цитата Сообщение от ElectronicES Посмотреть сообщение
VB.NET
1
2
3
квадратА1Timer.Interval = "0000"
namba = "20"
namba <> "10"
А зачем кавычки?
Вот здесь нужны, согласен.
Цитата Сообщение от ElectronicES Посмотреть сообщение
VB.NET
1
WOFSADOKForm.Label1.Text = "Пескарь"
И вот эти бы строчки везде было бы логично поменять местами

Цитата Сообщение от ElectronicES Посмотреть сообщение
VB.NET
1
2
квадратА1Timer.Enabled = True
 квадратА1Timer.Interval = "0000"
1
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 423
16.02.2012, 10:27  [ТС] 10
SoftIce,спасибо за замечания,но проблема так и не решилась этими изменениями
0
es geht mir gut
11272 / 4756 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
16.02.2012, 10:44 11
Так ты везде кавычки убери, где у тебя переменные типа Integer
Например
Цитата Сообщение от ElectronicES Посмотреть сообщение
vremyklic2 = "6"
0
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 423
16.02.2012, 10:50  [ТС] 12
Цитата Сообщение от SoftIce Посмотреть сообщение
Так ты везде кавычки убери, где у тебя переменные типа Integer
Убраны,но не чего не изменилось.
0
es geht mir gut
11272 / 4756 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
16.02.2012, 11:04 13
Какой интервал второго таймера?
0
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 423
16.02.2012, 11:06  [ТС] 14
Цитата Сообщение от SoftIce Посмотреть сообщение
Какой интервал второго таймера?
1 секунда,но таймер должен отключиться после выполнения цикла
0
es geht mir gut
11272 / 4756 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
16.02.2012, 11:14 15
Цитата Сообщение от ElectronicES Посмотреть сообщение
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Do While namba < 20
 namba += 1 
If namba = "20" Then 
Dim ruba As New Random
 Dim ruba2 As Integer = ruba.Next(2)
 If ruba2 = "0" Then 
WOFSADOKForm.Show()
 WOFSADOKForm.Label1.Text = "Пескарь"
 квадратА1Timer2.Enabled = False
 ElseIf ruba2 = "1" Then 
WOFSADOKForm.Show()
 WOFSADOKForm.Label1.Text = "Рак"
 квадратА1Timer2.Enabled = False 
End If ElseIf namba <> "10" Then
 End If
 Loop
Ты представляешь себе, как быстро это работает? Даже не заметишь ничего.
0
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 423
16.02.2012, 11:15  [ТС] 16
если я правильно думаю,то цикл,который в таймере должен происходить каждую секунду,пока значение не станет 20

Добавлено через 56 секунд
Цитата Сообщение от SoftIce Посмотреть сообщение
Ты представляешь себе, как быстро это работает? Даже не заметишь ничего.
Что тогда нужно написать,чтобы всё происходило медленно?
0
es geht mir gut
11272 / 4756 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
16.02.2012, 11:28 17
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от ElectronicES Посмотреть сообщение
если я правильно думаю,то цикл,который в таймере должен происходить каждую секунду,пока значение не станет 20
Нет не правильно.
Я думаю
VB.NET
1
Do While namba < 20
Вообще убрать, а вместо
Loop вставить
VB.NET
1
2
3
If namba > 20 Then 
квадратА1Timer2.Enabled = False
End If
А это сделать глобальной
VB.NET
1
Dim namba As Integer = 0
А обнулять её при клике на пикчер бокс
1
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 423
16.02.2012, 11:40  [ТС] 18
Убрал цикл.Но у меня теперь складывается впечатление,что переменная namba не присваивает +1.
Таймер не отключается,а продолжает работать сменяя кнопки(

Добавлено через 3 минуты
Всё заработало.Спасибо.
0
16.02.2012, 11:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.02.2012, 11:40
Помогаю со студенческими работами здесь

Траектория движения самолета
Здравствуйте! Нужна помощь..! Нам задали запрограммировать решение задачи. И проблема встала в...

Траектория движения мыши
Вообщем такая проблемка.Мне нужно по заданию,при движении курсора,рисовалась линия(траектория) и по...

Траектория движения шара
Ребят подскажите любой гайд , где можно вычитать всё для того чтоб сделать програму &quot;Построить...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru