[Top][All Lists]
[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];
};