This is Risk.m in view mode; [Download] [Up]
// // This file is a part of Risk by Mike Ferris. // #import "Risk.h" RCSID ("$Id: Risk.m,v 1.1.1.1 1997/12/09 07:18:55 nygard Exp $"); #import <AppKit/AppKit.h> int RiskInitialArmyCountForPlayers (int playerCount) { int armyCountForTotalPlayers[7] = {0, 0, 60, 35, 30, 25, 20}; NSCAssert (playerCount >= 2 && playerCount < 7, @"Player count out of range."); return armyCountForTotalPlayers[playerCount]; } //---------------------------------------------------------------------- InitialCountryDistribution initialCountryDistributionFromString (NSString *str) { InitialCountryDistribution dist; if ([str isEqualToString:DV_PlayerChosen] == YES) { dist = PlayerChosen; } else if ([str isEqualToString:DV_RandomlyChosen] == YES) { dist = RandomlyChosen; } else { NSLog (@"Invalid InitialContryDistribution: %@", str); dist = PlayerChosen; } return dist; } //---------------------------------------------------------------------- InitialArmyPlacement initialArmyPlacementFromString (NSString *str) { InitialArmyPlacement placement; if ([str isEqualToString:DV_PlaceByOnes] == YES) { placement = PlaceByOnes; } else if ([str isEqualToString:DV_PlaceByThrees] == YES) { placement = PlaceByThrees; } else if ([str isEqualToString:DV_PlaceByFives] == YES) { placement = PlaceByFives; } else { NSLog (@"Invalid InitialArmyPlacement: %@", str); placement = PlaceByThrees; } return placement; } //---------------------------------------------------------------------- CardSetRedemption cardSetRedemptionFromString (NSString *str) { CardSetRedemption redemption; if ([str isEqualToString:DV_RemainConstant] == YES) { redemption = RemainConstant; } else if ([str isEqualToString:DV_IncreaseByOne] == YES) { redemption = IncreaseByOne; } else if ([str isEqualToString:DV_IncreaseByFive] == YES) { redemption = IncreaseByFive; } else { NSLog (@"Invalid CardSetRedemption: %@", str); redemption = RemainConstant; } return redemption; } //---------------------------------------------------------------------- FortifyRule fortifyRuleFromString (NSString *str) { FortifyRule fortifyRule; if ([str isEqualToString:DV_OneToOneNeighbor] == YES) { fortifyRule = OneToOneNeighbor; } else if ([str isEqualToString:DV_OneToManyNeighbors] == YES) { fortifyRule = OneToManyNeighbors; } else if ([str isEqualToString:DV_ManyToManyNeighbors] == YES) { fortifyRule = ManyToManyNeighbors; } else if ([str isEqualToString:DV_ManyToManyConnected] == YES) { fortifyRule = ManyToManyConnected; } else { NSLog (@"Invalid FortifyRule: %@", str); fortifyRule = OneToOneNeighbor; } return fortifyRule; } //---------------------------------------------------------------------- NSString *NSStringFromInitialCountryDistribution (InitialCountryDistribution countryDistribution) { NSString *strings[] = { DV_PlayerChosen, DV_RandomlyChosen }; return strings[countryDistribution]; } //---------------------------------------------------------------------- NSString *NSStringFromInitialArmyPlacement (InitialArmyPlacement armyPlacement) { NSString *strings[] = { DV_PlaceByOnes, DV_PlaceByThrees, DV_PlaceByFives }; return strings[armyPlacement]; } //---------------------------------------------------------------------- NSString *NSStringFromCardSetRedemption (CardSetRedemption cardSetRedemption) { NSString *strings[] = { DV_RemainConstant, DV_IncreaseByOne, DV_IncreaseByFive }; return strings[cardSetRedemption]; } //---------------------------------------------------------------------- NSString *NSStringFromFortifyRule (FortifyRule fortifyRule) { NSString *strings[] = { DV_OneToOneNeighbor, DV_OneToManyNeighbors, DV_ManyToManyNeighbors, DV_ManyToManyConnected }; return strings[fortifyRule]; } //---------------------------------------------------------------------- NSString *NSStringFromRiskCardType (RiskCardType cardType) { NSString *str; str = nil; switch (cardType) { case Wildcard: str = @"Wildcard"; break; case Soldier: str = @"Soldier"; break; case Cannon: str = @"Cannon"; break; case Cavalry: str = @"Cavalry"; break; default: NSLog (@"Unknown card type: %d", cardType); str = @"<Unknown>"; } return str; } //---------------------------------------------------------------------- NSString *NSStringFromGameState (GameState gameState) { NSString *str; switch (gameState) { case gs_no_game: str = @"No game"; break; case gs_establishing_game: str = @"Establishing Game"; break; case gs_choose_countries: str = @"Choose Countries"; break; case gs_place_initial_armies: str = @"Place Initial Armies"; break; case gs_place_armies: str = @"Place Armies"; break; case gs_attack: str = @"Attack"; break; case gs_move_attacking_armies: str = @"Move Attacking Armies"; break; case gs_fortify: str = @"Fortify Position"; break; case gs_place_fortifying_armies: str = @"Place Fortifying Armies"; break; default: NSLog (@"Unknown game state: %d", gameState); str = nil; break; } return str; } //---------------------------------------------------------------------- NSString *gameStateInfo (GameState gameState) { NSString *str; switch (gameState) { case gs_no_game: str = @"No game..."; break; case gs_establishing_game: str = @"Establishing game..."; break; case gs_choose_countries: str = @"Before play begins, take turns choosing the countries on the board."; break; case gs_place_initial_armies: str = @"The game begins by players taking turns placing their initial armies a few at a time."; break; case gs_place_armies: str = @"Begin your turn by placing new armies and possibly turning in cards."; break; case gs_attack: str = @"Attack opponent's countries which border on your own countries."; break; case gs_move_attacking_armies: str = @"You have conquered a country. Now place the available armies in either the attacking or the conquered countries."; break; case gs_fortify: str = @"Fortify your position at the end of your move by shifting armies."; break; case gs_place_fortifying_armies: // Should be based on current rule. str = @"Fortify the armies into the source country or any neighboring countries you control."; break; default: NSLog (@"Unknown game state: %d", gameState); str = nil; break; } return str; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.