28.小项目:超级猜图 part1

------------- ViewController.m ------------- 


#import "ViewController.h"

#import "CZQuestion.h"


@interface ViewController ()


@property (weak, nonatomic) IBOutlet UILabel *countView;

@property (weak, nonatomic) IBOutlet UILabel *titleView;

@property (weak, nonatomic) IBOutlet UIButton *coinView;

@property (weak, nonatomic) IBOutlet UIButton *iconView;

@property (weak, nonatomic) IBOutlet UIButton *nextView;

@property (nonatomic, weak) UIButton *coverView;

@property (nonatomic, strong) NSArray *questions;

@property (weak, nonatomic) IBOutlet UIView *answersView;

@property (weak, nonatomic) IBOutlet UIView *optionsView;

@property (nonatomic, assign) int index;


- (IBAction)tipClick;

- (IBAction)bigImageClick;

- (IBAction)nextClick;

- (IBAction)iconViewClick;


@end


@implementation ViewController


- (NSArray *)questions

{

    if (_questions == nil)

    {

        _questions = [CZQuestion questionsList];

    }

    return _questions;

}


- (void)viewDidLoad

{

    [super viewDidLoad];

    self.index--;

    [self nextClick];

}



- (IBAction)bigImageClick

{

    CGFloat iconW = self.view.frame.size.width;

    CGFloat iconH = iconW;

    CGFloat iconX = 0;

    CGFloat iconY = (self.view.frame.size.height - iconW) / 2;

    UIButton *coverView = [[UIButton alloc] init];

    [self.view addSubview:coverView];

    coverView.frame = self.view.bounds;

    coverView.backgroundColor = [UIColor blackColor];

    coverView.alpha = 0;

    [self.view bringSubviewToFront:self.iconView];

    [UIView animateWithDuration:1.0 animations:^{

        self.iconView.frame = CGRectMake(iconX, iconY, iconW, iconH);

        coverView.alpha = 0.5;

    }];

    [coverView addTarget:self action:@selector(smallImgClick) forControlEvents:UIControlEventTouchUpInside];

    self.coverView = coverView;

}


- (void)smallImgClick

{

    [UIView animateWithDuration:1.0 animations:^{

        self.iconView.frame = CGRectMake(80, 111, 160, 160);

        self.coverView.alpha = 0;

    } completion:^(BOOL finished) {

        [self.coverView removeFromSuperview];

        self.coverView = nil;

    }];

}


- (IBAction)iconViewClick {

    if (self.coverView == nil)

    {

        [self bigImageClick];

    }else

    {

        [self smallImgClick];

    }

}


- (IBAction)nextClick

{

    self.index ++;

    if (self.index == self.questions.count)

    {

        UIAlertView *view = [[UIAlertView alloc] initWithTitle:@"提示" message:@"恭喜过关" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];

        [view show];

        return;

    }

    

    CZQuestion *question = self.questions[self.index];

    self.titleView.text = question.title;

    [self.iconView setImage:[UIImage imageNamed:question.icon] forState:UIControlStateNormal];

    self.countView.text = [NSString stringWithFormat:@"%d/%lu",self.index + 1,(unsigned long)self.questions.count];

    self.nextView.enabled = self.index != self.questions.count - 1;

    [self setAnswerButtons:question];

    [self setOptionButtons:question];

    

}


- (void)setAnswerButtons:(CZQuestion *)question

