黑马程序员技术交流社区
标题:
自己写的一个策略游戏雏形->玩转三国--->>>(程序第一部分)
[打印本页]
作者:
李言
时间:
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