summaryrefslogtreecommitdiff
path: root/noncore/games
Side-by-side diff
Diffstat (limited to 'noncore/games') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/minesweep/minefield.cpp144
-rw-r--r--noncore/games/minesweep/minefield.h7
-rw-r--r--noncore/games/minesweep/minesweep.cpp34
3 files changed, 110 insertions, 75 deletions
diff --git a/noncore/games/minesweep/minefield.cpp b/noncore/games/minesweep/minefield.cpp
index 04cfb97..1790110 100644
--- a/noncore/games/minesweep/minefield.cpp
+++ b/noncore/games/minesweep/minefield.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.
**
@@ -21,3 +21,4 @@
-#include <qpe/config.h>
+#include <qtopia/config.h>
+#include <qtopia/qpeapplication.h>
@@ -71,3 +72,3 @@ static const char *pix_mine[]={
static const int maxGrid = 28;
-static const int minGrid = 9;
+static const int minGrid = 12;
@@ -186,3 +187,5 @@ void Mine::paint( QPainter* p, const QColorGroup &cg, const QRect& cr )
int y = cr.y();
- if ( !knownField ) {
+ if ( !knownField || knownField->width() != cr.width() ||
+ knownField->height() != cr.height() ) {
+ delete knownField;
knownField = new QPixmap( cr.width(), cr.height() );
@@ -190,3 +193,3 @@ void Mine::paint( QPainter* p, const QColorGroup &cg, const QRect& cr )
QBrush br( cg.button().dark(115) );
- qDrawWinButton( &pp, cr, cg, TRUE, &br );
+ qDrawWinButton( &pp, QRect( 0, 0, cr.width(), cr.height() ), cg, TRUE, &br );
}
@@ -195,3 +198,5 @@ void Mine::paint( QPainter* p, const QColorGroup &cg, const QRect& cr )
- if ( !unknownField ) {
+ if ( !unknownField || unknownField->width() != cr.width() ||
+ unknownField->height() != cr.height() ) {
+ delete unknownField;
unknownField = new QPixmap( cr.width(), cr.height() );
@@ -199,6 +204,8 @@ void Mine::paint( QPainter* p, const QColorGroup &cg, const QRect& cr )
QBrush br( cg.button() );
- qDrawWinButton( &pp, cr, cg, FALSE, &br );
+ qDrawWinButton( &pp, QRect( 0, 0, cr.width(), cr.height() ), cg, FALSE, &br );
}
- if ( !flag_pix ) {
+ if ( !flag_pix || flag_pix->width() != cr.width()-pmmarg*2 ||
+ flag_pix->height() != cr.height()-pmmarg*2 ) {
+ delete flag_pix;
flag_pix = new QPixmap( cr.width()-pmmarg*2, cr.height()-pmmarg*2 );
@@ -207,3 +214,5 @@ void Mine::paint( QPainter* p, const QColorGroup &cg, const QRect& cr )
- if ( !mine_pix ) {
+ if ( !mine_pix || mine_pix->width() != cr.width()-pmmarg*2 ||
+ mine_pix->height() != cr.height()-pmmarg*2 ) {
+ delete mine_pix;
mine_pix = new QPixmap( cr.width()-pmmarg*2, cr.height()-pmmarg*2 );
@@ -285,2 +294,3 @@ MineField::MineField( QWidget* parent, const char* name )
{
+ viewport()->setBackgroundMode( NoBackground );
setState( GameOver );
@@ -288,3 +298,3 @@ MineField::MineField( QWidget* parent, const char* name )
setSizePolicy( QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Maximum ) );
-
+
setFocusPolicy( QWidget::NoFocus );
@@ -301,3 +311,5 @@ MineField::MineField( QWidget* parent, const char* name )
cellSize = -1;
- mines = 0;
+
+ numRows = numCols = 0;
+ mines = NULL;
}
@@ -306,11 +318,5 @@ MineField::~MineField()
{
- int i;
- if ( mines )
- {
- for ( i = 0; i < numCols*numRows; i++ )
- {
- delete mines[i];
- }
- delete[] mines;
- }
+ for ( int i = 0; i < numCols*numRows; i++ )
+ delete mines[i];
+ delete[] mines;
}
@@ -329,10 +335,5 @@ void MineField::setup( int level )
int i;
- if ( mines )
- {
- for ( i = 0; i < numCols*numRows; i++ )
- {
- delete mines[i];
- }
- delete[] mines;
- }
+ for ( i = 0; i < numCols*numRows; i++ )
+ delete mines[i];
+ delete[] mines;
@@ -345,5 +346,5 @@ void MineField::setup( int level )
case 2:
- numRows = 16;
- numCols = 16;
- minecount = 45;
+ numRows = 13;
+ numCols = 13;
+ minecount = 33;
break;
@@ -355,3 +356,3 @@ void MineField::setup( int level )
}
- mines = new Mine*[numRows*numCols];
+ mines = new Mine* [numRows*numCols];
for ( i = 0; i < numCols*numRows; i++ )
@@ -359,3 +360,3 @@ void MineField::setup( int level )
-
+
nonminecount = numRows*numCols - minecount;
@@ -373,3 +374,3 @@ void MineField::setup( int level )
-void MineField::drawContents( QPainter * p, int clipx, int clipy, int clipw, int cliph )
+void MineField::drawContents( QPainter * p, int clipx, int clipy, int clipw, int cliph )
{
@@ -379,3 +380,3 @@ void MineField::drawContents( QPainter * p, int clipx, int clipy, int clipw, int
int r2 = ( clipy + cliph - 1 ) / cellSize;
-
+
for ( int c = c1; c <= c2 ; c++ ) {
@@ -399,3 +400,7 @@ void MineField::setAvailableRect( const QRect &r )
int newCellSize = findCellSize();
- if ( newCellSize != cellSize ) {
+
+
+ if ( newCellSize == cellSize ) {
+ setCellSize( cellSize );
+ } else {
viewport()->setUpdatesEnabled( FALSE );
@@ -409,6 +414,6 @@ int MineField::findCellSize()
{
- int w = availableRect.width() - 1;
- int h = availableRect.height() - 1;
+ int w = availableRect.width() - 2;
+ int h = availableRect.height() - 2;
int cellsize;
-
+
cellsize = QMIN( w/numCols, h/numRows );
@@ -421,17 +426,25 @@ void MineField::setCellSize( int cellsize )
{
- cellSize = cellsize;
-
- int w = availableRect.width();
- int h = availableRect.height();
-
+ int b = 2;
+
int w2 = cellsize*numCols;
int h2 = cellsize*numRows;
-
- resizeContents( w2, h2 );
-
- int b = 5;
-
- setGeometry( availableRect.x() + (w-w2)/2, availableRect.y() + (h-h2)/2,
- w2+b, h2+b );
-// QMIN(w,w2+b), QMIN(h,h2+b) );
+
+ int w = QMIN( availableRect.width(), w2+b );
+ int h = QMIN( availableRect.height(), h2+b );
+
+ //
+ // Don't rely on the change in cellsize to force a resize,
+ // as it's possible to have the same size cells when going
+ // from a large play area to a small one.
+ //
+ resizeContents(w2, h2);
+
+ if ( availableRect.height() < h2 &&
+ availableRect.width() - w > style().scrollBarExtent().width() ) {
+ w += style().scrollBarExtent().width();
+ }
+
+ setGeometry( availableRect.x() + (availableRect.width()-w)/2,
+ availableRect.y() + (availableRect.height()-h)/2, w, h );
+ cellSize = cellsize;
}
@@ -615,6 +628,10 @@ void MineField::updateMine( int row, int col )
if ( m->state() == Mine::Flagged ) {
- --mineguess;
- emit mineCount( mineguess );
- if ( m->isMined() )
- --minecount;
+ if (mineguess > 0) {
+ --mineguess;
+ emit mineCount( mineguess );
+ if ( m->isMined() )
+ --minecount;
+ } else {
+ m->setState(Mine::Hidden);
+ }
} else if ( wasFlagged ) {
@@ -683,2 +700,3 @@ void MineField::readConfig(Config& cfg)
QString grid = cfg.readEntry("Grid");
+ int x;
if ( !grid.isEmpty() ) {
@@ -687,3 +705,3 @@ void MineField::readConfig(Config& cfg)
mineguess=0;
- for ( int x = 0; x < numCols; x++ ) {
+ for ( x = 0; x < numCols; x++ ) {
for ( int y = 0; y < numRows; y++ ) {
@@ -713,3 +731,3 @@ void MineField::readConfig(Config& cfg)
}
- for ( int x = 0; x < numCols; x++ ) {
+ for ( x = 0; x < numCols; x++ ) {
for ( int y = 0; y < numRows; y++ ) {
@@ -725 +743,9 @@ void MineField::readConfig(Config& cfg)
+QSize MineField::sizeHint() const
+{
+ if ( qApp->desktop()->width() >= 240 )
+ return QSize(200,200);
+ else
+ return QSize(160, 160);
+}
+
diff --git a/noncore/games/minesweep/minefield.h b/noncore/games/minesweep/minefield.h
index 1349c35..e243d77 100644
--- a/noncore/games/minesweep/minefield.h
+++ b/noncore/games/minesweep/minefield.h
@@ -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.
**
@@ -44,2 +44,5 @@ public:
void setAvailableRect( const QRect & );
+
+ QSize sizeHint() const;
+
public slots:
diff --git a/noncore/games/minesweep/minesweep.cpp b/noncore/games/minesweep/minesweep.cpp
index 7214a73..d707dab 100644
--- a/noncore/games/minesweep/minesweep.cpp
+++ b/noncore/games/minesweep/minesweep.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.
**
@@ -23,7 +23,7 @@
-#include <qpe/qpeapplication.h>
-#include <qpe/resource.h>
-#include <qpe/config.h>
+#include <qtopia/qpeapplication.h>
+#include <qtopia/resource.h>
+#include <qtopia/config.h>
-#include <qpe/qpetoolbar.h>
+#include <qtoolbar.h>
#include <qmenubar.h>
@@ -200,2 +200,3 @@ void ResultIndicator::center()
QSize s = sizeHint()*3;
+ s.setWidth( QMIN(s.width(), w->width()) );
pp = QPoint( pp.x() + w->width()/2 - s.width()/2,
@@ -226,4 +227,7 @@ public:
MineFrame( QWidget *parent, const char *name = 0 )
- :QFrame( parent, name ) {}
- void setField( MineField *f ) { field = f; }
+ :QFrame( parent, name ), field(0) {}
+ void setField( MineField *f ) {
+ field = f;
+ setMinimumSize( field->sizeHint() );
+ }
protected:
@@ -242,6 +246,6 @@ MineSweep::MineSweep( QWidget* parent, const char* name, WFlags f )
{
- QPEApplication::setInputMethodHint(this, QPEApplication::AlwaysOff );
srand(::time(0));
setCaption( tr("Mine Hunt") );
- setIcon( Resource::loadPixmap( "minesweep_icon" ) );
+ QPEApplication::setInputMethodHint(this, QPEApplication::AlwaysOff );
+ setIcon( Resource::loadPixmap( "minesweep/MineHunt" ) );
@@ -255,3 +259,6 @@ MineSweep::MineSweep( QWidget* parent, const char* name, WFlags f )
gameMenu->insertItem( tr("Advanced"), this, SLOT( advanced() ) );
- gameMenu->insertItem( tr("Expert"), this, SLOT( expert() ) );
+
+ if (qApp->desktop()->width() >= 240) {
+ gameMenu->insertItem( tr("Expert"), this, SLOT( expert() ) );
+ }
@@ -301,4 +308,4 @@ MineSweep::MineSweep( QWidget* parent, const char* name, WFlags f )
- connect( field, SIGNAL( gameOver( bool ) ), this, SLOT( gameOver( bool ) ) );
- connect( field, SIGNAL( mineCount( int ) ), this, SLOT( setCounter( int ) ) );
+ connect( field, SIGNAL( gameOver(bool) ), this, SLOT( gameOver(bool) ) );
+ connect( field, SIGNAL( mineCount(int) ), this, SLOT( setCounter(int) ) );
connect( field, SIGNAL( gameStarted()), this, SLOT( startPlaying() ) );
@@ -306,3 +313,2 @@ MineSweep::MineSweep( QWidget* parent, const char* name, WFlags f )
timer = new QTimer( this );
-
connect( timer, SIGNAL( timeout() ), this, SLOT( updateTime() ) );