Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ДВИЖЕНИЕ ОБЬЕКТОВ 
:(
    Опции темы
Grizzzli
Дата 15.5.2009, 22:29 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



Ребята, помогите пожалуйста с движением в С++
Вообщем, ситуация  такая: есть 4 картинки надо; заставить их двигаться,сделать это с помшью классов.  

Код

//A
setlinestyle(0,0,3);
setcolor(15);
setfillstyle(1,15);
line (50,50,90,50);
line(70,20,70,50);
circle(70,62,10);
floodfill(70,63,15);

//B
setlinestyle(0,0,3);
setcolor(15);
setfillstyle(1,15);
line (100,50,140,50);
line(120,50,120,70);
circle(120,80,10);
floodfill(120,80,15);
//C

setlinestyle(0,0,3);
setcolor(15);
setfillstyle(1,15);
line(200,50,260,50);
line(210,40,210,60);
line(250,40,250,60);
circle(230,60,8);
floodfill(230,60,15);

//D
setlinestyle(0,0,3);
setcolor(15);
setfillstyle(1,15);
circle(330,80,10);
floodfill(330,85,15);
line(300,50,330,80);
line(330,80,360,50);
line(250,40,250,60);



PM MAIL   Вверх
mes
Дата 15.5.2009, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Ну так создаете 4 класса, объекты которых могут отрисовывать себя относительно указанной им точки.
Создаете 4 объекта, и в цикле отрисовываете их (стирая перед этим старое), меняя им их относительные координаты.
Успехов  smile 

P.S. и не надо кричать (именно как крик воспринимается текст из заглавных букв), Вы этим только уменьшаете шансы на помощь Вам.
P.S.S. и это не тот раздел, где за Вас будут писать полностью прогу, если Вы не хотите прикладывать своих усилий, то Вам в центр помощи: http://forum.vingrad.ru/forum/Vingrad-help-center.html



Это сообщение отредактировал(а) mes - 15.5.2009, 23:01


--------------------
PM MAIL WWW   Вверх
Grizzzli
Дата 15.5.2009, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



спасибо за совет!
PM MAIL   Вверх
kamre
Дата 16.5.2009, 10:07 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 24.3.2006

Репутация: 2
Всего: 13



Вот, вроде двигаются:
user posted image

Код

#ifndef SCENE_H
#define SCENE_H

#include <QGraphicsScene>
#include <QList>

class QGraphicsItemGroup;

class Scene: public QGraphicsScene {
    Q_OBJECT
public:
    Scene();
public slots:
    void animate();
private:
    QList<QGraphicsItemGroup*> groups;
};

#endif // SCENE_H

Код

#include "scene.h"

#include <math.h>

#include <QGraphicsItem>

Scene::Scene()
: QGraphicsScene(0)
{
    setBackgroundBrush(QBrush(Qt::black));
    QBrush brush(Qt::white);
    QPen pen(brush, 3);
    QList<QGraphicsItem*> items;
    // A
    items << addLine(50, 50, 90, 50, pen)
          << addLine(70, 20, 70, 50, pen)
          << addEllipse(70 - 10, 62 - 10, 20, 20, pen, brush);
    groups << createItemGroup(items);
    // B
    items.clear();
    items << addLine(100, 50, 140, 50, pen)
          << addLine(120, 50, 120, 70, pen)
          << addEllipse(120 - 10, 60 - 10, 20, 20, pen, brush);
    groups << createItemGroup(items);
    // C
    items.clear();
    items << addLine(200, 50, 260, 50, pen)
          << addLine(210, 40, 210, 60, pen)
          << addLine(250, 40, 250, 60, pen)
          << addEllipse(230 - 8, 60 - 8, 16, 16, pen, brush);
    groups << createItemGroup(items);
    // D
    items.clear();
    items << addLine(300, 50, 330, 80, pen)
          << addLine(330, 80, 360, 50, pen)
          << addLine(330, 80, 330, 50, pen)
          << addEllipse(330 - 10, 80 - 10, 20, 20, pen, brush);
    groups << createItemGroup(items);
}

double drand()
{
    return (double)rand()/(double)RAND_MAX;
}

void Scene::animate()
{
    qreal stepSize = 5.0;
    foreach(QGraphicsItemGroup *group, groups) {
        group->translate(drand()*stepSize - 0.5*stepSize, drand()*stepSize - 0.5*stepSize);
    }
}

Код

#include <QApplication>
#include <QGraphicsView>
#include <QTimer>

#include "scene.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Scene *scene = new Scene();
    QGraphicsView *view = new QGraphicsView(scene);
    view->setRenderHint(QPainter::Antialiasing, true);
    view->resize(400, 300);
    view->show();
    QTimer timer;
    QObject::connect(&timer, SIGNAL(timeout()), scene, SLOT(animate()));
    timer.setInterval(30);
    timer.start();
    return a.exec();
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.