camino-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Camino-devel] camino/src/common Board.h Board.cpp


From: Pascal Audoux
Subject: [Camino-devel] camino/src/common Board.h Board.cpp
Date: Sun, 26 Jan 2003 04:50:00 -0500

CVSROOT:        /cvsroot/camino
Module name:    camino
Changes by:     Pascal Audoux <address@hidden>  03/01/26 04:50:00

Modified files:
        src/common     : Board.h Board.cpp 

Log message:
        add some method for checking and setting tiles on board

Patches:
Index: camino/src/common/Board.cpp
diff -u camino/src/common/Board.cpp:1.2 camino/src/common/Board.cpp:1.3
--- camino/src/common/Board.cpp:1.2     Sat Jan 25 13:46:58 2003
+++ camino/src/common/Board.cpp Sun Jan 26 04:50:00 2003
@@ -2,7 +2,7 @@
 **
 ** Camino
 **
-** Version : $Id: Board.cpp,v 1.2 2003/01/25 18:46:58 Audoux Exp $
+** Version : $Id: Board.cpp,v 1.3 2003/01/26 09:50:00 Audoux Exp $
 **
 ** Author(s) : Philippe Fremy, Pascal Audoux
 ** Creation : 16/01/2003
@@ -67,11 +67,75 @@
 {
        Tile * ret = 0;
 
+       if( ( row >= 0 ) && ( col >= 0 ) && ( row < 10 ) && ( col < 14 ) ) {
+               ret = _tiles[row][col];
+       }
+
+       return ret;
+}
+
+bool Board::setTile( int row, int col, Tile * tile )
+{
+       bool ret = true;
+
+       if( isPossible( row, col, tile ) ) {
+               tile->setRotation( computeRotation( row, col, tile ) );
+               _tiles[row][col] = tile;
+       } else {
+               ret = false;
+       }
+
+       return ret;
+}
+
+bool Board::isPossible( int row, int col, Tile  * tile )
+{
+       bool ret = true;
+
+       if( ( row >= 0 ) && ( col >= 0 ) && ( row < 10 ) && ( col < 14 ) ) {
+               ret = hasNeighbour( row, col );
+       } else {
+               ret = false;
+       }
+
        return ret;
 }
 
-void Board::setTile( int row, int col, Tile * tile )
+bool Board::hasNeighbour( int row, int col )
 {
+       bool ret = false;
 
+       if( row > 0 ) {
+               if( col > 0 ) {
+                       ret = ret || ( _tiles[row-1][col-1]->getType() != 
Tile::TILE_UNKNOWN );
+               }
+               ret = ret || ( _tiles[row-1][col]->getType() != 
Tile::TILE_UNKNOWN );
+               if( col < 13 ) {
+                       ret = ret || ( _tiles[row-1][col+1]->getType() != 
Tile::TILE_UNKNOWN );
+               }
+       }
+       if( col > 0 ) {
+               ret = ret || ( _tiles[row][col-1]->getType() != 
Tile::TILE_UNKNOWN );
+       }
+       if( col < 13 ) {
+               ret = ret || ( _tiles[row][col+1]->getType() != 
Tile::TILE_UNKNOWN );
+       }
+       if( row < 9 ) {
+               if( col > 0 ) {
+                       ret = ret || ( _tiles[row+1][col-1]->getType() != 
Tile::TILE_UNKNOWN );
+               }
+               ret = ret || ( _tiles[row+1][col]->getType() != 
Tile::TILE_UNKNOWN );
+               if( col < 13 ) {
+                       ret = ret || ( _tiles[row+1][col+1]->getType() != 
Tile::TILE_UNKNOWN );
+               }
+       }
+
+       return ret;
 }
 
+int Board::computeRotation( int row, int col, Tile * tile )
+{
+       int ret = 0;
+
+       return ret;
+}
Index: camino/src/common/Board.h
diff -u camino/src/common/Board.h:1.2 camino/src/common/Board.h:1.3
--- camino/src/common/Board.h:1.2       Sat Jan 25 13:46:58 2003
+++ camino/src/common/Board.h   Sun Jan 26 04:50:00 2003
@@ -5,7 +5,7 @@
 ** Board.h
 ** Handles the game's board
 **
-** Version : $Id: Board.h,v 1.2 2003/01/25 18:46:58 Audoux Exp $
+** Version : $Id: Board.h,v 1.3 2003/01/26 09:50:00 Audoux Exp $
 ** Author(s) : Philippe Fremy, Pascal Audoux
 ** Creation : 16/01/2003
 ** Copyright: Pascal Audoux, Philippe Fremy 2003
@@ -56,9 +56,14 @@
 
        Tile * getTile( int row, int col );
 
-       void setTile( int row, int col, Tile * tile );
+       bool setTile( int row, int col, Tile * tile );
 
+       bool isPossible( int row, int col, Tile  * tile );
+
+       int computeRotation( int row, int col, Tile * tile );
 protected:
+       bool hasNeighbour( int row, int col );
+       
        Tile * _tiles[10][14];
 };
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]