[go: up one dir, main page]

Menu

[r14]: / ai / trunk / aiplayer.h  Maximize  Restore  History

Download this file

75 lines (67 with data), 2.1 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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
63
64
65
66
67
68
69
70
71
72
73
74
//
// C++ Interface: aiplayer
//
// Description:
//
//
// Author: Hendrik Hochstetter <hochsthk@studi.informatik.uni-stuttgart.de>, (C) 2008
//
// Copyright: See COPYING file that comes with this distribution
//
//
#ifndef _AIPLAYER_H
#define _AIPLAYER_H
#include "globals.h"
#include "aibrain.h"
#include <cheppcl.h>
#include <transfer.hpp>
#include <QtCore/QThread>
#include <QtCore/QString>
#include <QtCore/QChar>
class QTimer;
/**
* @brief Player klasse, tritt als player spielen bei und startet die eigentlich KI
* @details Alle AiPlayer werden vom AiManager gestartet, als Parameter werden an
* den Konstruktor die AiSettings des Managers übergeben, der Name des Spiels in dem
* der AiPlayer spielen bzw. dem der AiPlayer beitreten soll und die Farbe.
* Ist die KI dem Spiel noch nicht als Spieler beigetreten erledigt das der AiPlayer.
* Ist dir KI im Spiel bereits als Spieler aktiv wird ein neues AiBrain objekt angelegt,
* das aus den Daten vom Server einen Zug berechnet und dann an den Server schickt.
* AiPlayer kehrt nach dem emiten des Signals returning(QString), das dem AiManager mitteilt,
* dass der AiPlayer, der in dem Spiel war, dessen Name im Signal als Parameter übergeben
* wird, nach Erhalten des Signals finished() gelöscht werden soll, zurück.
**/
class AiPlayer : public QThread
{
Q_OBJECT
public:
AiPlayer (QObject *parent = 0, AiSettings settings = AiSettings (), QString game = "", QChar colour = ' ');
void run ();
QString getGame () { return game; };
QChar getColour () { return colour; };
private:
AiSettings aiSettings;
AiBrain *aiBrain;
Position position;
QTimer *timer;
Cheppcl *cheppcl;
QString game;
QChar colour;
int aiStatus;
QList<figur_im_spiel> pieces;
QList<zug> moves;
/**
* @brief 0 wenn Server auf letzte anfrage reagiert hat, sonst anzahl der fehlversuche.
**/
int serverConnection;
private slots:
void receive (const CheppResponse *rspns);
void wakeUp ();
void clientFinished ();
void finishing ();
void moveCalculated ();
signals:
void send (const CheppCommand*);
void returning (QString);
};
#endif