OC应用:射击游戏

编程入门 行业动态 更新时间:2024-10-10 08:25:23

OC应用:<a href=https://www.elefans.com/category/jswz/34/1767335.html style=射击游戏"/>

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应用:射击游戏

本文发布于:2024-02-07 07:38:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1755099.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:射击游戏   OC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!