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 *******************************************************************/
28 #include "GameMatrix.h"
35 friend class ThreatSearchAI
;
36 friend class CCThreatSearchAI
;
37 TEST_FRIEND(ThreatTest
)
42 enum Direction
{DIR_X
, DIR_Y
, DIR_Z
};
45 Threat(ThreatSearchAI
*ai
);
47 void insert(Point point
);
48 void scanFromMatrix();
55 virtual void insertHook(Point p
);
56 virtual void scanFromMatrixHook();
59 QMap
<Point
, Node
*> _x
;
60 QMap
<Point
, Node
*> _y
;
61 QMap
<Point
, Node
*> _z
;
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
76 Threat::Direction dir
;
79 Node(int val
, Point p
, Direction dir
);