Advertisement
Guest User

Untitled

a guest
Feb 11th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "spaceship.h"
  2.  
  3. #include <iostream>
  4. #include <math.h>
  5.  
  6. #include <QPainter>
  7. #include <QRect>
  8. #include <QColor>
  9. #include <QPolygon>
  10.  
  11. SpaceShip::SpaceShip() : _direction(0), _speedX(0.0), _speedY(0.0) {}
  12.  
  13. SpaceShip::~SpaceShip() {}
  14.  
  15. void SpaceShip::init(QRect &rect) {
  16.  
  17.   int centerX = rect.center().x();
  18.   int centerY = rect.center().y();
  19.  
  20.   _center = QPoint(centerX, centerY);
  21.  
  22.   //    _shipPolygon
  23.   //            << QPoint(centerX+5, centerY)
  24.   //            << QPoint(centerX,centerY+1)
  25.   //            << QPoint(centerX,centerY+5)
  26.   //            << QPoint(centerX,centerY-1)
  27.   //            << QPoint(centerX,centerY-5)
  28.   //            << QPoint(centerX+5, centerY);
  29.  
  30.   QPolygon cockpit;
  31.   QPolygon topPart;
  32.   QPolygon bottomPart;
  33.   QPolygon firstMotor;
  34.   QPolygon secondMotor;
  35.  
  36.   cockpit << QPoint(centerX - 6, centerY - 20)
  37.           << QPoint(centerX + 5, centerY - 20);
  38.  
  39.   topPart << QPoint(centerX, centerY - 40) << QPoint(centerX - 10, centerY)
  40.           << QPoint(centerX + 10, centerY);
  41.  
  42.   bottomPart << QPoint(centerX - 10, centerY)
  43.              << QPoint(centerX - 20, centerY + 10)
  44.              << QPoint(centerX + 20, centerY + 10)
  45.              << QPoint(centerX + 10, centerY);
  46.  
  47.   firstMotor << QPoint(centerX - 12, centerY + 10)
  48.              << QPoint(centerX - 12, centerY + 20)
  49.              << QPoint(centerX - 5, centerY + 20)
  50.              << QPoint(centerX - 5, centerY + 10);
  51.  
  52.   secondMotor << QPoint(centerX + 3, centerY + 10)
  53.               << QPoint(centerX + 3, centerY + 20)
  54.               << QPoint(centerX + 10, centerY + 20)
  55.               << QPoint(centerX + 10, centerY + 10);
  56.   _shipPolygon = cockpit.united(topPart)
  57.                      .united(bottomPart)
  58.                      .united(firstMotor)
  59.                      .united(secondMotor);
  60. }
  61.  
  62. void SpaceShip::drawShip(QPainter &painter) {
  63.   QPen pen;
  64.   pen.setWidth(1);
  65.   pen.setColor(Qt::white);
  66.  
  67.   painter.setBrush(Qt::Dense2Pattern);
  68.   painter.setPen(pen);
  69.  
  70.   painter.drawPolygon(_shipPolygon);
  71. }
  72.  
  73. void SpaceShip::translateShip() {
  74.   auto offset = QPoint(_speedX, _speedY);
  75.   _center += offset;
  76.   _shipPolygon.translate(_speedX, _speedY);
  77. }
  78.  
  79. void SpaceShip::rotateShip(int degrees) {
  80.   _direction += degrees;
  81.  
  82.   QTransform transform;
  83.   transform.translate(_center.x(), _center.y())
  84.       .rotate(degrees)
  85.       .translate(-_center.x(), -_center.y());
  86.  
  87.   _shipPolygon = transform.map(_shipPolygon);
  88. }
  89.  
  90. void SpaceShip::accelerateShip() {
  91.   _speedX += sin(_direction);
  92.   _speedY += -cos(_direction);
  93.   std::cout << _speedX << " " << _speedY << endl;
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement