#include <rules.h>
Public Methods | |
| Rules (void) | |
| int | SpyCaught (void) |
| void | NewTurn (void) |
| void | UpdateSpyPos (PosType locus) |
| int | NumTurns (void) |
| int | CurrentTurn (void) |
| MoveList * | GetLegalMoves (Player &dude) |
| PosType | ShowSpy (void) |
| preyass | GameOver (void) |
| PosType | RandomPos (void) |
| int | SpyLastX (void) |
| int | SpyLastY (void) |
| int | StartingTokens (TokenType identity) |
Private Methods | |
| bool | NoTurnsLeft (void) |
| bool | DetectivesTrapped (void) |
| Move * | Rules::CanGo (int taxi, int bus, int subway, PosType source, PosType dest) |
| bool | Occupato (PosType birdsplat) |
Private Attributes | |
| int | turn |
| int | tachymetabolic |
| int | endothermy |
|
|
Definition at line 32 of file rules.h. References endothermy, tachymetabolic, and turn.
00033 {
00034 turn = 0;
00035 tachymetabolic = theMap.max_x () / 2;
00036 endothermy = theMap.max_y () / 2;
00037 }
|
|
|
Definition at line 43 of file rules.h. References turn. Referenced by main().
00043 { return turn; } // Turn, turn, turn
|
|
|
Definition at line 14 of file rules.c. References False, GetLegalMoves(), MoveList::Length(), and True. Referenced by GameOver().
00015 {
00016 int counter;
00017 MoveList *steinBrenner; // YOU got a better name?
00018
00019 for (counter = 1; counter < NumPlayers; counter++)
00020 {
00021 steinBrenner = GetLegalMoves (*thePlayers [counter]);
00022 if (steinBrenner->Length ()) return False;
00023 }
00024 return True;
00025 }
|
|
|
Definition at line 168 of file rules.c. References DetectivesTrapped(), NoTurnsLeft(), preyass, SpyCaught(), and spyWins. Referenced by main().
00169 {
00170 preyass sleuth;
00171
00172 /* All right. Here's the deal with the return value of this
00173 function. First, it's called "prey ass" because it describes
00174 the game's end. Get it? I tought you would.
00175
00176 Now, if the spy wins, it returns -1. Why? Because I said so,
00177 that's why! If the game isn't done yet it returns "notYet"
00178 (duh). If a detective wins, it returns his number in the
00179 array (so, if detective 3 wins, it returns 3. It's amazing). */
00180
00181 if (NoTurnsLeft ()) return spyWins;
00182 if (DetectivesTrapped ()) return spyWins;
00183 return (preyass) SpyCaught ();
00184 }
|
|
|
Definition at line 113 of file rules.c. References Bus, Player::GetPosition(), Player::NumTokens(), Occupato(), PosType, Subway, and Taxi. Referenced by DetectivesTrapped().
00114 {
00115 Move *nextMove; // These get added into the list
00116 MoveList *congaLine; // Nuke () works on empty list?
00117 PosType position; // Where is our frothing fiend?
00118 int busTokens; // How many taxi tokens this guy has
00119 int taxiTokens; // Duh, I wonder what she's
00120 int subwayTokens; // talking about, Norm!
00121 int counter, city, limit; // Austin City Limits :-)
00122 bool blocked; // Cannot stack detectives in cities
00123
00124 congaLine = new MoveList;
00125 position = dude.GetPosition ();
00126 taxiTokens = dude.NumTokens (Taxi);
00127 busTokens = dude.NumTokens (Bus);
00128 subwayTokens = dude.NumTokens (Subway);
00129 limit = theMap.num_connections (position);
00130 for (counter = 0; counter < limit; counter++)
00131 {
00132 city = theMap.connected_to (position, counter);
00133 nextMove = CanGo (taxiTokens, busTokens, subwayTokens, position, city);
00134 blocked = Occupato (city);
00135 if (blocked) // Oh, no. We gotta go, me-oh-my-oo.
00136 {
00137 delete nextMove;
00138 nextMove = NULL;
00139 }
00140 if (nextMove) congaLine -> Append (nextMove);
00141 }
00142 return congaLine;
00143 }
|
|
|
Definition at line 40 of file rules.h. References turn. Referenced by main().
00040 { turn++; } // Use Gritto, radio friends
|
|
|
Definition at line 24 of file rules.h. References bool, MAXTURNS, and turn. Referenced by GameOver().
|
|
|
Definition at line 42 of file rules.h. References MAXTURNS.
00042 { return MAXTURNS; } // To everything
|
|
|
Definition at line 100 of file rules.c. References False, PosType, and True. Referenced by GetLegalMoves().
|
|
|
Definition at line 41 of file rules.c. References False, max(), MAXPLAYERS, PosType, and True.
00042 {
00043 static playPosition [MAXPLAYERS];
00044 static int nextPlayer = 0;
00045 int min, max, counter, ok = False;
00046 PosType randPos;
00047
00048 max = theMap.num_nodes ();
00049 while (!ok)
00050 {
00051 randPos = (Random * max) + 1;
00052 ok = True;
00053 while ((ok) && (counter < nextPlayer))
00054 if (randPos == playPosition [counter++]) ok = False;
00055 if (ok) playPosition [nextPlayer++] = randPos;
00056 }
00057 return randPos;
00058 }
|
|
||||||||||||||||||||||||
|
|
|
|
Definition at line 151 of file rules.c. References PosType, theSpy, and UpdateSpyPos().
00152 {
00153 PosType serve;
00154
00155 switch (turn)
00156 {
00157 case 2 :
00158 case 7 :
00159 case 12 :
00160 case 17 :
00161 case 22 : serve = thePlayers [theSpy] -> GetPosition ();
00162 UpdateSpyPos (serve);
00163 return serve; // tennis, anyone?
00164 default: return 0;
00165 }
00166 }
|
|
|
Definition at line 27 of file rules.c. References False, PosType, and theSpy. Referenced by GameOver(), and main().
00028 {
00029 PosType spyPos, sleuthPos;
00030 int counter;
00031
00032 spyPos = thePlayers [theSpy] -> GetPosition ();
00033 for (counter = 1; counter < NumPlayers; counter++)
00034 {
00035 sleuthPos = thePlayers [counter] -> GetPosition ();
00036 if (spyPos == sleuthPos) return counter;
00037 }
00038 return False;
00039 }
|
|
|
Definition at line 48 of file rules.h. References tachymetabolic.
00048 {return tachymetabolic;} // And a time to every
|
|
|
Definition at line 49 of file rules.h. References endothermy.
00049 { return endothermy; } // Purpose under Heaven
|
|
|
Definition at line 60 of file rules.c. References Bus, NUM_BUS_TOKENS, NUM_SUBWAY_TOKENS, NUM_TAXI_TOKENS, Subway, Taxi, and TokenType.
00061 {
00062 switch (identity)
00063 {
00064 case Subway: return NUM_SUBWAY_TOKENS;
00065 case Taxi: return NUM_TAXI_TOKENS;
00066 case Bus: return NUM_BUS_TOKENS;
00067 default : return 0; // F---ing compiler!!!!!!!!!
00068 }
00069 }
|
|
|
Definition at line 145 of file rules.c. References endothermy, PosType, and tachymetabolic. Referenced by ShowSpy().
00146 {
00147 tachymetabolic = theMap.x (locus);
00148 endothermy = theMap.y (locus);
00149 }
|
|
|
Definition at line 22 of file rules.h. Referenced by Rules(), SpyLastY(), and UpdateSpyPos(). |
|
|
Definition at line 22 of file rules.h. Referenced by Rules(), SpyLastX(), and UpdateSpyPos(). |
|
|
Definition at line 21 of file rules.h. Referenced by CurrentTurn(), NewTurn(), NoTurnsLeft(), and Rules(). |
1.2.15