Tentative Randomless-Entropy variant.
[tagua/yd.git] / src / variants / randomless-entropy / stone.cpp
blob4fd38c1bfa47a320ce6d0243457387f1342cb163
1 /*
2 Copyright (c) 2007 Paolo Capriotti <p.capriotti@gmail.com>
3 (c) 2007 Maurizio Monge <maurizio.monge@kdemail.net>
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9 */
11 #include "stone.h"
13 namespace RandomlessEntropy {
15 Stone::Stone() {
16 const MoveDefinition movesDefinition[] = {
17 {-1, 0, 0 },
18 { 1, 0, 0 },
19 { 0, 1, 0 },
20 { 0, -1, 0 },
23 for (unsigned i = 0; i < sizeof(movesDefinition)/sizeof(movesDefinition[0]); i++)
24 m_moveDefinitions.push_back(movesDefinition[i]);
27 QString Stone::name() const { return "stone" + m_color; }
29 const std::vector<MoveDefinition> * const Stone::movesDefinitions() const {
30 return &m_moveDefinitions;
33 int Stone::index() const { return m_color; }
35 // FIXME: parametrize number of colors
36 // FIXME: find a way to set m_color in Stone constructor instead
37 Stone* Stone::color(unsigned color) {
38 static Stone s_instance[3];
39 static bool colors_initialized = false;
40 if (!colors_initialized) {
41 for (int i=0; i<3;i++)
42 s_instance[i].m_color = i;
45 return &s_instance[color];