Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "spaceship.h"
- #include <iostream>
- #include <math.h>
- #include <QPainter>
- #include <QRect>
- #include <QColor>
- #include <QPolygon>
- SpaceShip::SpaceShip() : _direction(0), _speedX(0.0), _speedY(0.0) {}
- SpaceShip::~SpaceShip() {}
- void SpaceShip::init(QRect &rect) {
- int centerX = rect.center().x();
- int centerY = rect.center().y();
- _center = QPoint(centerX, centerY);
- // _shipPolygon
- // << QPoint(centerX+5, centerY)
- // << QPoint(centerX,centerY+1)
- // << QPoint(centerX,centerY+5)
- // << QPoint(centerX,centerY-1)
- // << QPoint(centerX,centerY-5)
- // << QPoint(centerX+5, centerY);
- QPolygon cockpit;
- QPolygon topPart;
- QPolygon bottomPart;
- QPolygon firstMotor;
- QPolygon secondMotor;
- cockpit << QPoint(centerX - 6, centerY - 20)
- << QPoint(centerX + 5, centerY - 20);
- topPart << QPoint(centerX, centerY - 40) << QPoint(centerX - 10, centerY)
- << QPoint(centerX + 10, centerY);
- bottomPart << QPoint(centerX - 10, centerY)
- << QPoint(centerX - 20, centerY + 10)
- << QPoint(centerX + 20, centerY + 10)
- << QPoint(centerX + 10, centerY);
- firstMotor << QPoint(centerX - 12, centerY + 10)
- << QPoint(centerX - 12, centerY + 20)
- << QPoint(centerX - 5, centerY + 20)
- << QPoint(centerX - 5, centerY + 10);
- secondMotor << QPoint(centerX + 3, centerY + 10)
- << QPoint(centerX + 3, centerY + 20)
- << QPoint(centerX + 10, centerY + 20)
- << QPoint(centerX + 10, centerY + 10);
- _shipPolygon = cockpit.united(topPart)
- .united(bottomPart)
- .united(firstMotor)
- .united(secondMotor);
- }
- void SpaceShip::drawShip(QPainter &painter) {
- QPen pen;
- pen.setWidth(1);
- pen.setColor(Qt::white);
- painter.setBrush(Qt::Dense2Pattern);
- painter.setPen(pen);
- painter.drawPolygon(_shipPolygon);
- }
- void SpaceShip::translateShip() {
- auto offset = QPoint(_speedX, _speedY);
- _center += offset;
- _shipPolygon.translate(_speedX, _speedY);
- }
- void SpaceShip::rotateShip(int degrees) {
- _direction += degrees;
- QTransform transform;
- transform.translate(_center.x(), _center.y())
- .rotate(degrees)
- .translate(-_center.x(), -_center.y());
- _shipPolygon = transform.map(_shipPolygon);
- }
- void SpaceShip::accelerateShip() {
- _speedX += sin(_direction);
- _speedY += -cos(_direction);
- std::cout << _speedX << " " << _speedY << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement