IOS5基礎之九-----選取器之老虎機

首先看頭文件和前面的基本相似。

#import <UIKit/UIKit.h>

@interface BIDCustomPickerViewController : UIViewController

<UIPickerViewDelegate,UIPickerViewDataSource>

@property (strong,nonatomic) IBOutlet UIPickerView *picker;

@property (strong,nonatomic) IBOutlet UILabel *winlabel;

@property (strong,nonatomic) NSArray *column1;

@property (strong,nonatomic) NSArray *column2;

@property (strong,nonatomic) NSArray *column3;

@property (strong,nonatomic) NSArray *column4;

@property (strong,nonatomic) NSArray *column5;

-(IBAction)spin;

@end

添加圖像資源將打包好的圖片文件夾拖入到文件中就OK。

接下來就是實現控制器了


- (void)viewDidLoad

{

    [super viewDidLoad];

    // Do any additional setup after loading the view from its nib.

    //載入6個不同的圖像

    UIImage *seven=[UIImage imageNamed:@"seven.png"];

     UIImage *bar=[UIImage imageNamed:@"bar.png"];

     UIImage *crown=[UIImage imageNamed:@"crown.png"];

     UIImage *cherry=[UIImage imageNamed:@"cherry.png"];

     UIImage *lemon=[UIImage imageNamed:@"lemon.png"];

     UIImage *apple=[UIImage imageNamed:@"apple.png"];

     for(int i=1;i<=5;i++)

    {

        //每個選取器組件都創建5個圖像

        UIImageView *sevenView=[[UIImageView alloc] initWithImage:seven];

        UIImageView *barView=[[UIImageView alloc] initWithImage:bar];

         UIImageView *crownView=[[UIImageView alloc] initWithImage:crown];

         UIImageView *cherryView=[[UIImageView alloc] initWithImage:cherry];

         UIImageView *lemonView=[[UIImageView alloc] initWithImage:lemon];

         UIImageView *appleView=[[UIImageView alloc] initWithImage:apple];

        

        //將視圖放到數組中。

        NSArray *imageViewArray=[[NSArray alloc] initWithObjects:sevenView,barView,crownView,cherryView,lemonView,appleView, nil];

        NSString *filedName=[[NSString alloc] initWithFormat:@"column%d",i];

        //根據屬性名稱設置屬性

        [self setValue:imageViewArray forKey:filedName];

    }

    //隨機數生成器

    srandom(time(NULL));

}


- (void)viewDidUnload

{

    [super viewDidUnload];

    // Release any retained subviews of the main view.

    // e.g. self.myOutlet = nil;

    self.picker=nil;

    self.winlabel=nil;

    self.column1=nil;

     self.column2=nil;

     self.column3=nil;

     self.column4=nil;

     self.column5=nil;

}


-(IBAction)spin

{

    BOOL win=NO;

    int numInRow=1;

    int lastVal=-1;

    for(int i=0;i<5;i++)

    {

        //隨即生成行選擇

        int newValue=random()%[self.column1 count];

        if (newValue==lastVal) {

            numInRow++;

        }

        else 

            numInRow=1;

        lastVal=newValue;

        //該組件製作更改動畫,並告訴選取器重新載入該組件。

        [picker selectRow:newValue inComponent:i animated:YES];

        [picker reloadComponent:i];

        if (numInRow==3) {

            win=YES;

        }

    }

    if (win) {

        winlabel.text=@"Win";

    }

    else

        winlabel.text=@"";

}

#pragma mark

#pragma mark Picker Data Source Methods

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView

{

    return 5;

}


-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component

{

    return [self.column1 count];

}


#pragma mark Picker Delegate Methods

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

{

    NSString *arrayName=[[NSString alloc] initWithFormat:@"column%d",component+1];

    NSArray *array=[self valueForKey:arrayName];

    return [array objectAtIndex:row];

}

這樣基本的一個老虎機就完成了

我們繼續完善添加聲音和如何添加內部的一些框架(也就是類了,相當於dll之類的)

//顯示按鈕

-(void)showButton {

    self.button.hidden = NO;

}


//當用戶獲勝時調用聲音及顯示文本框

-(void)playWinSound {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"win"

                                                     ofType:@"wav"];

    SystemSoundID soundID;

    AudioServicesCreateSystemSoundID(

                                     (__bridge CFURLRef)[NSURL fileURLWithPath:path], &soundID);

    AudioServicesPlaySystemSound (soundID);

    winlabel.text = @"WIN!";

    [self performSelector:@selector(showButton) withObject:nil

               afterDelay:1.5];

}

修改後的操作方法

- (IBAction)spin {

    BOOL win = NO;

    int numInRow = 1;

    int lastVal = -1;

    for (int i = 0; i < 5; i++) {

        int newValue = random() % [self.column1 count];

        

        if (newValue == lastVal)

            numInRow++;

        else

            numInRow = 1;

        

        lastVal = newValue;

        [picker1 selectRow:newValue inComponent:i animated:YES];

        [picker1 reloadComponent:i];

        if (numInRow >= 3)

            win = YES;

    }

    self.button.hidden = YES;//隱藏按鈕

    //用於播放已加載的聲音

    NSString *path = [[NSBundle mainBundle] pathForResource:@"crunch" 

                                                     ofType:@"wav"];

    SystemSoundID soundID;

    AudioServicesCreateSystemSoundID(

                                     (__bridge CFURLRef)[NSURL fileURLWithPath:path], &soundID);

    AudioServicesPlaySystemSound (soundID);

    


    if (win)

        [self performSelector:@selector(playWinSound)

                   withObject:nil

                   afterDelay:.5];

    else

        [self performSelector:@selector(showButton)

                   withObject:nil

                   afterDelay:.5];

    winlabel.text = @"";

}


添加AudioToolBox.framework


首先點擊圖片左邊上方的PIcker--找到dock中的TARGETS 的Picker --BuildPhases ---Link Binary With Libraries----點擊+。

找到AudioToolBox.framework這樣就把這個添加到Picker項目中,音樂也就會響起~~~~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章