Added SuggesterTest and fixed coding style in sources
[GoMoku3D.git] / src / ai / Threat.h
blob45c0109a09e6b9c2e92891450cd6aba4a4b1abe1
1 /********************************************************************
3 * Copyright (C) 2008 Daniele Battaglia
5 * This file is part of GoMoku3D.
7 * GoMoku3D is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
12 * GoMoku3D 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.
17 * You should have received a copy of the GNU General Public License
18 * along with GoMoku3D. If not, see <http://www.gnu.org/licenses/>.
20 *******************************************************************/
22 #ifndef THREAT_H
23 #define THREAT_H
25 #include <QMap>
26 #include <QList>
28 #include "GameMatrix.h"
29 #include "Point.h"
31 class ThreatSearchAI;
33 class Threat
35 friend class ThreatSearchAI;
36 friend class CCThreatSearchAI;
37 TEST_FRIEND(ThreatTest)
39 private:
40 class Node;
41 public:
42 enum Direction{DIR_X, DIR_Y, DIR_Z};
44 public:
45 Threat(ThreatSearchAI *ai);
46 virtual ~Threat();
47 void insert(Point point);
48 void scanFromMatrix();
50 protected:
51 ThreatSearchAI *_ai;
52 GameMatrix *_mat;
53 int _d1;
54 int _d2;
55 virtual void insertHook(Point p);
56 virtual void scanFromMatrixHook();
58 private:
59 QMap<Point, Node*> _x;
60 QMap<Point, Node*> _y;
61 QMap<Point, Node*> _z;
62 Node **_priority;
63 void evalInsert(Point p, int index, Direction dir);
64 int evalPriority(Point p, Direction dir) const;
65 void insertInPriority(Node *it);
66 void removeFromPriority(Node *it);
67 QList<Point> findEmptyPoints(Node *node); //cerca le posizioni vuote e le ritorna in lista
70 private:
71 class Node
73 public:
74 int value;
75 Point point;
76 Threat::Direction dir;
77 Node **par;
78 Node *next;
79 Node(int val, Point p, Direction dir);
80 ~Node();
84 #endif