{

    [self.answersView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

    NSUInteger answerCount = question.answer.length;

    CGFloat margin = 10;

    CGFloat btnW = 35;

    CGFloat btnH = 35;

    CGFloat leftMargin = (self.answersView.frame.size.width - answerCount * btnW - (answerCount - 1) * margin) / 2;

    CGFloat btnY = 0;

    

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

    {

        UIButton *answerBtn = [UIButton buttonWithType:UIButtonTypeCustom];

        [self.answersView addSubview:answerBtn];

        CGFloat btnX = leftMargin + i * (btnW + margin);

        answerBtn.frame = CGRectMake(btnX, btnY, btnW, btnH);

        [answerBtn setBackgroundImage:[UIImage imageNamed:@"btn_answer"] forState:UIControlStateNormal];

        [answerBtn setBackgroundImage:[UIImage imageNamed:@"btn_answer_highlighted"] forState:UIControlStateHighlighted];

        [answerBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

        [answerBtn addTarget:self action:@selector(setAnswerToOption:) forControlEvents:UIControlEventTouchUpInside];

    }


}


- (void)setOptionButtons:(CZQuestion *)question

{

    self.optionsView.userInteractionEnabled = YES;

    [self.optionsView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

    CGFloat btnW = 35;

    CGFloat btnH = 35;

    int columnCount = 7;

    CGFloat marginX = (self.optionsView.frame.size.width - columnCount * btnW) / (columnCount + 1);

    CGFloat marginY = 10;

    

    for (int i = 0; i < question.options.count; i++)

    {

        UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

        [self.optionsView addSubview:btn];

        int row = i / columnCount;

        int column = i % columnCount;

        CGFloat btnX = marginX + column * (btnW + marginX);

        CGFloat btnY = row * (btnH + marginY);

        btn.frame = CGRectMake(btnX, btnY, btnW, btnH);

        [btn setBackgroundImage:[UIImage imageNamed:@"btn_option"] forState:UIControlStateNormal];

        [btn setBackgroundImage:[UIImage imageNamed:@"btn_option_highlighted"] forState:UIControlStateHighlighted];

        [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

        [btn setTitle:question.options[i] forState:UIControlStateNormal];

        [btn addTarget:self action:@selector(setOptionToAnswer:) forControlEvents:UIControlEventTouchUpInside];

        btn.tag = i;

    }

}


- (void)setOptionToAnswer:(UIButton *)sender

{

    sender.hidden = YES;

    for (UIButton *answerBtn in self.answersView.subviews)

    {

        if (answerBtn.currentTitle == nil)

        {

            [answerBtn setTitle:sender.currentTitle forState:UIControlStateNormal];

            

            answerBtn.tag = sender.tag;

            break;

        }

    }


    BOOL isFull = YES;

    NSMutableString *inputAnswer = [NSMutableString string];

    for (UIButton *answerBtn in self.answersView.subviews)

    {

        if (answerBtn.currentTitle == nil)

        {

            isFull = NO;

            break;

        }

        [inputAnswer appendString:answerBtn.currentTitle];

    }


    CZQuestion *question = self.questions[self.index];

    if (isFull)

    {

        self.optionsView.userInteractionEnabled = NO;

        if ([question.answer isEqualToString:inputAnswer])

        {

            [self setAnswerBtnColor:[UIColor blueColor]];

            int coin = [self.coinView.currentTitle intValue];

            coin += 500;

            [self.coinView setTitle:[NSString stringWithFormat:@"%d",coin] forState:UIControlStateNormal];

            [self performSelector:@selector(nextClick) withObject:nil afterDelay:1.0];

        }else

        {

            [self setAnswerBtnColor:[UIColor redColor]];

        }

    }

}


- (void)setAnswerToOption:(UIButton *)sender

{

    self.optionsView.userInteractionEnabled = YES;

    for (UIButton *optionBtn in self.optionsView.subviews)

    {

        if (sender.tag == optionBtn.tag)

        {

            optionBtn.hidden = NO;

            break;

        }

    }

    [sender setTitle:nil forState:UIControlStateNormal];

    [self setAnswerBtnColor:[UIColor blackColor]];

}


- (void)setAnswerBtnColor:(UIColor *)color

{

    for (UIButton *answerBtn in self.answersView.subviews)

    {

        [answerBtn setTitleColor:color forState:UIControlStateNormal];

    }

}


- (IBAction)tipClick

{

    self.index--;

    [self nextClick];

    CZQuestion *question = self.questions[self.index];

    NSString *first = [NSString stringWithFormat:@"%C",[question.answer characterAtIndex:0]];

    for (UIButton *btn in self.optionsView.subviews)

    {

        NSString *option = btn.currentTitle;

        if ([first isEqualToString:option])

        {

            [self setOptionToAnswer:btn];

        }

    }

    int coin = [self.coinView.currentTitle intValue];

    coin -= 1000;

    [self.coinView setTitle:[NSString stringWithFormat:@"%d",coin] forState:UIControlStateNormal];

}


@end

 

转载于:https://www.cnblogs.com/lixiang2015/p/4708902.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值