00001 #ifndef AI_INPUT_H
00002 #define AI_INPUT_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <kdebug.h>
00025
00026
00027 #include "abstractinput.h"
00028 #include "engine_two.h"
00029
00030
00034 class AiInput : public AbstractInput
00035 {
00036 Q_OBJECT
00037
00038 public:
00043 AiInput(EngineTwo* engine, QObject* parent);
00044
00048 void setInputAllowed(bool allowed);
00049
00053 virtual InputDevice::InputDeviceType type() {return InputDevice::TypeAiInput;}
00054
00055
00056 public slots:
00059 void aiTurn();
00060
00061 private:
00064 class Board
00065 {
00066 public:
00068 Board() {}
00072 Board(const Board& board);
00074 int cards[2][16];
00076 int playedCard;
00078 int points[2];
00080 int whoseTurn;
00082 bool firstPlay;
00083 };
00086 class Move
00087 {
00088 public:
00090 double value;
00092 int move;
00093 };
00094
00095
00096 protected:
00100 Board getBoardFromEngine();
00101
00107 Move initiateMove(int p, const Board& board);
00108
00114 Move answerMove(int p, const Board& board);
00115
00121 double evaluteGame(int p, const AiInput::Board current);
00122
00123 private:
00125 EngineTwo* mEngine;
00126 };
00127
00128 #endif