From 316c4733d7de113ed433fa8887a308865127b2a7 Mon Sep 17 00:00:00 2001 From: andrew long Date: Sun, 15 Apr 2012 11:53:23 -0700 Subject: [PATCH] Increase window size and change grid position Add an origin member to allow setting of x and y pos for GameBorder and TetrisGrid --- GameBorder.cpp | 8 ++++++-- GameBorder.h | 4 ++++ QTetrisWindow.cpp | 6 +++--- TetrisGrid.cpp | 9 +++++---- TetrisGrid.h | 3 ++- 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/GameBorder.cpp b/GameBorder.cpp index d9e502e..08f4e2f 100644 --- a/GameBorder.cpp +++ b/GameBorder.cpp @@ -1,14 +1,18 @@ #include "GameBorder.h" +GameBorder::GameBorder(QPointF newPosition) +{ + position = newPosition; +} QRectF GameBorder::boundingRect() const { - return QRectF(0, 0, 305, 480); + return QRectF(position.x(), position.y(), 305, 480); } void GameBorder::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { - painter->drawRect(0, 0, 305, 480); + painter->drawRect(position.x(), position.y(), 305, 480); } diff --git a/GameBorder.h b/GameBorder.h index 0eea43c..0619fb7 100644 --- a/GameBorder.h +++ b/GameBorder.h @@ -5,7 +5,11 @@ class GameBorder : public QGraphicsItem { public: + GameBorder(QPointF newPosition); + void setPosition(QPointF newPosition); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); + private: + QPointF position; }; #endif diff --git a/QTetrisWindow.cpp b/QTetrisWindow.cpp index fc2d78e..963af1d 100644 --- a/QTetrisWindow.cpp +++ b/QTetrisWindow.cpp @@ -8,12 +8,12 @@ QTetrisWindow::QTetrisWindow() graphicsScene->setSceneRect(QRectF(0,0,305, 480)); graphicsScene->setFocus(Qt::ActiveWindowFocusReason); - gameGrid = new TetrisGrid(graphicsScene); + gameGrid = new TetrisGrid(graphicsScene, QPointF(200, 0)); graphicsScene->setGameGrid(gameGrid); graphicsView = new QGraphicsView(graphicsScene); - graphicsView->setSceneRect(QRectF(0, 0, 305, 480)); - graphicsView->setAlignment(Qt::AlignLeft | Qt::AlignTop); + graphicsView->setSceneRect(QRectF(0, 0, 505, 480)); + graphicsView->setAlignment(Qt::AlignRight | Qt::AlignTop); setCentralWidget(graphicsView); graphicsView->show(); } diff --git a/TetrisGrid.cpp b/TetrisGrid.cpp index a59490d..3e66d82 100644 --- a/TetrisGrid.cpp +++ b/TetrisGrid.cpp @@ -4,17 +4,18 @@ #include "LineBlock.h" #include "LBlock.h" -TetrisGrid::TetrisGrid(QGraphicsScene *scene) +TetrisGrid::TetrisGrid(QGraphicsScene *scene, QPointF newOrigin) { gameScene = scene; + origin = newOrigin; QPen pen; pen.setWidth(1); pen.setBrush(Qt::blue); pen.setCapStyle(Qt::RoundCap); pen.setJoinStyle(Qt::RoundJoin); - gameBorder = new GameBorder(); + gameBorder = new GameBorder(origin); gameScene->addItem(gameBorder); - maxHeightBorder = gameScene->addLine(0, 300, gameBorder->boundingRect().width(), 300); + maxHeightBorder = gameScene->addLine(origin.x(), 300, origin.x() + gameBorder->boundingRect().width(), 300); blockFactory = new BlockFactory(); scoreKeeper = &TetrisScoreKeeper::getInstance(); gridRows = new GridRows(gameBorder->boundingRect().width() / Block::BLOCK_SIZE); @@ -115,7 +116,7 @@ void TetrisGrid::dropNewBlock() //currentBlock = new LBlock(QPointF((rand() % 150), 6)); int horizontalSpaces = boundingRect().width() / HORIZONTAL_BLOCK_GRID_SIZE; int multiplier = rand() % horizontalSpaces; - currentBlock = blockFactory->nextShape(QPointF(1,1)); + currentBlock = blockFactory->nextShape(QPointF(origin.x() + 1, origin.y() + 1)); gameScene->addItem(currentBlock); updateNextBlock(); } diff --git a/TetrisGrid.h b/TetrisGrid.h index d568d50..d659296 100644 --- a/TetrisGrid.h +++ b/TetrisGrid.h @@ -12,7 +12,7 @@ class TetrisGrid : public QObject Q_OBJECT public: - TetrisGrid(QGraphicsScene *scene); + TetrisGrid(QGraphicsScene *scene, QPointF newOrigin); QRectF boundingRect() const; void play(); void leftKeyPressed(); @@ -25,6 +25,7 @@ class TetrisGrid : public QObject void gameLoop(int step); void restartTimer(); private: + QPointF origin; QGraphicsScene *gameScene; GameBorder *gameBorder; TetrisScoreKeeper *scoreKeeper;