[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground/games/kigo/src
From:       Sascha Peilicke <sasch.pe () gmx ! de>
Date:       2009-01-22 13:20:17
Message-ID: 1232630417.233183.950.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 915068 by saschpe:

Fixed some bugs that resulted from the game codebase split

 M  +19 -10    game/engine.cpp  
 M  +4 -4      game/engine.h  
 M  +2 -2      game/move.cpp  
 M  +4 -4      game/move.h  
 M  +6 -0      game/player.cpp  
 M  +4 -3      game/player.h  
 M  +1 -1      main.cpp  


--- trunk/playground/games/kigo/src/game/engine.cpp #915067:915068
@@ -31,9 +31,9 @@
 
 Engine::Engine(QObject *parent)
     : QObject(parent)
-    , m_currentMove(0), m_currentPlayer(m_blackPlayer)
+    , m_currentMove(0), m_currentPlayer(&m_blackPlayer)
     , m_blackPlayer(Player::Black), m_whitePlayer(Player::White)
-    , m_komi(0), m_boardSize(-1), m_fixedHandicap(0), m_consecutivePassMoveNumber(0)
+    , m_komi(4.5), m_boardSize(19), m_fixedHandicap(5), m_consecutivePassMoveNumber(0)
 {
     connect(&m_process, SIGNAL(readyRead()), this, SLOT(readyRead()));
     connect(&m_undoStack, SIGNAL(canRedoChanged(bool)), this, SIGNAL(canRedoChanged(bool)));
@@ -91,9 +91,12 @@
     if (!isRunning())
         return false;
 
+    kDebug() << "Init game!";
+
     m_process.write("clear_board\n");
     if (waitResponse()) {
         // The board is wiped empty, start again with black player
+        kDebug() << "Set current to black:" << m_blackPlayer.toString();
         setCurrentPlayer(m_blackPlayer);
         m_fixedHandicap = 0;
         m_consecutivePassMoveNumber = 0;
@@ -242,8 +245,10 @@
         return false;
 
     Player tmp = player;
-    if (!tmp.isValid())
-        tmp = m_currentPlayer;
+    if (!tmp.isValid()) {
+        //kDebug() << "Invalid player argument, using current player!";
+        tmp = *m_currentPlayer;
+    }
 
     QByteArray msg("play ");                    // The command to be sent
     if (tmp.isWhite())
@@ -300,8 +305,10 @@
         return false;
 
     Player tmp = player;
-    if (!tmp.isValid())
-        tmp = m_currentPlayer;
+    if (!tmp.isValid()) {
+        //kDebug() << "Invalid player argument, using current player!";
+        tmp = *m_currentPlayer;
+    }
 
     if (tmp.isWhite()) {
         m_process.write("level " + QByteArray::number(m_whitePlayer.strength()) + '\n');
@@ -329,7 +336,7 @@
             m_consecutivePassMoveNumber++;
             undoStr += i18n("pass");
         } else if (m_response == "resign") {
-            emit resigned(m_currentPlayer);
+            emit resigned(*m_currentPlayer);
             undoStr += i18n("resign");
         } else {
             m_currentMove++;
@@ -632,10 +639,12 @@
     m_waitAndProcessEvents = false;
 }
 
-void Engine::setCurrentPlayer(const Player &player)
+void Engine::setCurrentPlayer(Player &player)
 {
-    m_currentPlayer = player;
-    emit currentPlayerChanged(m_currentPlayer);
+    m_currentPlayer = &player;
+    kDebug() << "Set current player to" << m_currentPlayer->toString() << "from"
+             << player.toString();
+    emit currentPlayerChanged(*m_currentPlayer);
 }
 
 } // End of namespace Kigo
--- trunk/playground/games/kigo/src/game/engine.h #915067:915068
@@ -155,8 +155,8 @@
      */
     int fixedHandicapUpperBound();
 
-    Player &currentPlayer() { return m_currentPlayer; }
-    const Player &currentPlayer() const { return m_currentPlayer; }
+    Player &currentPlayer() { return *m_currentPlayer; }
+    const Player &currentPlayer() const { return *m_currentPlayer; }
     Player &whitePlayer() { return m_whitePlayer; }
     const Player &whitePlayer() const { return m_whitePlayer; }
     Player &blackPlayer() { return m_blackPlayer; }
@@ -289,7 +289,7 @@
     void readyRead();
 
 private:
-    void setCurrentPlayer(const Player &player);
+    void setCurrentPlayer(Player &player);
 
     QProcess m_process;
 
@@ -302,7 +302,7 @@
     int m_currentMove;
     QUndoStack m_undoStack;
 
-    Player &m_currentPlayer;
+    Player *m_currentPlayer;
     Player m_blackPlayer;
     Player m_whitePlayer;
 
--- trunk/playground/games/kigo/src/game/move.cpp #915067:915068
@@ -24,8 +24,8 @@
 
 namespace Kigo {
 
-Move::Move(const Player &player, const Stone &stone)
-    : m_player((Player &)player), m_stone((Stone &)stone)
+Move::Move(Player &player, const Stone &stone)
+    : m_player(&player), m_stone(stone)
 {
 }
 
--- trunk/playground/games/kigo/src/game/move.h #915067:915068
@@ -38,19 +38,19 @@
     Q_OBJECT
 
 public:
-    Move(const Player &player, const Stone &stone);
+    Move(Player &player, const Stone &stone);
     Move(const Move &other);
     Move &operator=(const Move &other);
 
-    const Player &player() const { return m_player; }
+    const Player &player() const { return *m_player; }
     const Stone &stone() const { return m_stone; }
 
     bool isValid() const { return m_stone.isValid(); }
     bool isPass() const { return !m_stone.isValid(); }
 
 private:
-    Player &m_player;
-    Stone &m_stone;
+    Player *m_player;
+    Stone m_stone;
 };
 
 } // End of namespace Kigo
--- trunk/playground/games/kigo/src/game/player.cpp #915067:915068
@@ -60,6 +60,12 @@
     }
 }
 
+QString Player::toString() const
+{
+    return m_name + " [" + (m_color == White ? "White" : "Black") +
+           ':' + QByteArray::number(m_strength) + ']';
+}
+
 } // End of namespace Kigo
 
 #include "moc_player.cpp"
--- trunk/playground/games/kigo/src/game/player.h #915067:915068
@@ -59,14 +59,13 @@
 public:
     Player &operator=(const Player &other);
 
-    bool operator==(const Player &other);
-
     void setName(const QString &name) { m_name = name; }
     QString name() const { return m_name; }
 
     bool setStrength(int strength);
     int strength() const { return m_strength; }
 
+    void setColor(Color color) { m_color = color; }
     Color color() const { return m_color; }
 
     void setType(Type type) { m_type = type; }
@@ -75,10 +74,12 @@
     bool isWhite() const { return m_color == White; }
     bool isBlack() const { return m_color == Black; }
     bool isValid() const { return m_color != Invalid; }
-
     bool isHuman() const { return m_type == Human; }
     bool isComputer() const { return m_type == Computer; }
 
+    bool operator==(const Player &other);
+    QString toString() const;
+
 private:
     QString m_name;
     Color m_color;
--- trunk/playground/games/kigo/src/main.cpp #915067:915068
@@ -38,7 +38,7 @@
  */
 int main(int argc, char *argv[])
 {
-    KAboutData aboutData("kigo", 0, ki18n("Kigo"), "v0.5",
+    KAboutData aboutData("kigo", 0, ki18n("Kigo"), "v0.5.1",
             ki18n("KDE Go Board Game"), KAboutData::License_GPL_V3,
             ki18n("Copyright (c) 2008 Sascha Peilicke"));
     aboutData.addAuthor(ki18n("Sascha Peilicke (saschpe)"), ki18n("Original author"),
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic