Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
 Аватар для Jocker
1 / 1 / 3
Регистрация: 22.01.2015
Сообщений: 199

Одновременное движение разных объектов

02.05.2017, 01:36. Показов 1723. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, я пишу арканоид и столкнулся с такой проблемой: по отдельности у меня движутся мячик (по таймеру) и платформа (по клавишам), но не получается сделать их движение одновременным, то есть, когда движется мячик, платформа стоит на месте.
Как можно объединить их движения?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.05.2017, 01:36
Ответы с готовыми решениями:

Одновременное движение двух объектов (на клавиатуре)
Всем доброго времени суток! В общем-то сабж - столкнулся с проблемой, что два игрока не могут одновременно передвигать своих персонажей:...

Волнообразное движение объектов
У меня такой вопрос, как осуществить волнообразное движение объектов при их столкновении на C#

Движение объектов по форме
Помогите пожалуйста, озадачился вопросом, мне нужно сделать форму, на ней два объекта один просто статичный располагается в нижнем правом...

5
 Аватар для Людвиг Бодмер
378 / 375 / 213
Регистрация: 29.03.2013
Сообщений: 867
02.05.2017, 09:11
Jocker, покажите код.
0
 Аватар для Jocker
1 / 1 / 3
Регистрация: 22.01.2015
Сообщений: 199
02.05.2017, 15:34  [ТС]
Цитата Сообщение от Людвиг Бодмер Посмотреть сообщение
Jocker, покажите код.
Мячик:
C#
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
foreach (var item in list)
            {
                if (ball.Right >= field.Width || ball.Right + speed >= item.Left && ball.Right <= item.Left & ball.Y + ball.Width >= item.Y & ball.Y + ball.Width <= item.Y + item.Height)
                {
                    movingCoefX = 1;
                }
                else if (ball.Left <= 0 || ball.Left - speed <= item.Right && ball.Left >= item.Right & ball.Y + ball.Width >= item.Y & ball.Y + ball.Width <= item.Y + item.Height)
                {
                    movingCoefX = 1;
                }
 
                else if (ball.Top <= 0 || ball.Top - speed <= item.Bottom && ball.Top >= item.Bottom & ball.X + ball.Width >= item.X & ball.X + ball.Width <= item.X + item.Width)
                {
                    movingCoefY = 1;
                }
 
                else if (ball.Bottom >= field.Height || ball.Bottom + speed >= item.Top && ball.Bottom <= item.Top & ball.X + ball.Width >= item.X & ball.X + ball.Width <= item.X + item.Width)
                {
                    movingCoefY = -1;
                }
            }
            ball.X += speed * movingCoefX;
            ball.Y += speed * movingCoefY;
            field.Invalidate();
            ballInterval.Start();
Платформа:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 private void FormMain_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Left)
            {
                board.Offset(-1, 0);
                field.Invalidate();
            }
            if (e.KeyCode == Keys.Right)
            {
                board.Offset(1, 0);
                field.Invalidate();
            }
}
0
 Аватар для Людвиг Бодмер
378 / 375 / 213
Регистрация: 29.03.2013
Сообщений: 867
02.05.2017, 16:16
Jocker, код движения мячика в обработчике срабатывания таймера находится (timer_Tick)?
field и ballInterval что собой представляют?
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
02.05.2017, 17:59
Цитата Сообщение от Jocker Посмотреть сообщение
по отдельности у меня движутся мячик (по таймеру) и платформа (по клавишам)
Все должно двигаться только по таймеру (это называется игровой цикл).
А вместо обработки события FormMain_KeyUp нужно в игровом цикле проверять состояние клавиатуры. И если нажата соотв клавиша, то сдвигать платформу. Для проверки состояния клавиатуры - можно использовать класс Keyboard, описаный здесь.
0
 Аватар для Jocker
1 / 1 / 3
Регистрация: 22.01.2015
Сообщений: 199
02.05.2017, 18:48  [ТС]
Цитата Сообщение от Людвиг Бодмер Посмотреть сообщение
Jocker, код движения мячика в обработчике срабатывания таймера находится (timer_Tick)?
field и ballInterval что собой представляют?
field - это мой пикчербокс
ballInterval - интервал полёта шарика, 10 мс

Добавлено через 5 минут
Цитата Сообщение от Storm23 Посмотреть сообщение
Все должно двигаться только по таймеру (это называется игровой цикл).
А вместо обработки события FormMain_KeyUp нужно в игровом цикле проверять состояние клавиатуры. И если нажата соотв клавиша, то сдвигать платформу. Для проверки состояния клавиатуры - можно использовать класс Keyboard, описаный здесь.
Если я Вас правильно понял, то в таймере нужно проверять, нажата ли соответствующая клавиша и если нажата, то смещаем платформу, так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.05.2017, 18:48
Помогаю со студенческими работами здесь

Движение объектов по форме
Господа,есть попытка создания игры &quot;Гонки&quot;.Не получается при обновлении координаты Y для объекта бордюр ,заставить его перемещаться по...

Движение объектов.Таймер
Задача: Форма содержит поля ввода «Количество кнопок», «Скорость движения px/сек», кнопки «Старт», «Стоп» и панель темно-синего цвета....

Случайное появление и движение объектов
Здравствуйте, очень нужна помощь, ну ничего в голову не приходит честное слово...нужно закончить игрушку. Игрушка типа fishy, где рыбка...

Движение объектов в потоках: исправить код
ребят помогите плиз ... нужно чтоб zaprav объект( красный) приблизился к объекту ship(синий) когда ship.F=0 и к объекту ...

Одновременное перемещение нескольких объектов
Всем очередной привет )) Помогите пожалуйста в небольшой (для кого как :D) проблеме. У меня на канве лежит rectangle, textbox и два...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru