Название: 2d Game Отправлено: Mashkovd от Октябрь 08, 2010, 14:14 Здравствуйте,
Необходимо написать программу а-ля рыбки. Управление рыбкой джойстиком в углу экрана. Попробовал сделать при помощи QGraphicsView FrameWork. Наследую класс QGraphicsScene для своей сцены, переопределяю методы mousePressEvent и timerEvent. Соответственно по таймеру происходит движение рыбки, но с заметными рывками( вот переопределенный класс сцены - fishscene::fishscene(QObject *parent) : QGraphicsScene(parent) { setItemIndexMethod(QGraphicsScene::NoIndex); //add MainFish to (0, 0) MainFish = (fish *)addPixmap(QPixmap("C:/MyQT/fish/fish_1.png")); MainFish->setData(0, "MainFish"); MainFish->translate(0, 0); //add joystick to (485, 205) joystick = addPixmap(QPixmap("C:/MyQT/fish/joystick.PNG")); joystick->moveBy(320, 180);; joystick->setData(0, "joystick"); //set Background and startTimer setBackgroundBrush(QBrush(QColor(125,50,100))); startTimer(1000/33); } void fishscene::mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent) { QGraphicsItem * item = fishscene::itemAt(mouseEvent->scenePos()); if (item->data(0) == "joystick") { dr =item->mapFromScene(mouseEvent->scenePos()); dr.operator +=(JSdr); BoolTimer = true; } } void fishscene::timerEvent(QTimerEvent *) { if (BoolTimer) { QPointF drTEMP(qRound((dr.x()/20)), qRound(dr.y()/20)); MainFish->moveBy(drTEMP.x(), drTEMP.y()); update(); } } |