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

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

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

Студворк — интернет-сервис помощи студентам
Добрый день.Нужна помощь.Я делаю игру в которой нужно ловить рыбу.Столкнулся с проблемой.Как сделать эффект движения поплавка(т.е. смена изображений) и как задать его траекторию движения.Я думал это сделать с помощью таймера,но это не удалось сделать(возможно не тот код((). Помогите пожалуйста.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.02.2012, 16:00
Ответы с готовыми решениями:

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

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

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

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

Цитата Сообщение от ElectronicES Посмотреть сообщение
как задать его траекторию движения
Траектория линейна?
0
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 423
09.02.2012, 10:11  [ТС]
Цитата Сообщение от gitarillo Посмотреть сообщение
разбить пикчурбокс на квадраты
Разве так можно?
Цитата Сообщение от gitarillo Посмотреть сообщение
Поплавок прорисовывать в нужном месте.
С присваиванием поплавка всё происходит нормально,а вот его замена на другой не происходит(нужно,например,в течении 6 сек. сделать смену 2-ух изображений чередуя их.(Т.Е.3 раза одно изображение и 3 раза второе))
Цитата Сообщение от gitarillo Посмотреть сообщение
Траектория линейна?
Траектория кривая.Не далеко от удочки.
0
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 423
16.02.2012, 08:17  [ТС]
Доброе утро.Поле долгих мучений я наконец придумал код движения поплавка: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
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
16.02.2012, 10:10
Цитата Сообщение от 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  [ТС]
SoftIce,спасибо за замечания,но проблема так и не решилась этими изменениями
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
16.02.2012, 10:44
Так ты везде кавычки убери, где у тебя переменные типа Integer
Например
Цитата Сообщение от ElectronicES Посмотреть сообщение
vremyklic2 = "6"
0
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 423
16.02.2012, 10:50  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
Так ты везде кавычки убери, где у тебя переменные типа Integer
Убраны,но не чего не изменилось.
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
16.02.2012, 11:04
Какой интервал второго таймера?
0
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 423
16.02.2012, 11:06  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
Какой интервал второго таймера?
1 секунда,но таймер должен отключиться после выполнения цикла
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
16.02.2012, 11:14
Цитата Сообщение от 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  [ТС]
если я правильно думаю,то цикл,который в таймере должен происходить каждую секунду,пока значение не станет 20

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

Решение

Цитата Сообщение от 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  [ТС]
Убрал цикл.Но у меня теперь складывается впечатление,что переменная namba не присваивает +1.
Таймер не отключается,а продолжает работать сменяя кнопки(

Добавлено через 3 минуты
Всё заработало.Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.02.2012, 11:40
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru