下面让我们来认识一下考反应的扑克牌游戏
使用的技术:
1.)UIAlertView :它时UIView中的提示框“类”,书写方式如下
UIAlertView alert=[[UIAlertView alloc] initWithTile:@”” message:@” ” delegate:self cancelButtonTitle:@” ” otnerButtonTitles:@” ”];
在这里我们介绍一下Alert提示款类中几个参数:
1. initWithTitle:表示我们的提示框中的标题
2. message:表示我们提示框所提示的信息
3. delegate:表示我们的提示框中的代理协议
4. cancelButtonTitle:表示提示框推出时的按钮的名称
5. otherButtonTitle:表示如果除了推出按钮外,如果还定义了其他的按钮的话这里可以定义其他按钮的名称。
同时定义完成上面的内容之后要想提示框在界面中显示出来的话我们还必须调用show方法:[alert show];
2)如果我们的文件中需要调用随机数的:
int (/double) number=rand();
3)定义定时器对象的时间属性
[NSTimer scheduledTimerWithTimeInterval: (3.0) //表示?
target:self //目标为本体
selector:@selector(selector的名字)
userInfo:@”” //用户信息通常时nil表示
repeats:NO //表示定时器是否重复NO不重复YES重复执行。
]
.h文件
//
// ViewController.h
// KaoFanYingPuKeYouXi
//
// Created by yuliyan on 13-5-12.
// Copyright (c) 2013年 Y. All rights reserved.
//
//导包
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
//声明程序界面控制器的名字
@interface ViewController : UIViewController
{
//建立NSData数据流对象变量
NSDate *startDate;
//此处IBOutlet UIImageView建立图像视图,显示时间文字,把所需要显示的图像告诉Interface'
IBOutlet UIImageView *pokerImage;
}
//@Property中声明程序中的复制属性,加入在@interface中指定夫人相同的NSDate控件对象。
@property(nonatomic ,copy)NSDate *startDate;
//@property中声明程序中的保存复制,加入在@interface中指定相同的UIImageView控件对象
@property(nonatomic ,retain)UIImageView *pokerImage;
//建立操作效应的方法,单击按钮显示游戏结果。
-(IBAction)pokerPressed;
.m文件:
//
// ViewController.m
// KaoFanYingPuKeYouXi
//
// Created by yuliyan on 13-5-12.
// Copyright (c) 2013年 Y. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@implementation ViewController
//告诉编译器去合成今天方法中所需要的“数据流”对象的存储器方法;
@synthesize startDate;
//本指令告诉编译器去合成今天方法中所需要的“图像试图”控件中的存储器方法。
@synthesize pokerImage;
//创建一个整数数据类型的数字,数据为零不显示扑克黑桃
int spadeOn = 0;
//视图控制器读取到内存后再进行调用,在程序显读到内存中加入额外的对显示进行修改
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// 建立一个提升框对象alert,定义提示框中的内容
UIAlertView *alert=[[UIAlertView alloc] //为对话框对象进行内存分配
initWithTitle:@"考反映扑克游戏" //为对话框设置标题
message:@"当黑桃出现时以最快的速度按下扑克。" //提示框提示内容
delegate:self //代理协议为本体。
cancelButtonTitle:@"游戏开始" //取消按钮的标题是“游戏开始”
otherButtonTitles:nil];
[alert show]; //显示对话框、
}
//游戏中单机按钮时关闭提示框的事件方法;
-(void) alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{
// 把游戏中扑克图像视图对象定义为:“扑克的背面图像文件”
pokerImage.image=[UIImage imageNamed:@"pokerBack.png"];
//出现黑桃整数变量数据为“0”,表示游戏中的绿灯没有亮
spadeOn=0;
// 定义定时器对象的时间属性值
[NSTimer scheduledTimerWithTimeInterval:(3.0)
target:self //目标为本体
selector:@selector(onOtherAceTime)//选择器名为onOhterAceTime的方法
userInfo:nil//表示代表用户信息不存在
repeats:NO //NO 表示定时器不重复
];
}
//游戏中出现黑桃的时间差的方法
-(void)onSpadeAceTimer{
//把游戏指示灯图像视图对象定义为“扑克的黑桃图像文件”
pokerImage.image=[UIImage imageNamed:@"spadesAce.png"];
//出现黑桃的整数变量数据为“1”,表示游戏中的黑桃出现
spadeOn=1;
//对象获取时间差
self.startDate=[NSDate date];
}
//游戏中出现其他的扑克的时间差的方法
-(void)onOtherAceTimer{
//创建一个取得整数的变量,rand%2变量返回值“0”,“1”或“2”,随机的三选一的整数
int rNumber=rand()%3;
//在Switch中使用rNumber整数变量作为条件进行转换
switch(rNumber){
case 0:
//把游戏指示灯图像视图对象定义为“扑克梅花图像文件”
pokerImage.image=[UIImage imageNamed:@"clubsAce.png"];
break;
case 1:
//把游戏指示灯图像视图对象定义为:“扑克的方片图像文件”
pokerImage.image=[UIImage imageNamed:@"diamonsAce.png"];
break;
case 2:
//把游戏指示灯图像视图对象定义为:“扑克的红桃图像文件”
pokerImage.image=[UIImage imageNamed:@"heartAce.png"];
break;
default:
break;
}
//创建游戏中考放映的随机时间的差数值
//创建整数变量对象,定义程序中随机数除以七加一的数值
int delay=((int)(random()%7)+1);
//定义对象的时间属性值
[NSTimer scheduledTimerWithTimeInterval:(3.0+delay)//3s加随机时间差数值
target:self //目标是本体
selector:@selector(onSpadsAceTimer)//选择器的名为onSpadesAceTimer的方法
userInfo:nil //nil表示用户信息不存在
repeats:NO];//NO表明定时器不重复
}
//建立操作效应的方法,单机游戏中扑克的透明按钮,计算反应时间
-(IBAction)pokerPressed{
//创建双位数变量对象,定义程序中反应时间数值,获取对象时间差数值“self.startDate”
//此处“*-1000”把数值转化成毫秒显示
double noSeconds=(double)[self.startDate timeIntervalSinceNow]*1000;
//创建游戏的反应时间文字的变量对象,定义文字内容,返回反应时间
NSString *reactionTime=[[NSString alloc] initWithFormat:@"好样的!你的响应速度时%1.0f毫秒,再来一次,创造更好的成绩...",noSeconds];
//当黑桃没出现时的条件语句
if(spadeOn==0){
//更新反应时间文字对象内容是
reactionTime=@"请不要着急,等到黑桃出现时才能按下扑克";
//建立一个提示框对象alert,定义提示框的内容
UIAlertView *alert=[[UIAlertView alloc]
initWithTitle:@"Day12" //提示框的标题
message:reactionTime //提示信息的 内容
delegate:self //代理协议为本体
cancelButtonTitle:@"确定" //取消按钮的标题
otherButtonTitles:nil //其他按钮的标题为空
];
//显示对话框对象
[alert show];
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}