• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdegames API Reference
  • KDE Home
  • Contact Us
 

kigo

  • sources
  • kde-4.14
  • kdegames
  • kigo
  • src
  • gui
  • widgets
gamewidget.cpp
Go to the documentation of this file.
1 /*
2  Copyright 2008 Sascha Peilicke <sasch.pe@gmx.de>
3 
4  This program is free software; you can redistribute it and/or
5  modify it under the terms of the GNU General Public License as
6  published by the Free Software Foundation; either version 2 of
7  the License or (at your option) version 3 or any later version
8  accepted by the membership of KDE e.V. (or its successor approved
9  by the membership of KDE e.V.), which shall act as a proxy
10  defined in Section 14 of version 3 of the license.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20 
21 #include "gamewidget.h"
22 #include "game/game.h"
23 #include "game/stone.h"
24 #include "preferences.h"
25 
26 #include "gui/graphicsview/themerenderer.h"
27 
28 #include <KDebug>
29 
30 namespace Kigo {
31 
32 GameWidget::GameWidget(Game *game, QWidget *parent)
33  : QWidget(parent), m_game(game)
34 {
35  Q_ASSERT(m_game);
36  setupUi(this);
37 
38  finishButton->setIcon(KIcon( QLatin1String( "media-playback-stop" )));
39 
40  connect(m_game, SIGNAL(boardInitialized()), this, SLOT(init()));
41  connect(m_game, SIGNAL(boardChanged()), this, SLOT(update()));
42  connect(m_game, SIGNAL(consecutivePassMovesPlayed(int)), this, SLOT(enableFinishButton()));
43  connect(finishButton, SIGNAL(clicked()), this, SLOT(finishButtonClicked()));
44 }
45 
46 void GameWidget::init()
47 {
48  if (!m_game->isRunning()) {
49  kDebug() << "Game is not running, no information update";
50  return;
51  }
52 
53  if (Preferences::whitePlayerHuman()) {
54  whiteNameLabel->setText(Preferences::whitePlayerName());
55  } else {
56  whiteNameLabel->setText(i18n("Computer (level %1)", Preferences::whitePlayerStrength()));
57  }
58  if (Preferences::blackPlayerHuman()) {
59  blackNameLabel->setText(Preferences::blackPlayerName());
60  } else {
61  blackNameLabel->setText(i18n("Computer (level %1)", Preferences::blackPlayerStrength()));
62  }
63  komiLabel->setText(QString::number(m_game->komi()));
64  handicapLabel->setText(i18np("%1 Stone", "%1 Stones", m_game->fixedHandicap()));
65 
66  QPixmap whiteStone = ThemeRenderer::self()->renderElement(Kigo::ThemeRenderer::WhiteStone, QSize(48, 48));
67  whiteStoneImageLabel->setPixmap(whiteStone);
68  QPixmap blackStone = ThemeRenderer::self()->renderElement(Kigo::ThemeRenderer::BlackStone, QSize(48, 48));
69  blackStoneImageLabel->setPixmap(blackStone);
70 
71  update();
72 }
73 
74 void GameWidget::update()
75 {
76  moveLabel->setText(QString::number(m_game->currentMoveNumber()));
77 
78  if (m_game->moves().size() > 0) {
79  Move last = m_game->lastMove();
80  if (last.player()->isWhite()) {
81  lastMoveLabel->setText(i18nc("Indication who played the last move", "%1 (white)", last.stone().toString()));
82  } else if (last.player()->isBlack()) {
83  lastMoveLabel->setText(i18nc("Indication who played the last move", "%1 (black)", last.stone().toString()));
84  } else {
85  lastMoveLabel->clear();
86  }
87  }
88 
89  if (m_game->currentPlayer().isWhite()) {
90  QPixmap whiteStone = ThemeRenderer::self()->renderElement(Kigo::ThemeRenderer::WhiteStone, QSize(64, 64));
91  currentPlayerImageLabel->setPixmap(whiteStone);
92  currentPlayerLabel->setText(i18n("White's turn"));
93  } else if (m_game->currentPlayer().isBlack()) {
94  QPixmap blackStone = ThemeRenderer::self()->renderElement(Kigo::ThemeRenderer::BlackStone, QSize(64, 64));
95  currentPlayerImageLabel->setPixmap(blackStone);
96  currentPlayerLabel->setText(i18n("Black's turn"));
97  } else {
98  currentPlayerLabel->clear();
99  }
100 
101  whiteCapturesLabel->setText(i18np("%1 capture", "%1 captures", m_game->captures(m_game->whitePlayer())));
102  blackCapturesLabel->setText(i18np("%1 capture", "%1 captures", m_game->captures(m_game->blackPlayer())));
103 }
104 
105 void GameWidget::finishButtonClicked()
106 {
107  finishButton->setEnabled(false);
108  emit finishClicked();
109 }
110 
111 void GameWidget::enableFinishButton()
112 {
113  finishButton->setEnabled(true);
114 }
115 
116 } // End of namespace Kigo
117 
118 #include "moc_gamewidget.cpp"
119 
Preferences::blackPlayerName
static QString blackPlayerName()
Get The name of the black player.
Definition: preferences.h:175
QWidget
Kigo::GameWidget::finishClicked
void finishClicked()
QWidget::setupUi
void setupUi(QWidget *widget)
Kigo::Move::stone
const Stone & stone() const
Definition: move.h:44
Kigo::Game::fixedHandicap
int fixedHandicap() const
Definition: game.h:148
Preferences::blackPlayerStrength
static int blackPlayerStrength()
Get The strength of the black player.
Definition: preferences.h:206
game.h
Kigo::GameWidget::GameWidget
GameWidget(Game *game, QWidget *parent=0)
Definition: gamewidget.cpp:32
Kigo::Game::whitePlayer
Player & whitePlayer()
Definition: game.h:160
QString::number
QString number(int n, int base)
Kigo::Game::lastMove
Move lastMove() const
Returns the last move made by either player.
Definition: game.cpp:509
themerenderer.h
Kigo::Move::player
const Player * player() const
Definition: move.h:43
Kigo::Game::komi
float komi() const
Definition: game.h:140
Preferences::blackPlayerHuman
static bool blackPlayerHuman()
Get Is black a human player?
Definition: preferences.h:156
Kigo::Game::isRunning
bool isRunning() const
Check whether the Game object is connected to a Go game, running and waiting for commands to be fed w...
Definition: game.h:99
Kigo::Game::captures
int captures(const Player &player)
List the number of captures taken by either player.
Definition: game.cpp:636
QPixmap
Kigo::Game::currentMoveNumber
int currentMoveNumber() const
Definition: game.h:171
QSize
preferences.h
Kigo::Game::blackPlayer
Player & blackPlayer()
Definition: game.h:162
Kigo::Game::moves
QList< Move > moves(const Player &player)
Returns a list of all moves by that player.
Definition: game.cpp:558
QLatin1String
Kigo::Player::isBlack
bool isBlack() const
Definition: player.h:72
Kigo::ThemeRenderer::self
static ThemeRenderer * self()
Only one ThemeRenderer is needed per application, this method returns the singleton self...
Definition: themerenderer.h:78
Kigo::ThemeRenderer::BlackStone
Definition: themerenderer.h:66
Kigo::GameWidget::init
void init()
Definition: gamewidget.cpp:46
Kigo::Game::currentPlayer
Player & currentPlayer()
Definition: game.h:158
Preferences::whitePlayerStrength
static int whitePlayerStrength()
Get The strength of the white player.
Definition: preferences.h:275
Kigo::Stone::toString
QString toString() const
Definition: stone.cpp:68
Kigo::Move
The Move class is a light-weight representation of a Go move (to be) made by a Go player...
Definition: move.h:36
gamewidget.h
Kigo::ThemeRenderer::WhiteStone
Definition: themerenderer.h:63
Kigo::Game
The Game class implements the Go game and acts as a wrapper around a remote Go Game game implementing...
Definition: game.h:60
Kigo::ThemeRenderer::renderElement
void renderElement(Element element, QPainter *painter, const QRectF &rect) const
Renders a specific element of the current SVG theme.
Definition: themerenderer.cpp:86
stone.h
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
Kigo::Player::isWhite
bool isWhite() const
Definition: player.h:71
Preferences::whitePlayerHuman
static bool whitePlayerHuman()
Get Is white a human player?
Definition: preferences.h:225
Preferences::whitePlayerName
static QString whitePlayerName()
Get The name of the white player.
Definition: preferences.h:244
Kigo::GameWidget::update
void update()
Definition: gamewidget.cpp:74
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:18:29 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kigo

Skip menu "kigo"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdegames API Reference

Skip menu "kdegames API Reference"
  • granatier
  • kapman
  • kblackbox
  • kgoldrunner
  • kigo
  • kmahjongg
  • KShisen
  • ksquares
  • libkdegames
  •   highscore
  •   libkdegamesprivate
  •     kgame
  • libkmahjongg
  • palapeli
  •   libpala

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal