Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2014, 18:36   #31
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Цитата:
Сообщение от goshek Посмотреть сообщение
для домашнего задания создаю игру. Типа скачки, в виде лошадей кнопки
Надеюсь, вы не бросите затею игры. Только не используйте кнопки, как лошади. Это кажется просто, а на самом деле, проще и лучше - спрайты Вот выбирайте любой спрайт (можно ещё нагуглить)

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

Если захотите писать на Qt C++ OpenGL, то вот вам готовый пример. Тут вам и наложение текстур, и работа с таймером, и рисование с помощью glDrawElements. Рад ответить на любые ваши вопросы по коду

Исполняемый файл (Win7, 5 МБайт): https://yadi.sk/d/o6pk6Wwdcq79e
Исходники: https://github.com/8Observer8/HorseraceAnimation
Изображения
Тип файла: jpg 001.jpg (14.8 Кб, 152 просмотров)
Тип файла: gif sprite-horse.gif (104.5 Кб, 74 просмотров)

Последний раз редактировалось 8Observer8; 20.11.2014 в 19:44.
8Observer8 вне форума Ответить с цитированием
Старый 20.11.2014, 19:21   #32
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

ммм, забавная анимация ))
Недавно делал что-то похожее, делюсь кодом:
- кадры грузятся в пул;
- анимация отдельно от пула - это позволяет сильно экономить если одна и таже анимация проигрывается много раз.

Т.е. пул хранит кадры в мапе, где ключ - имя анимации:
Код:
QMap<QString, QVector<QPixmap*> > m_animations;
анимирующая штука получает ссылку на нужный вектор и храни ее у себя:
Код:
QVector<QPixmap*> *m_frames;
Ну и рулит кадрами примерно так: (у меня 2 режима - Loop -циклически, Once - проигрывает и останавливается)
Код:
void AnimatedGraphicsItem::on_timerTick() {
  ++m_curFrameIndex;
  if (m_mode == Loop) {
    if (m_curFrameIndex >= m_nFrames)
      m_curFrameIndex = 0;
    setPixmap(*(*m_frames)[m_curFrameIndex]);
  }
  else {
    if (m_curFrameIndex >= m_nFrames) {
      m_timer.stop();
      hide();
    }
    else
      setPixmap(*(*m_frames)[m_curFrameIndex]);
  }
}
Код не лучший, знаю я, но я его еще рефакторю ))
Вот тут можно найти исходник: https://bitbucket.org/rrrfer-admin/hedgehog.git
(в ветку refactoring смотреть надо - в master старый код - с gif анимацией и встроенной ущербно).

Вобще планирую дорефакторить и в статье описать, однажды.
rrrFer вне форума Ответить с цитированием
Старый 21.11.2014, 13:36   #33
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Оставлю здесь видео, как делать игры на спрайтах: Создание игр на C++: Марио (платформер) Можно будет сделать лошадей, которые будут бежать вправо. Та лошадь, которая отстала, будет выбывать из игры. Это как вариант

Последний раз редактировалось 8Observer8; 21.11.2014 в 13:38.
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
КНОПКИ surf135 Общие вопросы Delphi 2 27.05.2012 22:39
Кнопки в Qt Tema_Crazzzy Qt и кроссплатформенное программирование С/С++ 6 20.11.2010 18:30
UCOZ: Кнопки кнопки на изображении ReDuX HTML и CSS 19 25.04.2008 02:39
триггерные кнопки и кнопки переключатели в DELPHI MARGO Помощь студентам 3 12.11.2007 17:35