Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
DUMP
73 / 47 / 26
Регистрация: 22.02.2015
Сообщений: 306
1

Передвижение шарика

12.05.2015, 22:49. Просмотров 657. Ответов 7
Метки нет (Все метки)

Нужно заставить шар двигаться и менять направление, когда достигает стенки экрана. Пытался сделать векторное движение ничего не получилось. Прошу помочь. Можете объяснить или дать формулы, пилить код не обязательно)
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2015, 22:49
Ответы с готовыми решениями:

Передвижение шарика вдоль графика "корень из х"
написать программу передвижения шарика вдоль графика корень из х в с++

Передвижение стрелками
Как переключаться между элементами списка в консоли с помощью стрелок? И если...

Передвижение обьекта
Нужно написать программу передвижения обьекта.Программа показывает поле XXXXX...

Передвижение по строчке
Проблема такова: есть строчка: char* text = "text1 text2"; Я ищу первый...

Передвижение курсора
Необходимо осуществить передвижение курсора с возможностью приостановки и...

7
S_el
2151 / 1679 / 353
Регистрация: 15.12.2013
Сообщений: 6,644
12.05.2015, 22:52 2
DUMP, с помощью чего шар рисуете?И что вы подразумеваете под векторным движением?
Опишите поставленную задачу конкретнее.
0
Eva Rosalene
T for Trans-
4050 / 1589 / 303
Регистрация: 06.01.2013
Сообщений: 4,182
Завершенные тесты: 2
12.05.2015, 22:52 3
DUMP, что именно не получилось?
0
sereja322
3 / 3 / 3
Регистрация: 10.03.2015
Сообщений: 65
12.05.2015, 23:00 4
Скажи сначала, как ты собираешься визуализировать? Я вот пишу курсач(игра) на winapi (не советую) и движение шарика сделал плавным, но не шибко быстрым. Если делать на openGL, то я тебе помочь не смогу, так как сам ещё нуб. В общем случае это движение в каком-нибудь параллельном потоке (или в основном), где бесконечный цикл прибавляет к координатам шарика n-ое количество координат (по x и по y), проверяет, не зашёл ли за границы и делает задержку, скорость можно менять задержкой и количеством координат, которое прибавляется. А как ты пытался сделать векторное движение? Расскажи подробнее, может твой способ будет лучше.
0
DUMP
73 / 47 / 26
Регистрация: 22.02.2015
Сообщений: 306
13.05.2015, 16:14  [ТС] 5
Зачем вам то , чем я буду визуализировать ?
Впрочем если у вас такая непонятка, раскажите мне как получить координаты (x,y) от объекта (0,0) в некоторых пределах, зная только градусы (0-360).
Примерно так:
C
1
2
3
4
5
6
7
void Dir(int angle)
{
//0 градусов будем считать (0,-1) от объекта
//тогда 90 (1,0) 
//данные полученные на основе angle заносим в переменные
Move(x,y); // там где и будет всё движении
}
Наверное такой способ тоже нормальный , но как сделать ?
S_el, Нужно заставить шар двигаться и менять направление, когда достигает стенки экрана. Что может быть конкретнее ?
Если бы я всё знал, я бы не спрашивал.
0
S_el
2151 / 1679 / 353
Регистрация: 15.12.2013
Сообщений: 6,644
13.05.2015, 16:23 6
Цитата Сообщение от DUMP Посмотреть сообщение
Зачем вам то , чем я буду визуализировать ?
Чтобы говорить на языке выбранного вами инструмента.

Цитата Сообщение от DUMP Посмотреть сообщение
Что может быть конкретнее
На каком этапе возникают сложности.
1.Отрисовать шар
2.Анимация
3.Получение относительных координат центра
4.Реализация смещения
5. Задание координат границы
6. Смена направления движения.
0
Renji
2105 / 1545 / 471
Регистрация: 05.06.2014
Сообщений: 4,484
13.05.2015, 16:25 7
Цитата Сообщение от DUMP Посмотреть сообщение
Можете объяснить или дать формулы, пилить код не обязательно)
А там нужны какие-то особые формулы?
start_x, start_y - откуда начали движение.
xv, yv - скорость движения по икс и игрек.
t - время прошедшее с начала движения.
Координаты шарика:
x=start_x+vx*t
y=start_t+yv*t

Координаты стенок экрана - что-то в духе "x=0, y - любое".
Складываете координаты шарика, координаты стенки и получаете систему уравнений с тремя неизвестными. Решив ее получаете в каком месте шарик стукнется об стенку. Не решив ее получаете двойку по алгебре.
1
Nosey
1350 / 401 / 144
Регистрация: 22.10.2014
Сообщений: 863
Завершенные тесты: 2
13.05.2015, 16:31 8
Лучший ответ Сообщение было отмечено DUMP как решение

Решение

Цитата Сообщение от DUMP Посмотреть сообщение
//0 градусов будем считать (0,-1) от объекта //тогда 90 (1,0)
Для этого вам стоит вспомнить математику школьного курса, синусы там всякие да косинусы

А вообще:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void update(float dt)
{
    static const Point2 velocity;
    Point2 dPos = velocity*dt;
    
    // foreach allWall
    {
        Rectangle2& wall = allWall[i].rect;
        if (wall.x < targetPos.x && wall.x + wall.width > targetPos.x)
        {
            dPos.x = -dPos.x;
        }
        
        if (wall.y < targetPos.y && wall.y + wall.height > targetPos.y)
        {
            dPos.y = -dPos.y;
        }
    }
 
    Point2 targetPos += dPos;
}
Это в 2д варианте со стенами паралельными осям. Если стены не паралельны осям, нужно вспоминать чуток линала.
0
13.05.2015, 16:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2015, 16:31

Передвижение объекта
Подскажите плиз Вводятся 3 числа. A, B, N. A - движение вперед, B - движение...

Передвижение курсора в c++
Здравствуйте, Я начал писать небольшую программу которая должна выполнять...

Передвижение по строке
Здравствуйте, есть такая проблемка: Вот например есть строка: char* string =...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru