IOS第二十七天——把Picker改成老虎机游戏

昨天我们学习了Picker的使用,那么今天我们来实现一个稍微复杂一些的小游戏,当然,美化就少了很多,比较简陋,接下来我们按照步骤来实现一下。

首先我们要拖拽两个Label进来,一个用来用作提示,另一个用来显示得分。不是很困难,我们先看一下修改后的xib文件的样式:



同时我们也把按钮显示的文本改成Start了,那么接下来我们看下ETViewController.h类中的代码

#import <UIKit/UIKit.h>

@interface ETViewController : UIViewController<UIPickerViewDelegate,UIPickerViewDataSource>
- (IBAction)chooseActionBtn:(id)sender;
@property (weak, nonatomic) IBOutlet UILabel *currScore;
@property (nonatomic,strong)IBOutlet UIPickerView *actionPicker;

@property (nonatomic,strong)NSArray *column1;
@property (nonatomic,strong)NSArray *column2;
@property (nonatomic,strong)NSArray *column3;
@property (nonatomic,strong)NSArray *column4;
@property (nonatomic,strong)NSArray *column5;
@property (nonatomic,strong)NSArray *column6;

@end
这里的column1~6是表示我们的Picker中有六列

然后就是我们要把chooseActionBtn方法改成下面的代码:

- (IBAction)chooseActionBtn:(id)sender
{
    int currentScoreInt=0;
    int rowNum=1;
    int lastRowVal=-1;
    for (int i=0; i<6; i++)
    {
        int randomVal=random() %[self.column1 count];
        
        if(randomVal==lastRowVal)
        {
            rowNum++;
        }
        else
        {
            rowNum=1;
        }
        lastRowVal=randomVal;
        [actionPicker selectRow:randomVal inComponent:i animated:YES];
        [actionPicker reloadComponent:i];
        
        if(rowNum>=3)
        {
            currentScoreInt+=10;
        }
    }
    NSString *scoreStr=[[NSString alloc] initWithFormat:@"%d",currentScoreInt];
    currScore.text=scoreStr;

}
@end
然后我们再要修改ETViewController.m文件中PickerView组件个数,以及每个组件的行数,当然,还要把原先的NSString改为UIView
//picker view中组件的个数
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    //返回6即可,改为6个Component
    return 6;
}

//picker view组件中的row行数
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    return [self.column1 count];
}

//循环数据源并绑定到picker view上进行展示
#pragma mark Picker Delegate Methods
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
    NSString *arrayName = [[NSString alloc] initWithFormat:@"column%d", component + 1];
    NSArray *array = [self valueForKey:arrayName];
    return [array objectAtIndex:row];
}


OK,完成,我们来编译运行,看下游戏的效果,首先是初始状态:


然后我们开始试玩一下,嗯哼,点击多次之后终于成功,如下图所示:


当然,也可以修改下得分的字体和颜色,这个大家可以自行美化一下。

2013年05月26日,Eric.Tang 记


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值