射击游戏"/>
OC应用:射击游戏
在学OC基础视频过程中,将老师讲的例题改进了一下,写成了一个有意思的小游戏。想想还有点小激动呢……
/*
实现:射击游戏
1.弹夹类:
属性:型号,伤害,子弹数
行为:造成伤害
2.枪类:
属性:型号,弹夹
行为:发射子弹,装弹
3.士兵类:
属性:姓名,生命,等级
行为:跑,蹲,跳,开枪,被射,装弹,加血
*/
#import <Foundation/Foundation.h>
#pragma mark 弹夹
// 弹夹的声明
@interface Bullet : NSObject
{
@public
// 弹夹的成员变量
NSString *_size; // 型号
int _hurt; // 伤害
int _bulletCount; // 子弹数
}
// 子弹的行为
-(void)doHurt; //造成伤害
@end
// 子弹行为的实现
@implementation Bullet
//造成伤害
-(void)doHurt{
NSLog(@"%@造成了%d点伤害", _size, _hurt);
_bulletCount --;
NSLog(@"%@还剩%d颗", _size, _bulletCount);
}
@end
#pragma mark 枪类
// 枪类的声明
@interface Gun : NSObject
{
@public
// 枪类的成员变量
NSString *_name; // 型号
Bullet *_bullet; // 子弹
}
// 枪的行为
-(void)shootByBullet:(Bullet *)bullet; // 射击
-(void)reload; // 装弹
@end
// 枪类行为的实现
@implementation Gun
// 射击
-(void)shootByBullet:(Bullet *)bullet{
[bullet doHurt];
}
// 装弹
-(void)reload{
_bullet -> _bulletCount = 6;
NSLog(@"装弹完毕,%@内的%@数量为%d",_name, _bullet ->_size, _bullet ->_bulletCount);
}
@end
#pragma mark 士兵类
// 士兵类的声明
@interface Soldier : NSObject
{
@public
// 士兵类的成员变量
NSString *_name; // 姓名
int _life; // 生命
int _level; // 等级
}
// 士兵的行为
-(void)run; // 跑
-(void)squat; // 蹲
-(void)jump; // 跳
-(void)fire:(Soldier *)army ByGun:(Gun *)gun; // 开枪
-(void)shootedByBullet:(Bullet *)bullet; // 被射
-(void)reload:(Gun *)gun; // 装弹
-(void)cure; // 加血
@end
// 士兵行为的实现
@implementation Soldier
// 跑
-(void)run{
NSLog(@"%@跑", _name);
}
// 蹲
-(void)squat{
NSLog(@"%@蹲", _name);
}
// 跳
-(void)jump{
NSLog(@"%@跳", _name);
}
// 开枪
-(void)fire:(Soldier *)army ByGun:(Gun *)gun{
if (army ->_life > 0) {
if (gun ->_bullet ->_bulletCount > 0) {
NSLog(@"%@用%@射了%@",_name, gun ->_name, army ->_name);
[gun shootByBullet:gun ->_bullet];
[army shootedByBullet:gun ->_bullet];
} else{
NSLog(@"没子弹了还射个毛!赶紧按 R 键装填子弹");
}
} else{
NSLog(@"死了还要射?!!你个禽兽!!赶紧按 W 键给%@补血,补完还能继续射",army ->_name);
}
}
// 被射
-(void)shootedByBullet:(Bullet *)bullet{
NSLog(@"%@的生命值减少了%d点",_name, bullet ->_hurt);
_life -= bullet ->_hurt;
NSLog(@"%@的生命值还剩%d", _name, _life);
}
// 装弹
-(void)reload:(Gun *)gun{
NSLog(@"%@正在往%@里装填%@……", _name, gun ->_name, gun ->_bullet ->_size);
[gun reload];
}
// 加血
-(void)cure{
NSLog(@"%@吃药了,血量增加",_name);
_life += 30;
NSLog(@"%@当前血量为:%d",_name, _life);
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 创建子弹对象
Bullet *bullet1 = [Bullet new];
bullet1 -> _size = @"萝莉弹";
bullet1 -> _hurt = 10;
bullet1 -> _bulletCount = 6;
// 创建枪对象
Gun *gun1 = [Gun new];
gun1 -> _name = @"萝莉枪";
gun1 -> _bullet = bullet1;
// 创建士兵对象
Soldier *soldier1 = [Soldier new];
soldier1 -> _name = @"怪叔叔";
soldier1 -> _life = 100;
soldier1 -> _level = 2;
// 创建敌人对象
Soldier *loli =[Soldier new];
loli -> _name = @"小萝莉";
loli -> _life = 80;
// 提示用户输入指令
NSLog(@"请输入指令 d.跑 e.跳 s.蹲 f.开枪 r.装弹 w.加血");
// 循环控制
while (1) {
// 接收用户输入的指令
int command = getchar();
getchar();
// 根据指令执行相应动作
switch (command) {
case 'd':
[soldier1 run];
break;
case 'e':
[soldier1 jump];
break;
case 's':
[soldier1 squat];
break;
case 'f':
[soldier1 fire:loli ByGun:gun1];
break;
case 'r':
[soldier1 reload:gun1];
break;
case 'w':
[loli cure];
break;
case 'q':
NSLog(@"射累了,不射了。");
return 0;
break;
default:
break;
}
}
return 0;
}
}
更多推荐
OC应用:射击游戏
发布评论