28.小项目:超级猜图 part1

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

------------- 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

时间: 2024-08-10 19:18:38

28.小项目:超级猜图 part1的相关文章

ios开发-UI基础-超级猜图

[注意]转载时请注明出处博客园-吃唐僧肉的小悟空http://www.cnblogs.com/hukezhu/ 本篇文章介绍一个比较综合的小应用----超级猜图. 功能分析: 根据显示的图片,在下面的待选项按钮中选中正确答案按钮,选中的按钮会显示在正确答案按钮中 答案错误,答案颜色变为红色,分数减小 答案正确,答案颜色变为蓝色,两秒自动跳入下一题,分数增加 点击"下一题"可以进入下一个题目 点击"大图",可以放大显示图片,再次点击图片或者背景,图片缩小至原来大小 点

超级猜图,小case,运用知识点: storyboard block封装变化点 蒙板 模态model

最近这几天,不知道突然玩超级猜图玩疯了,最后觉得还是不过瘾,干脆下了ipa,运用素材自己写了一个,没想到居然实现了大部分功能,真开心,直接上图:     上代码,不足之处,还望牛人支出,不胜感激: 1 #import "JHViewController.h" 2 #import "JHAppDate.h" 3 4 @interface JHViewController () 5 { 6 NSArray *_arrayImage; // 内容数组 7 int _ind

轮播特效小项目总结

首先谈谈关于还原设计稿学到的一些东西,比如说网页设计稿和交互效果做好了,拿给我们在网页上实现,那如何实现呢,我就说说自己的鄙见吧. 第一,思考整个设计图的层次,比如说分别由哪些部分构成,针对这些"块",怎么设计div的结构,怎么把静态页面有条理的编写出来. 第二,思考如何实现设计图的交互效果,在逻辑上分析,比如用JS绑定哪些事件,采用什么样的函数实现怎么样的效果等等. 第三,代码的优化性考虑,怎么让代码简洁明了,方便维护. 以上就是我现在阶段对页面还原的一些看法,也许比较浅显,我也希望

【招募】golang小项目

最近想用golang写一个小项目: 语言:golang 目标:学习完golang,必须有小项目练手 招募期限:截止到2017年3月28日 人数:4~5人 内容:对标barbican内容 报名方式:直接私信给我

模拟XShell的小项目

不知道大家有没有用过XShell这款工具,这款工具通过windows可以远程操作处于开机状态的linux操作系统,也就是说把你的电脑和一台服务器连入网络,你通过输入服务器所在的IP地址建立一个会话就可以远端操作linux的服务器了,十分方便. 这次这个模拟XShell的小项目就是类似的功能 执行流程: windows客户端输入命令,通过网络传输到linux服务器端上,linux服务器端执行命令,将执行命令产生的结果保存进文件,然后再将文件传输回windows客户端进行展示. 问题思考:真的有必要

小项目特供 贪吃蛇游戏(基于C语言)

C语言写贪吃蛇本来是打算去年暑假写的,结果因为ACM集训给耽搁了,因此借寒假的两天功夫写了这个贪吃蛇小项目,顺带把C语言重温了一次. 是发表博客的前一天开始写的,一共写了三个版本,第一天写了第一版,第二天写了第二版和第三版. 相信C语言写个小游戏或小项目是大多数计算机相关专业的学生都做的事情,但是作为一个数学专业的学生,我们教研室的老师对C语言的要求也就比较低了,大一没有让我们做个小项目实践一次.至今为止用C/C++做过的三个小项目(大作业),一个是外校同学让我帮忙写的学生信息管理系统(天呐,这

【PHP小项目使用MVC架构】

小项目名称是雇员管理系统. mvc是一种项目的开发模式,中文名称为模式视图控制器,是强制程序员将数据的输入.处理.输出分开的一种开发模式. 在这个小项目中,控制器使用service作为后缀名. 项目uml图解概述: 在此之前,需要先创建数据库empmanage,同时创建两张表,一张表为admin,令一张表为emp,创建admin表的sql语句: create table admin ( id int primary key, name varchar(32) not null, password

Android的SQLiteDataBase小项目,实现user类登陆注册以及student类增删改查

关于SQLiteDataBase这块,大体有两种主要的实现方式,一种是不使用Helper类的方式,此种方式存在一个弊端,即不能oncreate两次,如果重复使用oncreate的button,则会报错,所以为了避免这种错误,在此项目中使用类继承SQLiteOpenHelper的方式进行SQLite3小型数据库的小项目开发,简单的实现登陆注册,以及对特定vo类的增删改查,中间还夹杂了ListView,ArrayAdapter,以及Intent的散知识点. 以下为正文:首先介绍以下我写的项目的框架,

个人小项目——Java实现WC功能

这个小项目用了两种方法解决了该功能的实现. 1.两种方法的功能和具体实现 代码可以成功运行,但是有一些情况考虑不完整,一种方法用了FileOutputStream输出流,为了解决空格无法统计问题,对文本实现一次重写,用String类的replace方法将空格用其他字符替换,然后可以实现字母数,单词数和行数的统计.另一种方法没有重新写文本,直接在缓冲区中处理文本,除上面三个之外还统计了空格数,字符总数和标点符号数. 2.优缺点比较 方法一可以统计出空行,而方法二由于是使用bufferedReade