七、考反映小游戏《苹果iOS实例编程入门教程》
该app为应用的功能为一个简单的考反应游戏
纲要:
-UIButton, UILabel, UIImageView 的运用;
-利用rendom增加游戏可玩性;
游戏说明:
在按下开始游戏后,分为三盏的指示灯按照“黄”、“红”、“绿”的先后顺序各自读取相应的指示灯颜色图片文件,当黄灯亮后游戏使用随机变量产生没有规律的红灯持续时间,因为这样的红灯使玩家没法预计绿灯什么时候亮,所以按下油门的时间要看玩家的反应速度,油门按下后,游戏会把从绿灯亮起直到玩家按下油门之间所使用的时间显示新窗口,并且提示玩家时候挑战更好的成绩。
现版本 SDK 8.4 Xcode
运行Xcode 选择 Create a new Xcode project ->Single View Application 命名 ReactionTime
(1) 在xCode打开 ViewController.h 文件,加入下面代码
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
{
NSDate *startDate;
//IBOutlet UIImageView: 把信号灯转换的图片对象告诉Interface Builder
IBOutlet UIImageView *stopLight;
}
@property (nonatomic,copy)NSDate *startDate;
//油门按钮对象 点击事件
-(IBAction)gasPedalPressed:(id)sender;
@end
(2) 在xCode打开 ViewController.m 文件,加入下面代码
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize startDate;
int greenLightOn = 0;
-(void)awakeFromNib
{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Reaction Time: Ready to Play" message:@"当绿灯亮时以最快的速度按下脚踏板." delegate:self cancelButtonTitle:@"游戏开始" otherButtonTitles:nil];
[alert show];
}
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
stopLight.image = [UIImage imageNamed:@"yellowLightSmall.png"];//指示灯的图片定制为黄灯图片
greenLightOn = 0;//数值为0,绿灯关闭
[NSTimer scheduledTimerWithTimeInterval:(3.0) target:self selector:@selector(onYellowLightTimer) userInfo:nil repeats:NO];
}
- (void)onYellowLightTimer //游戏中红灯的时间长度定制随机数(random)运用
{
stopLight.image = [UIImage imageNamed:@"redLightSmall.png"];
int delay = ((int) (random() % 7) + 1);
[NSTimer scheduledTimerWithTimeInterval:(3.0 + delay) target:self selector:@selector(onRedLightTimer) userInfo:nil repeats:NO];
}
- (void)onRedLightTimer //游戏中绿灯的时间长度定制
{
stopLight.image = [UIImage imageNamed:@"greenLightSmall.png"];
// stopLight.image: 指示灯的图片定制为绿灯图片
greenLightOn = 1;//绿灯打开
self.startDate = [NSDate date]; //反应时间导入,开始计算时间
}
- (IBAction)gasPedalPressed:(id)sender
{
double noSeconds = (double) [self.startDate timeIntervalSinceNow] * -1000;
NSString *reactionTime= [[NSString alloc] initWithFormat:@"好样的! 你的响应速度是 %1.0f 毫秒. 再来一次,创造更好的成绩...", noSeconds];
if(greenLightOn == 0)
reactionTime = @"请不要急. 要等到绿灯亮时才按脚踏板, 再来一次";
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Reaction Time" message:reactionTime
delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil];
[alert show];
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
(3) 导入下面图片文件
将下面的图片导入到项目文件夹Supporting Files中(此为原博客中图片)
图片名称分别为greenLightSmall.png,redLightSmall.png,yellowLightSmall.png,road.png,gasPedalSmall.png
(4)UIView 界面设置
切换到main.storyboard
加入 Button
选择: Object Library 中拖拉一个 Button 到 View Controller Scene
鼠标右击Button控件,鼠标移动到"Touch Up Inside" 后面圆圈上; 圆圈变为(+); 拖向直线连接到"view controller";
放开鼠标选择键出现 "gasPedalPressed"; 选上它。
属性设置切换到Attributes上在 Type 下选择 custom; 在 Background 下选择 gasPedalSmall.png
选中控件 点击上方菜单栏Editor->Size to Fit Content
加入 UIimageView , 交通灯图片
选择: Tools -> Library ;从Library显示菜单中拖拉一个 imageView 到 View Controller Scene
在主视窗口或文件窗口;点击 imageView
选择: Tools -> Inspector; 在image下选择 redLightSmall.png
选择: Tools -> Connection Inspector
移动鼠标在"New Referencing Outlet" 后面圆圈上; 圆圈变为(+); 拖向直线连接到"view controller";
放开鼠标选择键出现 "stopLight"; 选上它。
加入 UIimageView , 背景图案
选择: Tools -> Library ;从Library显示菜单中拖拉一个 imageView 到 Main View; 调整到满屏
在主视窗口或文件窗口;点击 imageView
选择: Tools -> Inspector; 在image下选择 road.png
选择: 选中控件 点击上方菜单栏Editor->Arrange->Send To Back; 图片设为背景
选择: File -> Save
最后在 xCode 选择 Build and then Running
(5)模拟器效果图
本文源于网上博客,经过本人修改和测试。原blog地址 http://blog.sina.com.cn/s/blog_5fae23350100dyg4.html
七、考反映小游戏《苹果iOS实例编程入门教程》的更多相关文章
- 六、雪花《苹果iOS实例编程入门教程》
该app为应用的功能为制作一场雪景 现版本 SDK 8.4 Xcode 纲要:- UIImageView 的运用- onTimer 代码运用- onAnimation 代码运用 运行Xcode 选择 ...
- 五、点数器《苹果iOS实例编程入门教程》
该app为应用的功能为一个简单的数数程序 现版本 SDK 8.4 Xcode 运行Xcode 选择 Create a new Xcode project ->Single View Applic ...
- 四、卫星定位《苹果iOS实例编程入门教程》
该app为应用的功能为用iPhone 显示你现在的位置 现版本 SDK 8.4 Xcode 运行Xcode 选择 Create a new Xcode project ->Single View ...
- 三、图像移动《苹果iOS实例编程入门教程》
该app为应用的功能为动态移动动画 现版本 SDK 8.4 Xcode 运行Xcode 选择 Create a new Xcode project ->Single View Applicati ...
- 二 、打开地图《苹果iOS实例编程入门教程》
该app为应用的功能为给你的iPhone打开google地图有效地址连接 现版本 SDK 8.4 Xcode 运行Xcode 选择 Create a new Xcode project ->Si ...
- 一、午夜倒数《苹果iOS实例编程入门教程》
该app为应用的功能为计算离午夜12:00点的剩余时间 现版本 SDK 8.4 Xcode 运行Xcode 选择 Create a new Xcode project ->Single View ...
- 【C语言C++编程学习笔记】基础语法,第一个简单的实例编程入门教程!
C语言/C++编程学习:一个简单的实例 让我们来看一个简单的C语言程序.从下面的程序可以看出编写C语言程序的一些基本特征. 如果你能知道该程序将会在显示器上显示一些内容,那说明你还是知道一些的! ...
- iOS开发 ReactiveCocoa入门教程 第二部分
ReactiveCocoa 是一个框架,它允许你在你的iOS程序中使用函数响应式(FRP)技术.加上第一部分的讲解,你将会学会如何使用信号量(对事件发出数据流)如何替代标准的动作和事件处理逻辑.你也会 ...
- TeeChart .NET for iOS图表开发入门教程
去年,TeeChart 为iOS图表开发专门发布了TeeChart NET for iOS(包含在TeeChart Mobile中),相信很多人都对其感兴趣.慧都为大家制作了TeeChart NET ...
随机推荐
- PHP实现上一篇、下一篇
//php实现上一篇.下一篇 获取当前浏览文章id $id = isset($_GET[ ? intval($_GET['id']) : ""; 下一篇文章 $query = my ...
- 11g添加asm
1.创建组 2.创建grid用户 3.用grid安装Gride Infrastructure软件 4.执行root.sh[root@ora11g softdb]# /u01/app/11.2.0/gr ...
- 阿里云(ECS)Centos服务器LNMP环境搭建
阿里云( ECS ) Centos7 服务器 LNMP 环境搭建 前言 第一次接触阿里云是大四的时候,当时在校外公司做兼职,关于智能家居项目的,话说当时俺就只有一个月左右的 php 后台开发经验(还是 ...
- 解决Android解析图片的OOM问题!!!(转)
大家好,今天给大家分享的是解决解析图片的出现oom的问题,我们可以用BitmapFactory这里的各种Decode方法,如果图片很小的话,不会出现oom,但是当图片很大的时候 就要用BitmapFa ...
- visio调整画布大小和旋转画布(转)
1.调整画布大小: 鼠标移至画布边界(注意不能是顶点附近),按下ctrl,就会出现双向箭头,拖动鼠标即能调整画布大小. 2.旋转画布: 鼠标移至画布顶点或附近,按下ctrl, 出现单箭头优弧,移动鼠标 ...
- java杂记——数组拷贝
这里介绍两种java提供的数组拷贝方法: (1)Arrays提供的copyOf(T src, T desLength)和copyOfRange(T src, int from, int to) (2) ...
- struct 类型重定义
类型定义的那个头文件只需要在功能源文件里#include 开始在主函数源文件里也#include,所以出现了重定义
- java学习笔记(2):获取文件名和自定义文件过滤器
//自定义文件过滤器import java.io.File; import javax.swing.filechooser.*; public class JavaChooser extends Fi ...
- cocos2dx游戏开发——别踩白块学习笔记(二)——经典模式的实现
一.创建GameScene以及GameLayer 就是简单创建一个Scene而已,在此就不多说啦~,可以参照我的打飞机的学习笔记(2). 二.添加一个开始栏 很简单,就是调用Block中的create ...
- IM服务器的架构
一. 总的构架结构示意图: 如上图所示,目前系统总的分成六个模块, 分别为网络/协议解析模块,用户帐号管理模块,消息处理模块,动作处理模块,数据均衡处理模块,客户状态处理模块 . 正常流程应该这么实现 ...