Diffstat (limited to 'noncore/games/mindbreaker/mindbreaker.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/games/mindbreaker/mindbreaker.cpp | 455 |
1 files changed, 297 insertions, 158 deletions
diff --git a/noncore/games/mindbreaker/mindbreaker.cpp b/noncore/games/mindbreaker/mindbreaker.cpp index 7802e38..e1f43d0 100644 --- a/noncore/games/mindbreaker/mindbreaker.cpp +++ b/noncore/games/mindbreaker/mindbreaker.cpp @@ -1,5 +1,5 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** @@ -22,4 +22,6 @@ -#include <qpe/resource.h> -#include <qpe/config.h> +#include <qtopia/resource.h> +#include <qtopia/config.h> +#include <qtopia/qpeapplication.h> +#include <qtoolbar.h> @@ -27,3 +29,2 @@ #include <qpixmap.h> -#include <qpe/qpetoolbar.h> #include <qtoolbutton.h> @@ -32,3 +33,4 @@ #include <qlabel.h> -#include <qstyle.h> +#include <qlayout.h> +#include <qtimer.h> @@ -40,2 +42,60 @@ static int pegRTTI = 3393393; +static int adjusted_panel_height; +static int adjusted_panel_width; + +static int adjusted_bin_margin; +static int adjusted_peg_size; +static int adjusted_answerpeg_size; + +static int adjusted_title_height; +static int adjusted_title_width; + +static int adjusted_first_peg_x_diff; +static int adjusted_first_peg_y_diff; +static int adjusted_peg_spacing; + +static int adjusted_answerpegx; +static int adjusted_answerpegy; +static int adjusted_answerpeg_xdiff; +static int adjusted_answerpeg_ydiff; + +static int adjusted_board_height; +static int adjusted_board_width; + +static void setupBoardSize(int w, int h) +{ + adjusted_panel_width = w * 3/4; + adjusted_title_width = w * 3/4; + + adjusted_title_height = h/10; + adjusted_panel_height = (h-adjusted_title_height)/9; + + adjusted_bin_margin = w * 10/240; + adjusted_peg_size = adjusted_panel_height*3/4; + adjusted_answerpeg_size = QMIN(adjusted_panel_width*15/180,adjusted_panel_height*15/25); + + // looks a bit dodgy on larger sizes + if ( adjusted_peg_size > 40 ) + adjusted_peg_size = 40; + + adjusted_first_peg_x_diff = w * 31/240-adjusted_peg_size/2; + adjusted_first_peg_y_diff = (adjusted_panel_height - adjusted_peg_size)/2; + adjusted_peg_spacing = w * 30/240; + + // looks a bit dodgy on larger sizes (still does though, but not as much...) + if ( adjusted_answerpeg_size > 22 ) + adjusted_answerpeg_size = 22; + + adjusted_answerpegx = adjusted_panel_width * 159/180 - adjusted_answerpeg_size/2; + adjusted_answerpegy = adjusted_panel_height/3 - adjusted_answerpeg_size/2; + adjusted_answerpeg_xdiff = adjusted_panel_width * 10/180; + adjusted_answerpeg_ydiff = adjusted_panel_height * 9/25; + + adjusted_board_height = adjusted_title_height + (adjusted_panel_height * 9); + adjusted_board_width = adjusted_panel_width + (adjusted_bin_margin * 2) + adjusted_peg_size; + +// qDebug("Adjusted width %d height %d", adjusted_board_width, adjusted_board_height); +} + + /* helper class, */ @@ -50,3 +110,3 @@ public: -/* a placed peg is one that has been set down on the board correctly and +/* a placed peg is one that has been set down on the board correctly and should not be moved, only copied */ @@ -79,3 +139,2 @@ private: }; - int Peg::eggLevel = 0; @@ -86,5 +145,4 @@ void Peg::buildImages() { - QImage pegs = Resource::loadImage("mindbreaker/pegs"); - int x = 0; + int x = 0; int y = 0; @@ -94,3 +152,4 @@ void Peg::buildImages() for (i = 0; i < 6; i++) { - normalPegs.insert(i, new QImage(pegs.copy(x, y, peg_size, peg_size))); + normalPegs.insert(i, new QImage(pegs.copy(x, y, peg_size, peg_size). + smoothScale(adjusted_peg_size, adjusted_peg_size) )); x += peg_size; @@ -99,3 +158,4 @@ void Peg::buildImages() for (i = 0; i < 5; i++) { - specialPegs.insert(i, new QImage(pegs.copy(x,y,peg_size, peg_size))); + specialPegs.insert(i, new QImage(pegs.copy(x,y,peg_size, peg_size). + smoothScale(adjusted_peg_size, adjusted_peg_size) )); x += peg_size; @@ -107,8 +167,12 @@ void Peg::buildImages() y = panel_height; - normalPegs.insert(8, - new QImage(image.copy(x, y, panel_width, panel_height))); + normalPegs.insert(8, + new QImage( image.copy(x, y, panel_width, panel_height). + smoothScale( adjusted_panel_width, adjusted_panel_height) + )); y += panel_height; y += title_height; - normalPegs.insert(9, - new QImage(image.copy(x, y, title_width, title_height))); + normalPegs.insert(9, + new QImage(image.copy(x, y, title_width, title_height). + smoothScale( adjusted_title_width, adjusted_title_height) + )); y += title_height; @@ -116,10 +180,12 @@ void Peg::buildImages() x = 6 * peg_size; - normalPegs.insert(6, - new QImage(image.copy(x, y, answerpeg_size, answerpeg_size))); + normalPegs.insert(6, + new QImage(image.copy(x, y, answerpeg_size, answerpeg_size). + smoothScale( adjusted_answerpeg_size, adjusted_answerpeg_size) )); x += answerpeg_size; - normalPegs.insert(7, - new QImage(image.copy(x, y, answerpeg_size, answerpeg_size))); + normalPegs.insert(7, + new QImage(image.copy(x, y, answerpeg_size, answerpeg_size). + smoothScale( adjusted_answerpeg_size, adjusted_answerpeg_size) )); } -QImage Peg::imageForType(int t) +QImage Peg::imageForType(int t) { @@ -135,3 +201,3 @@ QImage Peg::imageForType(int t) -Peg::Peg(QCanvas *canvas , int t, int g, int p) +Peg::Peg(QCanvas *canvas , int t, int g, int p) : QCanvasRectangle(canvas) @@ -159,5 +225,5 @@ void Peg::drawShape(QPainter &p ) if ((pegtype == 5) && eggLevel > 5) { - p.drawImage(x(), y(), *normalPegs[aniStep]); - } else - p.drawImage(x(), y(), imageForType(pegtype)); + p.drawImage(int(x()), int(y()), *normalPegs[aniStep]); + } else + p.drawImage(int(x()), int(y()), imageForType(pegtype)); } @@ -189,3 +255,3 @@ inline int Peg::pegPos() const -inline void Peg::setPegPos(int p) +inline void Peg::setPegPos(int p) { @@ -194,3 +260,3 @@ inline void Peg::setPegPos(int p) -inline void Peg::setPlaced(bool p) +inline void Peg::setPlaced(bool p) { @@ -199,3 +265,3 @@ inline void Peg::setPlaced(bool p) -inline int Peg::type() const +inline int Peg::type() const { @@ -204,3 +270,3 @@ inline int Peg::type() const -/* Load the main image, copy from it the pegs, the board, and the answer image +/* Load the main image, copy from it the pegs, the board, and the answer image * and use these to create the tray, answer and board @@ -208,8 +274,18 @@ inline int Peg::type() const MindBreaker::MindBreaker( QWidget *parent, const char *name, int wFlags ) -: QMainWindow(parent, name, wFlags), - canvas(board_height, board_width) + : QMainWindow(parent, name, wFlags) { - MindBreakerBoard *m = new MindBreakerBoard(canvas, this); - setCentralWidget(m); - + setCaption( tr("Mind Breaker")); + QPEApplication::setInputMethodHint( this, QPEApplication::AlwaysOff ); + setMinimumSize(160,210); + + QWidget *w = new QWidget( this ); + w->setBackgroundColor( black ); + QHBoxLayout *hb = new QHBoxLayout( w ); + hb->addStretch(); + board = new MindBreakerBoard(w); + hb->addWidget( board, 100 ); + hb->addStretch(); + + setCentralWidget(w); + setToolBarsMovable( FALSE ); @@ -219,5 +295,5 @@ MindBreaker::MindBreaker( QWidget *parent, const char *name, int wFlags ) - QPixmap newicon = Resource::loadPixmap("new"); - new QToolButton(newicon, tr("New Game"), 0, - m, SLOT(clear()), tb, "NewGame"); + QIconSet newicon = Resource::loadIconSet("new"); + new QToolButton(newicon, tr("New Game"), 0, + board, SLOT(clear()), tb, "NewGame"); @@ -229,8 +305,10 @@ MindBreaker::MindBreaker( QWidget *parent, const char *name, int wFlags ) - connect(m, SIGNAL(scoreChanged(int, int)), this, SLOT(setScore(int, int))); - connect(score, SIGNAL(clicked()), m, SLOT(resetScore())); + connect(board, SIGNAL(scoreChanged(int,int)), this, SLOT(setScore(int,int))); + connect(score, SIGNAL(clicked()), board, SLOT(resetScore())); int a, b; - m->getScore(&a, &b); + board->getScore(&a, &b); setScore(a,b); + + layout()->setResizeMode(QLayout::FreeResize); } @@ -243,5 +321,5 @@ void MindBreaker::setScore(int turns, int games) - if(total_games > 0) + if(total_games > 0) average = total_turns / total_games; - else + else average = 0.0; @@ -251,8 +329,20 @@ void MindBreaker::setScore(int turns, int games) +void MindBreaker::resizeEvent( QResizeEvent *e ) +{ + board->fixSize(); + QMainWindow::resizeEvent( e ); +} + -MindBreakerBoard::MindBreakerBoard( QCanvas &canv, QWidget *parent, +MindBreakerBoard::MindBreakerBoard( QWidget *parent, const char *name, int wFlags ) - : QCanvasView(&canv, parent, name, wFlags) + : QCanvasView(0, parent, name, wFlags), + moving(0), game_over(FALSE), total_turns(0), total_games(0) { - int i, x, y; + setFrameStyle( NoFrame ); + setupBoardSize(qApp->desktop()->width(),qApp->desktop()->height()); + cnv.resize(100,100); + setCanvas(&cnv); + setBackgroundColor( black ); + struct timeval tv; @@ -261,3 +351,2 @@ MindBreakerBoard::MindBreakerBoard( QCanvas &canv, QWidget *parent, gettimeofday(&tv, 0); - srand(tv.tv_usec); @@ -265,25 +354,14 @@ MindBreakerBoard::MindBreakerBoard( QCanvas &canv, QWidget *parent, canvas()->setAdvancePeriod(500); + current_highlight = 0; - QImage image = Resource::loadImage("mindbreaker/mindbreaker"); - - /* copy from master image to functional images */ - x = 0; - y = 0; - panelImage = image.copy(x,y, panel_width, panel_height); - y += panel_height; - y += panel_height; - - titleImage = image.copy(x, y, title_width, title_height); - - Peg::buildImages(); // must be done BEFORE any pegs are made - - current_highlight = new Peg(canvas(), 8); - current_highlight->setPlaced(TRUE); - current_highlight->setX(0); - current_highlight->setY(board_height - ((current_go + 1) * panel_height)); - current_highlight->setZ(0); - current_highlight->show(); + widthTimer = new QTimer( this ); + connect(widthTimer, SIGNAL(timeout()), this, SLOT(doFixSize()) ); + setMaximumWidth( QMIN(qApp->desktop()->height(),qApp->desktop()->width()) ); + //doFixSize(); // build images... needs to be done before reading config. + //readConfig(); // first read... to ensure initial labels and side look right. +} - /* set up the game */ +void MindBreakerBoard::readConfig() +{ Config c("MindBreaker", Config::User); @@ -291,2 +369,3 @@ MindBreakerBoard::MindBreakerBoard( QCanvas &canv, QWidget *parent, game_over = FALSE; + int i; if (c.readNumEntry("Answer0") < 0) { @@ -311,3 +390,3 @@ MindBreakerBoard::MindBreakerBoard( QCanvas &canv, QWidget *parent, c.setGroup("Board"); - for(i = 0; i < 4; i++) + for(i = 0; i < 4; i++) answer[i] = c.readNumEntry(QString("Answer%1").arg(i)); @@ -330,3 +409,3 @@ MindBreakerBoard::MindBreakerBoard( QCanvas &canv, QWidget *parent, current_guess[i] = c.readNumEntry(QString("CurrentGo%1").arg(i)); - if (current_guess[i] != 6) + if (current_guess[i] != 6) placeGuessPeg(i, current_guess[i]); @@ -334,6 +413,2 @@ MindBreakerBoard::MindBreakerBoard( QCanvas &canv, QWidget *parent, } - - /* draw initial screen */ - drawBackground(); - canvas()->update(); } @@ -342,3 +417,3 @@ MindBreakerBoard::~MindBreakerBoard() { - int i, j; + int i; if (game_over) { @@ -351,3 +426,7 @@ MindBreakerBoard::~MindBreakerBoard() } - + writeConfig(); +} + +void MindBreakerBoard::writeConfig() +{ Config c("MindBreaker", Config::User); @@ -356,10 +435,11 @@ MindBreakerBoard::~MindBreakerBoard() /* write the board */ + int i,j; for (i = 0; i < current_go; i++) { for(j = 0; j < 4; j++) - c.writeEntry(tr("Go%1p%2").arg(i).arg(j), past_guesses[4*i+j]); + c.writeEntry(QString("Go%1p%2").arg(i).arg(j), past_guesses[4*i+j]); } - for(j = 0; j < 4; j++) - c.writeEntry(tr("CurrentGo%1").arg(j), current_guess[j]); - for(j = 0; j < 4; j++) - c.writeEntry(tr("Answer%1").arg(j), answer[j]); + for(j = 0; j < 4; j++) + c.writeEntry(QString("CurrentGo%1").arg(j), current_guess[j]); + for(j = 0; j < 4; j++) + c.writeEntry(QString("Answer%1").arg(j), answer[j]); @@ -379,7 +459,71 @@ void MindBreakerBoard::getScore(int *a, int *b) +void MindBreakerBoard::fixSize() +{ + hide(); + setMaximumWidth( parentWidget()->height() ); + widthTimer->start( 20, TRUE ); +} + +void MindBreakerBoard::doFixSize() +{ + QSize s = size(); + int fw = frameWidth(); + s.setWidth(s.width() - fw); + s.setHeight(s.height() - fw); + + /* min size is 200 x 260 */ +/* + if (s.width() < adjusted_board_width) + s.setWidth(adjusted_board_width); + + if (s.height() < adjusted_board_height) + s.setHeight(adjusted_board_height); +*/ + + if ( current_highlight ) // non-first resize + writeConfig(); + + setupBoardSize(s.width() - fw, s.height() - fw); + canvas()->resize(s.width() - fw, s.height() - fw); + Peg::buildImages(); // must be done BEFORE any pegs are made + + QImage image = Resource::loadImage("mindbreaker/mindbreaker"); + + /* copy from master image to functional images */ + int x = 0; + int y = 0; + panelImage = image.copy(x, y, panel_width, panel_height). + smoothScale( adjusted_panel_width, adjusted_panel_height); + + y += panel_height; + y += panel_height; + + titleImage = image.copy(x, y, title_width, title_height). + smoothScale( adjusted_title_width, adjusted_title_height); + show(); + + delete current_highlight; + current_highlight = new Peg(canvas(), 8); + current_highlight->setPlaced(TRUE); + current_highlight->setX(0); + current_highlight->setY(adjusted_board_height - ((current_go + 1) * adjusted_panel_height)); + current_highlight->setZ(0); + current_highlight->show(); + + /* set up the game */ + //readConfig(); + + /* draw initial screen */ + //drawBackground(); + //canvas()->update(); + clear(); + + readConfig(); +} + void MindBreakerBoard::placeGuessPeg(int pos, int pegId) { - int x = first_peg_x_diff + (pos * peg_spacing); - int y = board_height - ((current_go + 1) * panel_height) - + first_peg_y_diff; + int x = adjusted_first_peg_x_diff + (pos * adjusted_peg_spacing); + int y = adjusted_board_height - ((current_go + 1) * adjusted_panel_height) + + adjusted_first_peg_y_diff; @@ -407,14 +551,14 @@ void MindBreakerBoard::drawBackground() painter.setPen(pen); - x_gap = canvas()->width() - (panel_width + (2 * bin_margin)); + x_gap = canvas()->width() - (adjusted_panel_width + (2 * adjusted_bin_margin)); //x_gap += peg_size >> 1; - if (x_gap < 1) + if (x_gap < 1) x_gap = 1; - y_gap = board_height / 6; - y_gap -= (2 * bin_margin); + y_gap = adjusted_board_height / 6; + y_gap -= (2 * adjusted_bin_margin); //y_gap += peg_size >> 1; - if (y_gap < 1) + if (y_gap < 1) y_gap = 1; - x = panel_width + bin_margin - (peg_size >> 1); - y = bin_margin - (peg_size >> 1) + 2; + x = adjusted_panel_width + adjusted_bin_margin - (adjusted_peg_size >> 1); + y = adjusted_bin_margin - (adjusted_peg_size >> 1) + 2; @@ -426,9 +570,9 @@ void MindBreakerBoard::drawBackground() } - y += board_height / 6; + y += adjusted_board_height / 6; } /* now draw the surrounding boxes */ - x_gap = canvas()->width() - panel_width; + x_gap = canvas()->width() - adjusted_panel_width; if (x_gap < 1) x_gap = 1; - y_gap = board_height / 6; - x = panel_width; + y_gap = adjusted_board_height / 6; + x = adjusted_panel_width; y = 1; @@ -436,3 +580,3 @@ void MindBreakerBoard::drawBackground() for (i = 0; i < 6; i++) { - painter.drawRect(x, y, x_gap, y_gap); + painter.drawRect(x, y, x_gap, y_gap); y += y_gap; @@ -444,3 +588,3 @@ void MindBreakerBoard::drawBackground() painter.drawImage(x,y, titleImage); - y = title_height; + y = adjusted_title_height; /* now nine gues panels */ @@ -448,3 +592,3 @@ void MindBreakerBoard::drawBackground() painter.drawImage(x, y, panelImage); - y += panel_height; + y += adjusted_panel_height; } @@ -471,3 +615,3 @@ void MindBreakerBoard::checkGuess() copy_answer[i] = 6; - copy_guess[i] = 7; + copy_guess[i] = 7; } @@ -488,5 +632,5 @@ void MindBreakerBoard::checkGuess() - int x = answerpegx; - int y = (board_height - ((current_go + 1) * panel_height)) + answerpegy; - + int x = adjusted_answerpegx; + int y = (adjusted_board_height - ((current_go + 1) * adjusted_panel_height)) + adjusted_answerpegy; + if (num_black == 4) @@ -502,8 +646,8 @@ void MindBreakerBoard::checkGuess() num_black--; - - if (x == answerpegx) - x = answerpegx + answerpeg_diff; + + if (x == adjusted_answerpegx) + x = adjusted_answerpegx + adjusted_answerpeg_xdiff; else { - x = answerpegx; - y += answerpeg_diff; + x = adjusted_answerpegx; + y += adjusted_answerpeg_ydiff; } @@ -518,8 +662,8 @@ void MindBreakerBoard::checkGuess() num_white--; - - if (x == answerpegx) - x = answerpegx + answerpeg_diff; + + if (x == adjusted_answerpegx) + x = adjusted_answerpegx + adjusted_answerpeg_xdiff; else { - x = answerpegx; - y += answerpeg_diff; + x = adjusted_answerpegx; + y += adjusted_answerpeg_ydiff; } @@ -537,3 +681,3 @@ void MindBreakerBoard::checkGuess() total_turns += 10; - else + else total_turns += current_go; @@ -548,7 +692,7 @@ void MindBreakerBoard::checkGuess() p->show(); - + for (i = 0; i < 4; i++) { p = new Peg(canvas(), answer[i], -1); - p->setX(first_peg_x_diff + (i * peg_spacing)); - p->setY(5); + p->setX(adjusted_first_peg_x_diff + (i * adjusted_peg_spacing)); + p->setY(adjusted_first_peg_y_diff); p->setZ(3); @@ -557,3 +701,3 @@ void MindBreakerBoard::checkGuess() } else { - current_highlight->setY(board_height - ((current_go + 1) * panel_height)); + current_highlight->setY(adjusted_board_height - ((current_go + 1) * adjusted_panel_height)); } @@ -588,3 +732,3 @@ void MindBreakerBoard::clear() - current_highlight->setY(board_height - ((current_go + 1) * panel_height)); + current_highlight->setY(adjusted_board_height - ((current_go + 1) * adjusted_panel_height)); checkScores(); @@ -594,3 +738,3 @@ void MindBreakerBoard::clear() -void MindBreakerBoard::resetScore() +void MindBreakerBoard::resetScore() { @@ -598,3 +742,3 @@ void MindBreakerBoard::resetScore() - if (QMessageBox::information(this, tr( "Reset Statistics" ), + if (QMessageBox::information(this, tr( "Reset Statistics" ), tr( "Reset the win ratio?" ), @@ -614,2 +758,9 @@ void MindBreakerBoard::contentsMousePressEvent(QMouseEvent *e) { + if (game_over) { + null_press = TRUE; + null_point = e->pos(); + moving = 0; + return; + } + copy_press = FALSE; @@ -618,7 +769,7 @@ void MindBreakerBoard::contentsMousePressEvent(QMouseEvent *e) got clicked */ - if (e->x() > panel_width) { + if (e->x() > adjusted_panel_width) { /* its a bin, but which bin */ - if(e->y() > board_height) + int bin = (e->y() + 2) / (adjusted_board_height / 6); + if (bin > 5) return; // missed everything - int bin = (e->y() + 2) / (board_height / 6); @@ -627,4 +778,4 @@ void MindBreakerBoard::contentsMousePressEvent(QMouseEvent *e) moving = new Peg(canvas(), bin, current_go); - moving->setX(e->x() - (peg_size >> 1)); - moving->setY(e->y() - (peg_size >> 1)); + moving->setX(e->x() - (adjusted_peg_size >> 1)); + moving->setY(e->y() - (adjusted_peg_size >> 1)); moving->setZ(5); @@ -654,6 +805,6 @@ void MindBreakerBoard::contentsMousePressEvent(QMouseEvent *e) } - moving = new Peg(canvas(), + moving = new Peg(canvas(), item->type(), current_go); - moving->setX(e->x() - (peg_size >> 1)); - moving->setY(e->y() - (peg_size >> 1)); + moving->setX(e->x() - (adjusted_peg_size >> 1)); + moving->setY(e->y() - (adjusted_peg_size >> 1)); moving->setZ(5); @@ -683,3 +834,3 @@ void MindBreakerBoard::contentsMouseMoveEvent(QMouseEvent* e) return; - } + } } @@ -695,3 +846,3 @@ void MindBreakerBoard::contentsMouseReleaseEvent(QMouseEvent* e) for (QCanvasItemList::Iterator it=l.begin(); it !=l.end(); ++it) { - if (*it == copy_peg) + if (*it == copy_peg) copy_press = TRUE; @@ -709,5 +860,5 @@ void MindBreakerBoard::contentsMouseReleaseEvent(QMouseEvent* e) } - + /* first work out if in y */ - if (e->y() > (board_height - (current_go * panel_height))) { + if (e->y() > (adjusted_board_height - (current_go * adjusted_panel_height))) { delete moving; @@ -717,3 +868,3 @@ void MindBreakerBoard::contentsMouseReleaseEvent(QMouseEvent* e) } - if (e->y() < (board_height - ((current_go + 1) * panel_height))) { + if (e->y() < (adjusted_board_height - ((current_go + 1) * adjusted_panel_height))) { delete moving; @@ -724,14 +875,14 @@ void MindBreakerBoard::contentsMouseReleaseEvent(QMouseEvent* e) /* ok, a valid go, but which peg */ - int x_bar = first_peg_x_diff - (peg_size >> 1); - x_bar += peg_spacing; + int x_bar = adjusted_first_peg_x_diff - (adjusted_peg_size >> 1); + x_bar += adjusted_peg_spacing; int pos = 0; - if (e->x() > x_bar) + if (e->x() > x_bar) pos = 1; - x_bar += peg_spacing; + x_bar += adjusted_peg_spacing; if (e->x() > x_bar) pos = 2; - x_bar += peg_spacing; + x_bar += adjusted_peg_spacing; if (e->x() > x_bar) pos = 3; - x_bar += peg_spacing; + x_bar += adjusted_peg_spacing; @@ -745,5 +896,5 @@ void MindBreakerBoard::contentsMouseReleaseEvent(QMouseEvent* e) - int x = first_peg_x_diff + (pos * peg_spacing); - int y = board_height - ((current_go + 1) * panel_height) - + first_peg_y_diff; + int x = adjusted_first_peg_x_diff + (pos * adjusted_peg_spacing); + int y = adjusted_board_height - ((current_go + 1) * adjusted_panel_height) + + adjusted_first_peg_y_diff; moving->setPegPos(pos); @@ -771,5 +922,5 @@ void MindBreakerBoard::contentsMouseReleaseEvent(QMouseEvent* e) if(null_point.manhattanLength() < 6) { - if (game_over) + if (game_over) clear(); - else + else checkGuess(); @@ -780,16 +931,4 @@ void MindBreakerBoard::resizeEvent(QResizeEvent *e) { - QSize s = e->size(); - int fw = style().defaultFrameWidth(); - s.setWidth(s.width() - fw); - s.setHeight(s.height() - fw); - - /* min size is 200 x 260 */ - if (s.width() < board_width) - s.setWidth(board_width); - - if (s.height() < board_height) - s.setHeight(board_height); - - canvas()->resize(s.width() - fw, s.height() - fw); - drawBackground(); + QCanvasView::resizeEvent(e); + fixSize(); } @@ -806,3 +945,3 @@ void MindBreakerBoard::checkScores() double break_even = 5.0; - if (g < 1.0) + if (g < 1.0) return; @@ -811,3 +950,3 @@ void MindBreakerBoard::checkScores() while (break_even >= 0.0) { - if (avg >= (break_even + g)) + if (avg >= (break_even + g)) return; |