kreversihumanplayer.cpp 1.7 KB
Newer Older
Denis Kuplyakov's avatar
Denis Kuplyakov committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
/*******************************************************************
 *
 * Copyright 2013 Denis Kuplyakov <dener.kup@gmail.com>
 *
 * This file is part of the KDE project "KReversi"
 *
 * KReversi is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * KReversi is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with KReversi; see the file COPYING.  If not, write to
 * the Free Software Foundation, 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301, USA.
 *
 ********************************************************************/

24
#include "kreversihumanplayer.h"
Denis Kuplyakov's avatar
Denis Kuplyakov committed
25

Laurent Montel's avatar
Laurent Montel committed
26
KReversiHumanPlayer::KReversiHumanPlayer(ChipColor color, const QString &name):
Denis Kuplyakov's avatar
Denis Kuplyakov committed
27
    KReversiPlayer(color, name, true, true)
Denis Kuplyakov's avatar
Denis Kuplyakov committed
28 29 30 31 32 33 34 35
{
}

void KReversiHumanPlayer::prepare(KReversiGame* game)
{
    // ready to start
    m_game = game;
    m_state = WAITING;
36

37
    Q_EMIT ready();
Denis Kuplyakov's avatar
Denis Kuplyakov committed
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
}

void KReversiHumanPlayer::takeTurn()
{
    m_state = THINKING;
}

void KReversiHumanPlayer::skipTurn()
{
    m_state = WAITING; // waiting for opponent move
}

void KReversiHumanPlayer::gameOver()
{
    m_state = UNKNOWN; // game ended
}

void KReversiHumanPlayer::onUICellClick(KReversiPos pos)
{
    if (m_state != THINKING) {
        // it is not our turn ignore it
        return;
    }

    m_state = WAITING;
63
    Q_EMIT makeMove(KReversiMove(m_color, pos));
Denis Kuplyakov's avatar
Denis Kuplyakov committed
64
}