ScummVM API documentation
nim.h
1/* ScummVM - Graphic Adventure Engine
2 *
3 * ScummVM is the legal property of its developers, whose names
4 * are too numerous to list here. Please refer to the COPYRIGHT
5 * file distributed with this source distribution.
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program 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.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 */
21
22/*
23 * This code is based on the original source code of Lord Avalot d'Argent version 1.3.
24 * Copyright (c) 1994-1995 Mike, Mark and Thomas Thurman.
25 */
26
27#ifndef AVALANCHE_NIM_H
28#define AVALANCHE_NIM_H
29
30namespace Avalanche {
31
32class Nim {
33public:
35 void resetVariables();
36 void synchronize(Common::Serializer &sz);
37 void playNim();
38
39private:
40 AvalancheEngine *_vm;
41
42 static const char * const kNames[2];
43
44 byte _old[3];
45 byte _stones[3];
46 byte _turns;
47 bool _dogfoodsTurn;
48 byte _stonesLeft;
49 bool _clicked;
50 int8 _row;
51 byte _number;
52 bool _squeak;
53 byte _playedNim; // How many times you've played Nim.
54
55 // Inner variables for dogFood(), find() and findAp().
56 bool _inAp[3];
57 bool _lmo; // Let Me Out!
58 byte _r[3];
59
60 void chalk(int x, int y, Common::String text);
61 void setup();
62 void board();
63 void startMove();
64 void showChanges();
65 void blip();
66 void findNextUp(); // Inner function for checkInput().
67 void findNextDown(); // Same as above.
68 bool checkInput(); // It returns TRUE if the player confirmed his selection of stones either by pressing RETURN or by clicking on a stone.
69 void takeSome();
70 void endOfGame();
71 bool find(byte x); // This gives TRUE if there's a pile with x stones in.
72 void findAp(byte start, byte stepSize);
73 void dogFood(); // AI procedure to play the game.
74};
75
76} // End of namespace Avalanche
77
78#endif // AVALANCHE_NIM_H
Definition: avalanche.h:78
Definition: nim.h:32
Definition: serializer.h:80
Definition: str.h:59