博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
#在蓝懿学习iOS的日子#Day6
阅读量:4561 次
发布时间:2019-06-08

本文共 3156 字,大约阅读时间需要 10 分钟。

#在蓝懿学习iOS的日子#Day6

 今天上午讲了多态,多态主要讲了一个性质:父类生成的对象可以用子类来初始化,而子类声明的对象不能用父类来初始化,举个例子:person为父类,man 和woman为person的两个子类,woman可以来初始化person声名的对象,而person却不能初始化woman声明的对象,这是由于woman具有父类person具有的一切属性和方法,而person却不一定具有woman的特性与方法,所以不能初始化子类woman声明的对象;

 self.d =self.bulletCountLabel.text.intValue;

    //当子弹小于0,程序不再运行

    ifself.d >0) {

for(inti = 0;i<<span style="font-variant-ligatures: no-common-ligatures;color: #272ad8">3; i++) {

      NSString* c = bs;

      NSLog(@"%@",c);

   }

   //遍历数组第二种方法

   for(NSString*d inbs) {

      NSLog(@"%@",d);

   }

作业步骤:

1.创建一个父类僵尸Zomb 在父类僵尸中写换图片和移动僵尸的代码 把多种僵尸间不同的图片用一个变量来表示  把速度也用一个变量speed表示

- (instancetype)initWithFrame:(CGRect)frame

{

    self = [super initWithFrame:frame];

    if (self) {

        [NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(addZomb) userInfo:nil repeats:YES];

    }

    return self;

}

-(void)addZomb{

    UIImage *zombImage = [UIImage imageNamed:self.name];

    float w = zombImage.size.width/8;

    //截取

    CGImageRef subImage = CGImageCreateWithImageInRect(zombImage.CGImage, CGRectMake(self.count++%8*w, 0, w, zombImage.size.height));

    self.image = [UIImage imageWithCGImage:subImage];

    

    CGImageRelease(subImage);

    

    //移动僵尸

    self.center = CGPointMake(self.center.x-self.speed, self.center.y);

 

}

2.创建子类僵尸ZombA-D  继承Zomb 在子类僵尸中给图片变量赋值 给speed赋值

 

{

    self = [super initWithFrame:frame];

    if (self) {

        self.name = @"zomb_0.png";

        self.speed = 1;

       

    }

    return self;

}

3.界面中添加一个发射按钮  

4.点击按钮的时候创建一个子弹ImageView 添加到界面中并且添加到一个属性数组中

 UIImageView *bulletIV = [[UIImageView alloc]initWithFrame:CGRectMake(160, 537, 20, 20)];

        bulletIV.image = [UIImage imageNamed:@"bullet_0.png"];

        [self.view addSubview:bulletIV];

 

5.在ViewDidLoad里面开启一个Timer 每隔一段时间去调用一个moveAction方法

[NSTimer scheduledTimerWithTimeInterval:.01 target:self selector:@selector(moveAction) userInfo:nil repeats:YES];

6.在moveAction方法中遍历每一个子弹 并移动子弹

 //

    for (UIImageView *b in self.bullets) {

        //移动子弹

        b.center = CGPointMake(b.center.x, b.center.y-10);

    }

7.在ViewDidload方法中 开启一个添加僵尸的Timer 每隔1秒钟随机添加一个僵尸,并且把添加到界面的僵尸添加到一个属性数组中

[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(addZomb) userInfo:nil repeats:YES];

8.在moveAction中 每移动完子弹  遍历数组中每一个僵尸和子弹数组中每一个子弹判断是否碰撞,如果碰撞 删除子弹和僵尸 并且从数组中删除 删除之后切记 return

 

for (UIImageView *b in self.bullets) {

    for (Zomb *z in self.zombs) {

 //子弹和僵尸不在屏幕中显示

                [b removeFromSuperview];

                [z removeFromSuperview];

                

                //从数组中删除

                [self.bullets removeObject:b];

                [self.zombs removeObject:z];

 

                //  因为forin循环中如果修改了数组继续遍历的话会导致系统崩掉  所以修改了的话就不能再继续遍历下去了

                return;//结束方法

            }

}

9.碰撞到僵尸的时候根据不同的僵尸类型统计得分 用一个label展示出来

 

int score  =self.scoreLabel.text.intValue;

 if (CGRectIntersectsRect(b.frame, z.frame)) {

                //NO.1

                switch (z.tag) {

                    case 0:

                        self.scoreLabel.text = @(score+1).stringValue;

                        break;

                    case 1:

                        self.scoreLabel.text = @(score+2).stringValue;

                        break;

                    case 2:

                        self.scoreLabel.text = @(score+3).stringValue;

                        break;

                    case 3:

                        self.scoreLabel.text = @(score+4).stringValue;

                        break;

                        

                }

10.发射一发子弹 让记录子弹数量的label -1   如果打到僵尸 再让label+1

 //子弹发射后数量-1

        

        self.bulletCountLabel.text = @(self.d -1).stringValue;

 //判断子弹和僵尸是否有交叉

self.bulletCountLabel.text = @(self.d++).stringValue;

 

11.每次发射子弹要判断 子弹数量是否大于0 大于0才允许发射

 self.d =self.bulletCountLabel.text.intValue;

    //当子弹小于0,程序不再运行

    ifself.d >0) {

}

转载于:https://www.cnblogs.com/odileye/p/4918725.html

你可能感兴趣的文章
实验四
查看>>
python,ModuleNotFoundError,is not a package
查看>>
mybatis 空字符串和0
查看>>
服务器上centos 7 配置静态IP
查看>>
C# unsafe模式内存操作深入探索
查看>>
Redis拾遗(一)
查看>>
js字符串转换为Json对象的三种写法
查看>>
Is it possible to display icons in a PopupMenu?
查看>>
Atitit.常见的4gl 第四代编程语言 与 dsl
查看>>
Atitit js es5 es6新特性 attilax总结
查看>>
JavaWeb学习记录(三)——网页中文编码问题
查看>>
$( document ).ready()&$(window).load()
查看>>
关于Baidu Map(百度地图SDK)的各种骚b问题!
查看>>
喜欢的一些话(不断更新)
查看>>
mysql 自动记录数据插入及最后修改时间
查看>>
c程序设计语言_习题1-9_将输入流复制到输出流,并将多个空格过滤成一个空格...
查看>>
ZT 80-90年代港台300部电视剧 你看过多少?
查看>>
C/C++关于全局变量和局部变量初始化与不初始化的区别
查看>>
题目1007:奥运排序问题
查看>>
爬虫实例——爬取1元夺宝用户头像(借助谷歌浏览器开发者工具)
查看>>