iOS伪实现打地鼠游戏
打地鼠是一款可以用iOS知识来实现的一种游戏.其核心技术就是通过imageView来播放动画,点击button时来停止当前播放的动画开始击打地鼠的动画.话不多说直接上代码.
这是添加当前的背景图片,然后再背景图片上添加地鼠出现的imageView,并在每个imageView上添加个button来执行打击地鼠的事件.
- (void)viewDidLoad {
[super viewDidLoad];
//创建底层显示的背景图片
UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.frame];
imageView.image = [UIImage imageNamed:@"back.png"];
//打开图片的交互(imageView默认是关闭的)
imageView.userInteractionEnabled = YES;
for (int i = ; i < ; i++) {
for (int j = ; j < ; j++) {
//添加地鼠洞的图片
_imageV = [[UIImageView alloc] initWithFrame:CGRectMake(+*i, +*j, , )];
_imageV.image = [UIImage imageNamed:@"emptyhole.png"];
_imageV.tag = +i*+j+;
//创建每个洞的点击事件
_button = [UIButton buttonWithType:UIButtonTypeSystem];
_button.frame = CGRectMake(, , , );
[_button addTarget:self action:@selector(hit:) forControlEvents:UIControlEventTouchUpInside];
//给每个button添加tag值来确定你点击的是那个button
_button.tag = +i*+j+;
[_imageV addSubview:_button];
_imageV.userInteractionEnabled = YES;
[imageView addSubview:_imageV];
}
}
//指定当前现实的背景图片
self.view = imageView;
//添加计时器
[self addTimer];
// Do any additional setup after loading the view, typically from a nib.
}
在确定完成后添加计时器来实现在不同的时间段里在不同位置上出现地鼠.
//添加计时器来启动图片的播放
- (void)addTimer
{
_timer = [NSTimer scheduledTimerWithTimeInterval: target:self selector:@selector(startGame) userInfo:nil repeats:YES];
}
实现计时器的方法来实现地鼠出洞的动画
//启动地鼠出洞的动画
- (void)startGame
{
//定义一个可变数组来存放播放的图片
NSMutableArray *arr = [NSMutableArray array];
//地鼠出洞的图片
for (int i = ; i < ; i++) {
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"t%d.png",i]];
[arr addObject:image];
}
//地鼠回洞的图片
for (int i = ; i < ; i++) {
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"t%d.png",-i]];
[arr addObject:image];
}
//获取随机值来让地鼠在随机位置出现
NSInteger num = arc4random()%+;
//根据tag值来获取随机的现实地鼠图片的imageView
_imageV = (UIImageView *)[self.view viewWithTag:num];
//指定imageView的不妨图片的数组
_imageV.animationImages = arr;
//指定播放次数
_imageV.animationRepeatCount = ;
//指定播放时间
_imageV.animationDuration = ;
//开启播放
[_imageV startAnimating];
}
实现button的点击时间来执行地鼠被打击的效果.
- (void)hit:(UIButton *)sender
{
//根据点击button的tag值来获取当前的imageV
NSInteger num = sender.tag;
//根据button的tag值来获取当前点击的是那个imageview
_imageV = (UIImageView *)[self.view viewWithTag:num+];
//确定是哪个位置的button来执行点击事件
_button = (UIButton *)[self.view viewWithTag:num];
//判断当前点击的imageView是否在播放动画
if (_imageV.isAnimating == YES) {
//停止播放动画
[_imageV stopAnimating];
//定义一个可变数组来存储地鼠被击打时的图片
NSMutableArray *imageArr = [NSMutableArray array];
//地鼠被击打的图片
UIImage *image = [UIImage imageNamed:@"hit.png"];
//空洞的图片
UIImage *image1 = [UIImage imageNamed:@"emptyhole.png"];
//讲两张图片添加到可变数组中
[imageArr addObject:image];
[imageArr addObject:image1];
//指定播放动画的数组
_imageV.animationImages = imageArr;
//制动播放的次数(0为无限循环播放)
_imageV.animationRepeatCount = ;
//指定播放的时间
_imageV.animationDuration = ;
//开始播放动画
[_imageV startAnimating];
}else{
//如果点击的位置没有在播放动画执行的方法.
}
}
在写完这些代码你就可以完成一个打地鼠的游戏.
最后附上需要的图片,图片上方为图片在工程中的名字(冒号前是图片名字各位亲不要把冒号也复制了么么哒!!).
back:

