文件1):   mian . m: 
/* 
 项目名称: 玩转三国 
 类型: 策略性游戏 
 上次更新时间: 无 
 游戏功能: 群雄逐鹿,玩家选择操作一个君主,招募武将,发展城市,统一全国 
 游戏操作: 按游戏提示,进行操作 
 创建游戏内容: 1).城市:荆州,许昌,合肥, 君主(只显示君主所属武将,暂不显示君主): 刘备,曹操,孙坚 武         
                将: 关羽,夏侯惇,黄盖 
             2).占领全部城市为最终胜利,武将死亡为最终失败,每次战斗后,胜利方血量回满,城市归胜利武将占领,成为胜利武将君主的领土 
             3).战斗的胜负和血量,武力有关 
             4).失败可以选择重新开始 
 下期更新内容: 1>.君主出场,增加武将 
             2>.增加技能系统 
             3>.多人对战??????(待定) 
 目的: 利用已学的知识,做一个小模型,以便复习以前的知识和应用已学的知识;并逐渐丰满游戏. 
      开始只是连个图形都没有的简单玩具游戏,希望毕业那天成为一个真正的游戏 
 作者: 李言 
 日期: 2015.7.15 
 */ 
 
// 温馨提醒: 游戏时,请每次输入一个字符,然后敲回车键 
#import <Foundation/Foundation.h> 
#import "General.h" 
#import "City.h" 
#import "GM.h" 
 
int cityTotal = 3; 
void gameInit(); 
int main() { 
 
    City *jingZhou = [City alloc]; // 创建荆州 
    City *xuChang = [City alloc]; // 创建许昌 
    City *heFei = [City alloc]; // 创建合肥 
    General *MySelf; // 创建玩家角色 
    // 给玩家角色确定武将 
    MySelf = [GM systemInitGeneral:MySelf andCity:jingZhou andCity:xuChang andCity:heFei]; 
 
//    游戏控制 
    int flag2 = 1; 
    while (flag2) { 
        NSLog(@"您现在在%@,请选择您将要攻击城市:a:荆州,b:许昌,c:合肥,d:退出", MySelf.defendCity.cityName); 
        char flag3, ch2; 
        scanf("%c", &flag3); 
        scanf("%c", &ch2); 
        switch (flag3) { 
            case 'a': 
            case 'A': 
                if (MySelf.defendCity != jingZhou) { 
                    [MySelf attackCity:jingZhou]; 
                }else 
                    NSLog(@"您已经在%@了", MySelf.defendCity.cityName); 
                break; 
            case 'b': 
            case 'B': 
                if (MySelf.defendCity != xuChang) { 
                    [MySelf attackCity:xuChang]; 
                }else 
                    NSLog(@"您已经在%@了", MySelf.defendCity.cityName); 
                break; 
            case 'c': 
            case 'C': 
                if (MySelf.defendCity != heFei) { 
                    [MySelf attackCity:heFei]; 
                }else 
                    NSLog(@"您已经在%@了", MySelf.defendCity.cityName); 
                break; 
            case 'd': 
            case 'D': 
                NSLog(@"正在退出游戏..."); 
                NSLog(@"已经退出游戏!"); 
                flag2 = 0; 
                break; 
            default: 
                NSLog(@"没有找到该城市,请重新输入"); 
                break; 
        } 
//        游戏结束条件 
        if (MySelf.cityNum == cityTotal) { 
            NSLog(@"恭喜你,经过多年的征战,您统一了全国"); 
            flag2 = 0; 
        }else if(MySelf.cityNum == 0){ 
            NSLog(@" "); 
            NSLog(@"将军! 很遗憾,您没能完成统一霸业..."); 
            NSLog(@"将军是否重整旗鼓, 东山再起?"); 
            NSLog(@" "); 
            NSLog(@"重来请输入:a,投子认输请输入:b."); 
            char again, ch4; 
            scanf("%c", &again); 
            scanf("%c", &ch4); 
//            重新开始,或者直接退出 
            switch (again) { 
                case 'a': 
                case 'A': 
                    MySelf = [GM systemInitGeneral:MySelf andCity:jingZhou andCity:xuChang andCity:heFei]; 
                    break; 
                case 'b': 
                case 'B': 
                    NSLog(@"正在退出..."); 
                    NSLog(@"已经退出!"); 
                    flag2 = 0; 
                    break; 
                default: 
                    break; 
            } 
        } 
    } 
    return 0; 
} 
文件2):    GeneralProtocol.h 
 
