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模式打地鼠和无尽模式打地鼠两种游戏模式,并可以通过商店使用金币进行道具的购买,道具可以让你更容易通关:同时金币可以在游戏通关的时候获取.工程中有较为 ...
随机推荐
- LeeCode-Remove Element
Given an array and a value, remove all instances of that value in place and return the new length. T ...
- 【POJ 2010 Moo University-Financial Aid】优先级队列
题目链接:http://poj.org/problem?id=2010 题意:C只牛犊,各有自己的分数score和申请的补助aid,现要选出N只(N为奇数),使得其aid的总和不超过F,且按score ...
- CDH 1、CDH简介
1.Apache Hadoop 不足之处 • 版本管理混乱 • 部署过程繁琐.升级过程复杂 • 兼容性差 • 安全性低 2.Hadoop 发行版 • Apache Hadoop • Cloudera’ ...
- Scala 函数(五)
函数是一组一起执行一个任务的语句. 您可以把代码划分到不同的函数中.如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的. Scala 有函数和方法, ...
- JavaScript 运行机制详解:深入理解Event Loop
Philip Roberts的演讲<Help, I'm stuck in an event-loop>,详细.完整.正确地描述JavaScript引擎的内部运行机制. 一.为什么JavaS ...
- mysql的基本使用方法
创建数据库:create database [if not exist]name [character set 编码方式 collate 校对规则] 显示库的创建信息:show create data ...
- mysql的常用操作的封装
1.概述: 为了把繁琐的操作简化成简单的类,设计了2个类用来封装了mysql的常用操作,以便使用者可以方便地使用. 2.组成 1)数据库操作类CDatabaseConnect 2)SQL对象类CSql ...
- weblogic8.1在myeclipse中启动正常,在单独的weblogic中无法正常启动的解决方案.
应用程序服务器weblogic8.1.5,项目在myeclipse中启动正常,在单独的服务器中启动就报错了.错误如下图: 经过观察,发现在myeclipse中设置了以下的jar包.估计是这个问题引起的 ...
- webpack+gulp实现自动构建部署
项目结构说明 . ├── gulpfile.js # gulp任务配置 ├── mock/ # 假数据文件 ├── package.json # 项目配置 ├── README.md # 项目说明 ├ ...
- 克隆虚拟机,如何将克隆虚拟的网卡设置为eth0
1.先删掉/etc/udev/rules.d/70-persistent-net.rules文件里的eth0,并要记住eth1的那个网卡的mac地址等下要用.2.把那个eth1修改为eth03.编辑网 ...