黑马程序员技术交流社区
标题:
OC实例之士兵射击
[打印本页]
作者:
why19910522
时间:
2015-8-15 21:44
标题:
OC实例之士兵射击
/*
士兵开枪 枪射击子弹
枪类:
名称:Gun
属性:型号(_gunModel)
行为:射击
人类
名称:Soldier
属性:姓名(_name) life level(等级)
行为:跑 蹲 开枪 跳
子弹类(弹夹)
名称:Bullet
属性:子弹个数(_bulletCount),型号(_bulletModel)
要求士兵在射击的时候,不但要给一把枪,还要给 一个弹夹才能射击
子弹不能为负数
*/
#import <Foundation/Foundation.h>
//子弹类的声明
#pragma mark 子弹类的声明
@interface Bullet:NSObject
{
@public
// 子弹个数
int _bulletCount;
// 子弹型号
NSString * _bulletModel;
}
@end
//子弹类的实现
#pragma mark 子弹类的实现
@implementation Bullet
@end
#pragma mark -
//枪类的声明
#pragma mark 枪类的声明
@interface Gun:NSObject
{
@public
// 枪的型号
NSString * _gunModel;
}
//枪射击
-(void)shoot:(Bullet *)bullet;
@end
//枪类的实现
#pragma mark 枪类的实现
@implementation Gun
//枪射击的实现
-(void)shoot:(Bullet *)bullet{
if (bullet->_bulletCount > 0) {
bullet->_bulletCount -= 3;
NSLog(@"%@在突突突的射击,射击完成后子弹剩余%d发",_gunModel,bullet->_bulletCount);
}else{
NSLog(@"%@没有子弹了!赶紧换子弹!",_gunModel);
}
}
@end
#pragma mark -
//士兵类的声明
#pragma mark 士兵类的声明
@interface Soldier:NSObject
{
@public
// 姓名
NSString * _name;
// 血量
int _life;
// 等级
int _level;
}
//士兵类的行为
//跑
-(void)run;
//蹲
-(void)squat;
//开枪
-(void)fireByGun:(Gun *)gun andBullet:(Bullet *)bullet;
//跳
-(void)jump;
//换子弹
-(void)renewBullet:(Bullet *)bullet;
@end
//士兵类的实现
#pragma mark 士兵类的实现
@implementation Soldier
//跑的实现
-(void)run{
NSLog(@"%@!GO!GO!!GO!!!", _name);
}
//蹲的实现
-(void)squat{
NSLog(@"小心炮弹!蹲下,%@!",_name);
}
//开枪的实现
-(void)fireByGun:(Gun *)gun andBullet:(Bullet *)bullet{
NSLog(@"FIRE!!!");
[gun shoot:bullet];
}
//跳的实现
-(void)jump{
NSLog(@"%@,跳跳更健康...",_name);
}
//换子弹的实现
-(void)renewBullet:(Bullet *)bullet{
bullet->_bulletCount = 30;
NSLog(@"%@更换了子弹,目前子弹剩余%d发",_name,bullet->_bulletCount);
}
@end
int main (){
@autoreleasepool{
// 创建一个子弹类的对象
Bullet *bulletAUG = [Bullet new];
bulletAUG->_bulletModel = @"7mm机枪弹";
bulletAUG->_bulletCount = 30;
// 创建一个枪类的对象
Gun *gunAUG = [Gun new];
gunAUG->_gunModel = @"AUG";
// 创建一个士兵类的对象
Soldier *soldier = [Soldier new];
soldier->_name = @"Tom";
soldier->_life = 100;
soldier->_level = 1;
// 让士兵冲锋
[soldier run];
// 让士兵躲避炮弹
[soldier squat];
// 让士兵开火十一次
for (int i = 0; i < 11; i++) {
[soldier fireByGun:gunAUG andBullet:bulletAUG];
}
// 让士兵换子弹
[soldier renewBullet:bulletAUG];
// 让士兵跳一跳
[soldier jump];
}
return 0;
}
复制代码
作者:
愿得一人心1111
时间:
2015-8-15 22:22
好长的代码
作者:
墨琰
时间:
2015-8-15 22:37
真棒 加油
作者:
why19910522
时间:
2015-8-16 10:38
愿得一人心1111 发表于 2015-8-15 22:22
好长的代码
老师说这不算什么,我们以后会遇到好几千好几万行的代码......o(╯□╰)o
作者:
墨琰
时间:
2015-8-16 22:47
有没有人遛狗的那个代码
作者:
魏武
时间:
2015-8-16 22:49
hello 我来了
作者:
15095185209
时间:
2015-8-16 23:01
oc还没学到这里,先过来看下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2