黑马程序员技术交流社区

标题: 自己写的一个策略游戏雏形->玩转三国--->>>(程序第一部分) [打印本页]

作者: 李言    时间: 2015-7-16 18:27
标题: 自己写的一个策略游戏雏形->玩转三国--->>>(程序第一部分)
文件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

作者: 李言    时间: 2015-7-16 18:32
表情:(是:  (
表情:@是 :  @
作者: zpy_0806    时间: 2015-7-16 18:35
绝壁大牛啊
作者: aludiba    时间: 2015-7-16 18:45
厉害啊,好流弊
作者: 李言    时间: 2015-7-16 21:25
zpy_0806 发表于 2015-7-16 18:35
绝壁大牛啊

--没有了:)
作者: 2899028818    时间: 2015-7-17 08:27
给顶了。。。。。
作者: 菜鸟一枚    时间: 2015-7-17 10:44
好流弊啊
作者: China_Riven    时间: 2015-7-17 12:50
有点小厉害




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2