enptyhole:
hit:
t1:
t2:
t3:
t4:
t5:
t6:
iOS伪实现打地鼠游戏的更多相关文章
- iOS版打地鼠游戏源码
打地鼠游戏源码,游戏是一款多关卡基于cocos2d的iPad打地鼠游戏源码,这也是一款高质量的打地鼠游戏源码,可以拥有逐步上升的关卡的设置,大家可以在关卡时设置一些商业化的模式来盈利的,非常完美的一款 ...
- 打地鼠游戏iOS源码项目
打地鼠游戏源码,游戏是一款多关卡基于cocos2d的iPad打地鼠游戏源码,这也是一款高质量的打地鼠游戏源码,可以拥有逐步上升的关卡的设置,大家可以在关卡时设置一些商业化的模式来盈利的,非常完美的一款 ...
- 打地鼠游戏ios源码
打地鼠游戏源码,游戏是一款多关卡基于cocos2d的iPad打地鼠游戏源码,这也是一款高质量的打地鼠游戏源码,可以拥有逐步上升的关卡的设置,大家可以在关卡时设置一些商业化的模式来盈利的,非常完美的一款 ...
- 打地鼠游戏iOS源代码项目
打地鼠游戏源代码,游戏是一款多关卡基于cocos2d的iPad打地鼠游戏源代码.这也是一款高质量的打地鼠游戏源代码.能够拥有逐步上升的关卡的设置,大家能够在关卡时设置一些商业化的模式来盈利的,很完美的 ...
- ios打地鼠游戏源代码
打地鼠游戏源代码,游戏是一款多关卡基于cocos2d的iPad打地鼠游戏源代码,这也是一款高质量的打地鼠游戏源代码,能够拥有逐步上升的关卡的设置,大家能够在关卡时设置一些商业化的模式来盈利的,很完美的 ...
- 无聊的人用JS实现了一个简单的打地鼠游戏
直入正题,用JS实现一个简单的打地鼠游戏 因为功能比较简单就直接裸奔JS了,先看看效果图,或者 在线玩玩 吧 如果点击颜色比较深的那个(俗称坏老鼠),将扣分50:如果点击颜色比较浅的那个(俗称好老鼠) ...
- 团队项目——打地鼠游戏(SPEC)系统性能评估测试
1.SPEC测试的目标: 本轮测试的目的是测试打地鼠游戏的需求以及确保每个需求都能得到满足的方法.编写此需求说明书是为了使用户和开发人员对所开发的系统有一致的理解.通过阅读此说明书,开发人员可以了解当 ...
- ios版弹珠游戏源码
这个是我们比较喜欢玩的一直小游戏的,ios版弹珠游戏源码,该游戏源码来着IOS教程网其他网友提供上传的,大家可以了解一下吧. nore_js_op> <ignore_js_op&g ...
- Android打地鼠游戏源码带道具购买的Android游戏开发
这是一款基于安卓的打地鼠游戏,界面简洁,有level模式打地鼠和无尽模式打地鼠两种游戏模式,并可以通过商店使用金币进行道具的购买,道具可以让你更容易通关:同时金币可以在游戏通关的时候获取.工程中有较为 ...
随机推荐
- windows 基于命令行制作vhd虚拟磁盘
什么是VHD? VHD是Virtual Hard Disk的简称,就是虚拟硬盘,就是能把VHD文件直接虚拟成一个硬盘,在其中能像真实硬盘一样操作,读取.写入.创建分区.格式化.如果你用过虚拟机,就会知 ...
- CentOS6.5下使用NetHogs监控进程网络使用情况
Nethogs 是一个终端下的网络流量监控工具,它的特别之处在于能够显示每一个进程的带宽占用情况,这样能够更直观获取网络使用情况.它支持 IPv4 和 IPv6 协议.支持本地网卡及 PPP 链接. ...
- C#主要字典集合性能对比[转]
A post I made a couple days ago about the side-effect of concurrency (the concurrent collections in ...
- 4. Linux 系统目录
一.Linux 系统目录的作用 /home 用户主目录的根节点,所有用户自己独有的文件一般放在这个目录下的用户目录下 /bin 二进制可执行命令 / ...
- core-site.xml配置项:hadoop.tmp.dir
hadoop.tmp.dir:A base for other temporary directories. 集群运行后,修改该配置项后,发现类似错误: -- ::, INFO org.apache. ...
- C - The Hardest Problem Ever
Description Julius Caesar lived in a time of danger and intrigue. The hardest situation Caesar ever ...
- Ubuntu中nfs服务器安装与配置
一.执行命令 sudo apt-get install nfs-kernel-server 二.为创建nfs文件夹 sudo mkdir /usr/nfs 更改目录权限:sudo chmod 777 ...
- [Effective Modern C++] Item 5. Prefer auto to explicit type declarations - 相对显式类型声明,更倾向使用auto
条款5 相对显式类型声明,更倾向使用auto 基础知识 auto能大大方便变量的定义,可以表示仅由编译器知道的类型. template<typename It> void dwim(It ...
- 百度地图坐标转换API和地图API
利用百度地图的服务将经纬度转换为米单位坐标 using System; using System.Collections.Generic; using System.Linq; using Syste ...
- Fragment之三:根据屏幕尺寸加载不同的Fragment
Fragment一个重要的作用在于根据屏幕的尺寸或者方向加载不同的布局. 未完待续