2015 IOS  植物大战僵尸初版——在蓝懿教育 学习笔记

创建僵尸类zomb,继承UIIV

把VC的即使时间timer放到僵尸类的初始化方法中

- (instancetype)initWithFrame:(CGRect)frame

{

self = [super initWithFrame:frame];

if (self) {

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

}

return self;

}

此时换图片的代码也搬到僵尸类中

-(void)changeImage{

//    截取图片

//

UIImage *zombImage = [UIImage imageNamed:@"zomb_2"];

float w = self.zombImage.size.width/8;

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

self.image = [UIImage imageWithCGImage:subImage];

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

}

但此时爆红,原因是没有吧zombIV去掉,以上是去掉zombIV的效果,因为这是他自身所以就不用署名,并且添加self。

此时还需要属性count。所以在。h中声明属性

@property (nonatomic)int count;

回到VC中可以删除创建僵尸的代码

并且import zomb。

在vc中写入

————————————

要创建多重僵尸的话,要继承与僵尸zomb

创建zombA。 并且在父类zomb初始化中删除创建的僵尸图片

UIImage *zombImage = [UIImage imageNamed:@"zomb_2"];————————删除!!!!!!!

(因为父类的作用是仅仅吧相同的东西提取出来)

——进入zomb。h中创建@property (n,,strong)UIIMage *zombImage;

——进入zombA。m中初始化给图片属性赋值

Self*zombImage = [UIImage imageNamed:@"zomb_0”];

——此时,只有给子类赋值才有有值,所以在VC中import ZombA 。h

在VDL中

此时可以创建B、C僵尸————————————————依然继承Zomb

唯一是图片不同,所以在初始化中更改图片

并且在VC中声明B和C类  并在VDL中复制两个Z2和Z3

此时可以设置ZombA *。。。中把A删掉,都改成Zomb *。。。

继承父类

此时僵尸要有速度,所以要在父类zomb中changeImage中的移动速度中的内容变成属性,变量,所以

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

所以要在。h中声明@property (nonatomic)float speed;

此时要在不同子类初始化中赋值speed 分别的速度 self。speed = 。。。

————————————此时僵尸如何添加就搞定——————————————

在VDL中设置添加僵尸事件timer

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

此时要让界面随机添加随机僵尸

首先先把屏幕横过来,(吧sb横过来,添加背景图片)

所以在方法中

-(void)addZomb{

int random = arc4random()%4; ————僵尸数量

Zomb *z = nil;

int line = arc4random()%5  + 1;

switch (random) {

case 0:

z = [[ZombA alloc]initWithFrame:CGRectMake(self.view.bounds.size.width或者320, line*50(一行的高度), 30, 50)];

break;

case 1:

z = [[ZombB alloc]initWithFrame:CGRectMake(self.view.bounds.size.width,line*50, 30, 50)];

break;

case 2:

z = [[ZombC alloc]initWithFrame:CGRectMake(self.view.bounds.size.width, line*50, 30, 50)];

break;

case 3:

z = [[ZombD alloc]initWithFrame:CGRectMake(self.view.bounds.size.width, line*50, 30, 50)];

break;

}

[self.view addSubview:z];

}

但此时界面中会卡死

所以要在zomb.m中添加

CGImageRelease(subImage);

————————————————此时添加僵尸成功——————————————

此时可以在界面sb中拖入上方的工具选择栏

以及Label计数

并添加UIIV

创建好UIIV关联:关联时关联其中一个 选择并且关联剩余三个成为数组

此时关联图片,但是素材图片是一条所有图,所以要裁减,并且取消100元的射手(因为素材有误)

———在VDL中初始化界面:建立方法initUI{},在里面截取图片,

首先取出图片,并且遍历(因为用到位置所以不能用forin)

-(void)initUI{

UIImage *plantsImage= [UIImage imageNamed:@"seedpackets"];

float w = plantsImage.size.width/18;

for (int i=0; i<self.plantIVs.count; i++) {

UIImageView *plantIV = self.plantIVs[i];

float x = 0;

switch (i) {

//            case 0:

//                x = 0;

//                break;

case 1:

x = 2*w;

break;

case 2:

x = 3*w;  N*W是取决于图片的位置

break;

case 3:

x = 5*w;

break;

}

CGImageRef(截取命令) subImage = CGImageCreateWithImageInRect(plantsImage.CGImage, CGRectMake(x, 0, w, plantsImage.size.height));

plantIV.image = [UIImage imageWithCGImage:subImage];

}

}

——————————————————此时可以创建植物类——————————

建立继承与UIIV的父类, plant

此时复制僵尸父类中的内容 改下名称 并且把speed删除

在。h中

@property (nonatomic, strong)UIImage *plantImage;

@property (nonatomic)int count;

并且改下。m中的名字plantimage

——————————然后创建向日葵,————————

创建向日葵类继承于plant的SunFlower

首先在初始化方法中更改图片内容

在VC中添加拖拽方法

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

——————————————————————————————————

其中在

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

UITouch *t = [touches anyObject];

————判断点击的位置是否点击到相应图片

CGPoint p = [t locationInView:self.view];

——用户点击的位置 = 图片的位置

for (UIImageView *plantIV in self.plantIVs) {

if (CGRectContainsPoint(plantIV.frame, p)) {—————— 判断点击的点有没有在植物当中

((( 此时给在sb中添加的四个IV添加标识 并添加tag

因为向日葵要拖拽移动而且不仅是向日葵需要拖动 所以就要导入植物父类并设置成属性:

@property (nonatomic, strong)Plant *dragPlant;)))

——————然后回到判断中

import sunFlower

switch (plantIV.tag) {

case 0:——向日葵

self.dragPlant = [[SunFlower alloc]initWithFrame:plantIV.frame];——设置大小与植物一样

break;

case 1:

self.dragPlant = [[SunFlower alloc]initWithFrame:plantIV.frame];

break;

case 2:

self.dragPlant = [[SunFlower alloc]initWithFrame:plantIV.frame];

break;

case 3:

self.dragPlant = [[SunFlower alloc]initWithFrame:plantIV.frame];

break;

}

[self.view addSubview:self.dragPlant];

}

}

}