/** 
 *  武将行为的协议,武将类遵守这个协议,拥有这个协议的方法 
 */ 
#import <Foundation/Foundation.h> 
 
@class General; 
@class City; 
 
// 武将行为协议 
@protocol GeneralProtocol <NSObject> 
 
@required 
- (void)attackCity:(City *)city; // 攻击城市 
- (int)fightWithOtherGeneral:(General *)general; // 和武将交战 
 
//  初始化武将 
- (id)initWithGeneralName:(NSString *)generalName andMonarch:(NSString *)monarch andForce:(float)force andBlood:(float)blood andSkillValue:(float)skillValue andDefendCity:(City *)defendCity andCityNum:(int)cityNum; 
// 输出武将属性 
- (void)print; 
// 对战过程 
- (void)battleProcessWithOther:(General *)general; 
@end 
文件3):   GM.h 
 
/** 
 *  系统类的声明: 声明一些系统的行为 
 */ 
#import <Foundation/Foundation.h> 
#import "General.h" 
 
@interface GM : NSObject 
 
 // 城市和武将对象的创建 
+ (id)systemInitGeneral:(General *)MySelf andCity:(City *)city1 andCity:(City *)city2 andCity:(City *)city3; 
 
@end 
文件3):GM.h 
 
/** 
 *  系统行为的实现: 实现一些系统的方法 
 * 
 */ 
#import "GM.h" 
#import "General.h" 
#import "City.h" 
 
@implementation GM 
 
 // 城市和武将对象的创建 
+ (id)systemInitGeneral:(General *)MySelf andCity:(City *)city1 andCity:(City *)city2 andCity:(City *)city3{ 
 
    // 创建并初始化关羽 
    static General *guanYu; 
    guanYu = [[General alloc] initWithGeneralName:@"关羽" andMonarch:@"刘备" andForce:118 andBlood:1150 andSkillValue:50 andDefendCity:city1 andCityNum:1]; 
 
    // 创建并初始化夏侯惇 
    General *xiaHouDun = [[General alloc] initWithGeneralName:@"夏侯惇" andMonarch:@"曹操" andForce:101 andBlood:1020 andSkillValue:47 andDefendCity:city2 andCityNum:1]; 
 
    // 创建并初始化黄盖 
    General *huangGai = [[General alloc] initWithGeneralName:@"黄盖" andMonarch:@"孙坚" andForce:98 andBlood:1000 andSkillValue:51 andDefendCity:city3 andCityNum:1]; 
 
    // 初始化荆州 
    city1 = [city1 initWithCityName:@"荆州" andDefendGeneral:guanYu]; 
 
    // 初始化许昌 
    city2 = [city2 initWithCityName:@"许昌" andDefendGeneral:xiaHouDun]; 
     
    // 初始化合肥 
    city3 = [city3 initWithCityName:@"合肥" andDefendGeneral:huangGai]; 
 
    // 选择武将,后输出武将属性,返回武将 
    int flag4 = 1; 
    while (flag4) { 
        char flag1, ch; 
        NSLog(@"请选择武将:a.关羽,b.夏侯惇,c.黄盖"); 
        scanf("%c", &flag1); 
        scanf("%c", &ch); 
        switch (flag1) { 
            case 'a' : 
            case 'A': 
                MySelf = guanYu; 
                NSLog(@"您选择了武将关羽!"); 
                [MySelf print]; 
                flag4 = 0; 
                break; 
            case 'b' : 
            case 'B': 
                MySelf = xiaHouDun; 
                NSLog(@"您选择了武将夏侯惇!"); 
                [MySelf print]; 
                flag4 = 0; 
                break; 
            case 'c' : 
            case 'C': 
                MySelf = huangGai; 
                NSLog(@"您选择了武将黄盖!"); 
                [MySelf print]; 
                flag4 = 0; 
                break; 
            default: 
                NSLog(@"没有该武将,请重新输入!"); 
                break; 
         } 
    } 
    return MySelf; 
} 
 
@end 
 |   
        
 
    
    
    
     
 
 |