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 
30 namespace Avalanche {
31 
32 class Nim {
33 public:
34  Nim(AvalancheEngine *vm);
35  void resetVariables();
36  void synchronize(Common::Serializer &sz);
37  void playNim();
38 
39 private:
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: str.h:59
Definition: animation.h:32
Definition: nim.h:32
Definition: avalanche.h:74
Definition: serializer.h:79