————————————————————这只是向日葵的东西,——————————

但基本都一样生育三个

——————————————

此时要点击移动 所以进入

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

UITouch *t = [touches anyObject];

self.dragPlant.center = [t locationInView:self.view];

}

时间: 2024-12-19 07:28:57

2015 IOS  植物大战僵尸初版——在蓝懿教育 学习笔记的相关文章

2015 IOS 自定义cell成绩单——在蓝懿教育 学习笔记

1.sb中添加一个tv,箭头,Cell,创建tvc并关联 2.建立Student对象,在.h中建立字符串name,语数英: 3.在tvc创建数组,学生的对象, 初始化, 获取字符串和内容(txt 的文件) 分割字符串 遍历拿到每一行,拿到每一行再分割 每一行都要创建一个student, 每个学生的姓名 语数英分数 把创建好的学生对象添加到数组 4.行数,内容, 取出每行学生对象, 然后cell,textlabel.text  = .. 此时名称显示出来 5.创建tableviewCell 关联s

2015 IOS 制作通讯录——在蓝懿教育 学习笔记

来自蓝懿教育 学生笔记 1.删除界面中的vc,并且建立一个tablevc,在sb中创建navigation,并且关联TableView中的属性,并让箭头指向第一页面的navigation,并关联cell 2.拖拽界面view controller 建立一个personviewcontroller使之与sb中的关联, 3.在tablevc中建立左上角的加号 4.关联Personvc属性,并且在左上角加号中的事件方法中写入事件 5.删除vdidload中的多余行(留下添加右上角删除按钮代码): 6.

2015 IOS TableView ——在蓝懿教育 学习笔记

TableView   蓝懿教育 1首先创建 UITableView *tableView = [[UITableView alloc]initWithFrame:self.view.bounds]; tableView.dataSource = self; //dataSource 是数据源 [self.view addSubview:tableView]; 2创建协议 @interface ViewController ()<</span>UITableViewDataSource&

2015 IOS 文件管理器 ——在蓝懿教育 学习笔记

得到文件管理器   蓝懿教育 NSFileManager *fm = [NSFileManager defaultManager]; //    复制 //    [fm copyItemAtPath:@"/Users/ivan/Desktop/a.png" toPath:@"/Users/ivan/Desktop/copy/a.png" error:nil]; //    移动  移动的时候目的地不能有重名的 //    [fm moveItemAtPath:@&

2015 IOS 字典——在蓝懿教育 学习笔记

字典 NSMutableDictionary *dic = [NSM.. dictiongaryWithobject :@”  “ forKey:@“  “]: (实现了NSCopying的任意对象) dic setobject :@“” forKey :@“” .. @[  ]————数组的简写 注意 :字典是无序的. 创建页面跳转(用字典): 把vc 的字典搬到tvc 1.创建数组(不可变) 字典声明成属性 2.dic此时变为self.dic 3.行数self.dic.count 4.在行数

2015 IOS 地图——在蓝懿教育 学习笔记

1,在VC中添加地图界面MKMapView(全屏) 2.选工程界面相对应的界面中倒数第二行,Build Phases选项中 选择第三个 的+号,弹出来搜索框输入mapk,选择搜索结果确认添加,此时地图能显示出来. (3.在SB中的地图右侧选项有三个模式,(二维线路,卫星无线路,卫星有线路)) 4.关联代码在vc中关联myMV.但此时并不被系统识别,此时要添加import<MapKit/MapKit.h>协议,此时就被识别了 5.此时要从网络获取到经纬度,比如天安门经纬度, 此时要用到方法——创

2015 IOS 制作相册——在蓝懿教育 学习笔记

字典 NSMutableDictionary *dic = [NSM.. dictiongaryWithobject :@”  “ forKey:@“  “]: (实现了NSCopying的任意对象) dic setobject :@“” forKey :@“” .. @[  ]————数组的简写 注意 :字典是无序的. 创建页面跳转(用字典): 把vc 的字典搬到tvc 1.创建数组(不可变) 字典声明成属性 2.dic此时变为self.dic 3.行数self.dic.count 4.在行数

2015 IOS tabelView分组、Xib、Cell——在蓝懿教育 学习笔记

TabelView分组.表头,表尾 删除vc 搭建tvc 分组界面中return 2 分2组: 在控制行加判断 如果section== 1  return10 (此时012 0123456789) 在sb中选中tv在style右样式改成Grouped 此时有了间隔 控制分组题头和尾.有个字符串 -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ return @"我

2015 IOS IOS_UIWebView字体大小、字体颜色、背景色——在蓝懿教育 学习笔记

前段时间需要修改webView背景色,上stackoverflow搜了很久没有找到结果,百度搜索,各种转载,各种坑爹,搜出来的都只有字体大小和字体颜色,页面背景没有看到,本人发布方法,希望可以帮助到更多人 在webView的delegate回调方法-webViewDidFinishLoad:(UIWebView*)webView;中写上一下语句即可 //字体大小 [webView stringByEvaluatingJavaScriptFromString:@"document.getEleme