【IOS】自己写的一个舒尔特方格app
来源:互联网 发布:矩阵计算 第四版pdf 编辑:程序博客网 时间:2024/05/16 15:53
这是我自己用来练手的一个app,实现了基本的功能...感觉还不错,分享出来,欢迎批评指正(附下载地址,最下边)
//// ShuConfigView.h// ShuRect//// Created by 东 王 on 12-3-30.// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.//#import <UIKit/UIKit.h>#import <QuartzCore/QuartzCore.h>#import "GameView.h"@interface ShuConfigView : UIViewController{ UIView *backView; UIView *btnView; UIButton *modeBtn; //模式按钮 UIButton *numberBtn; //数量按钮 UIButton *beginBtn; //开始按钮 UIImage *kidsImage; //幼儿模式图片 UIImage *memoryImage; //记忆模式图片 UIImage *adultImage; //成人模式图片 UIImage *numThreeImage; //3*3图片 UIImage *numFourImage; //4*4图片 UIImage *numFiveImage; //5*5图片 UIImage *gameBeginImage; //开始按钮图片 GameView *toGameView; int modeInt; int numInt;}@property (nonatomic, retain) UIButton *modeBtn;@property (nonatomic, retain) UIButton *numberBtn;@property (nonatomic, retain) UIButton *beginBtn;@property (nonatomic, retain) UIView *backView;@property (nonatomic, retain) UIView *btnView;@property (nonatomic, retain) UIImage *kidsImage;@property (nonatomic, retain) UIImage *memoryImage;@property (nonatomic, retain) UIImage *adultImage;@property (nonatomic, retain) UIImage *numThreeImage;@property (nonatomic, retain) UIImage *numFourImage;@property (nonatomic, retain) UIImage *numFiveImage;@property (nonatomic, retain) UIImage *gameBeginImage;@property (nonatomic, retain) GameView *toGameView;@end
//// ShuConfigView.m// ShuRect//// Created by 东 王 on 12-3-30.// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.//#import "ShuConfigView.h"//#define kDuration 0.7 //动画持续播放时间@implementation ShuConfigView@synthesize modeBtn,numberBtn,beginBtn;@synthesize backView,btnView;@synthesize kidsImage,memoryImage,adultImage,numThreeImage,numFourImage,numFiveImage,gameBeginImage;@synthesize toGameView;- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization modeInt = 0; numInt = 3; backView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; btnView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; UIImage *backImage = [UIImage imageNamed:@"background.png"]; UIImageView *backImageView = [[UIImageView alloc] initWithImage:backImage]; [backView addSubview:backImageView]; kidsImage = [UIImage imageNamed:@"child_mode_n.png"]; memoryImage = [UIImage imageNamed:@"memory_mode_n.png"]; adultImage = [UIImage imageNamed:@"audlt_mode_n.png"]; numThreeImage = [UIImage imageNamed:@"level3_n.png"]; numFourImage = [UIImage imageNamed:@"level4_n.png"]; numFiveImage = [UIImage imageNamed:@"level5_n.png"]; gameBeginImage = [UIImage imageNamed:@"start_n.png"]; modeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [modeBtn setImage:kidsImage forState:UIControlStateNormal]; [modeBtn setFrame:CGRectMake(46, 200, 227, 50)]; [modeBtn addTarget:self action:@selector(modePressed:) forControlEvents:UIControlEventTouchUpInside]; [btnView addSubview:modeBtn]; numberBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [numberBtn setImage:numThreeImage forState:UIControlStateNormal]; [numberBtn setFrame:CGRectMake(46, 270, 227, 50)]; [numberBtn addTarget:self action:@selector(numPressed:) forControlEvents:UIControlEventTouchUpInside]; [btnView addSubview:numberBtn]; beginBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [beginBtn setImage:gameBeginImage forState:UIControlStateNormal]; [beginBtn setFrame:CGRectMake(46, 340, 227, 50)]; [beginBtn addTarget:self action:@selector(beginPressed:) forControlEvents:UIControlEventTouchUpInside]; [btnView addSubview:beginBtn]; } return self;}/* *********模式按钮按下 */-(void)modePressed:(id)sender{ UIButton *myBtn = (UIButton *)sender; modeInt ++; if (modeInt == 1) { [myBtn setImage:memoryImage forState:UIControlStateNormal]; } else if(modeInt == 2) { [myBtn setImage:adultImage forState:UIControlStateNormal]; } else { modeInt = 0; [myBtn setImage:kidsImage forState:UIControlStateNormal]; } NSLog(@"进来%d",modeInt);}/* *********开始按钮按下 */-(void)beginPressed:(id)sender{ toGameView = [[GameView alloc] init]; toGameView.modNum = modeInt; switch (numInt) { case 3: toGameView.rowNum = 3; break; case 4: toGameView.rowNum = 4; break; case 5: toGameView.rowNum = 5; break; default: break; } /* *另一种跳转效果 */ /*CATransition *animation = [CATransition animation]; animation.delegate = self; animation.duration = kDuration; animation.timingFunction = UIViewAnimationCurveEaseInOut; animation.type = kCATransitionFade; animation.subtype = kCATransitionFromLeft;*/ [toGameView resetGame:nil]; [self presentModalViewController:toGameView animated:YES];}/* *********数量按钮按下 */-(void)numPressed:(id)sender{ UIButton *myBtn = (UIButton *)sender; if (numInt == 3) { numInt = 4; [myBtn setImage:numFourImage forState:UIControlStateNormal]; } else if (numInt == 4) { numInt = 5; [myBtn setImage:numFiveImage forState:UIControlStateNormal]; }else { numInt = 3; [myBtn setImage:numThreeImage forState:UIControlStateNormal]; }}- (void)viewDidLoad{ [super viewDidLoad];// Do any additional setup after loading the view. [self.view addSubview:backView]; [self.view addSubview:btnView];}- (void)viewDidUnload{ [super viewDidUnload]; // Release any retained subviews of the main view.}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ return (interfaceOrientation == UIInterfaceOrientationPortrait);}@end
//// GameView.m// ShuRect//// Created by 东 王 on 12-3-30.// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.//#import "GameView.h"@interface GameView ()-(void)initNumArray;-(void)numBtnPressed:(id)sender;@end@implementation GameView@synthesize gameBtnView,gameBackView;@synthesize gameNumArray;@synthesize gameNumBtn,redBtnImage,greenBtnImage;@synthesize resetGameBtn,resetBtnNormalImage,resetBtnPressedImage,backGameBtn,backBtnNormalImage,backBtnPressedImage,stillTime,beginTime;@synthesize rowNum,modNum;- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization rowNum = 3; modNum = 0; currentNum = 1; timeInt = 3; timeFloat = 0.00; stillTime = [[UILabel alloc] initWithFrame:CGRectMake(110, 30, 100, 40)]; [stillTime setText:@"3"]; [stillTime setBackgroundColor:[UIColor colorWithWhite:0 alpha:0]]; [stillTime setTextAlignment:UITextAlignmentCenter]; beginTime = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES]; [self initNumArray]; gameBackView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; gameBtnView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; UIImage *backImage = [UIImage imageNamed:@"background.png"]; UIImageView *backImageView = [[UIImageView alloc] initWithImage:backImage]; [gameBackView addSubview:backImageView]; redBtnImage = [UIImage imageNamed:@"orange.png"]; greenBtnImage = [UIImage imageNamed:@"green.png"]; resetBtnNormalImage = [UIImage imageNamed:@"btn_replay_normal.png"]; resetBtnPressedImage = [UIImage imageNamed:@"btn_replay_pressed.png"]; resetGameBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [resetGameBtn setImage:resetBtnNormalImage forState:UIControlStateNormal]; [resetGameBtn setImage:resetBtnPressedImage forState:UIControlEventTouchDown]; [resetGameBtn setFrame:CGRectMake(240, 10, 60, 60)]; [resetGameBtn addTarget:self action:@selector(resetGame:) forControlEvents:UIControlEventTouchUpInside]; [gameBtnView addSubview:resetGameBtn]; backBtnNormalImage = [UIImage imageNamed:@"btn_back_normal.png"]; backBtnPressedImage = [UIImage imageNamed:@"btn_back_pressed.png"]; backGameBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [backGameBtn setImage:backBtnNormalImage forState:UIControlStateNormal]; [backGameBtn setImage:backBtnPressedImage forState:UIControlEventTouchDown]; [backGameBtn setFrame:CGRectMake(10, 10, 60, 60)]; [backGameBtn addTarget:self action:@selector(backGame:) forControlEvents:UIControlEventTouchUpInside]; [gameBackView addSubview:stillTime]; [gameBtnView addSubview:backGameBtn]; } return self;}/* *******倒数3秒开始 */-(void)timerFireMethod:(NSTimer *)theTimer{ if (timeInt == 1) { [beginTime invalidate]; if (modNum == 1) { [self initBtnRectMemory]; } NSLog(@"jieshu"); beginTime = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(timerFireMethodBegin:) userInfo:nil repeats:YES]; return; } timeInt--; [stillTime setText:[NSString stringWithFormat:@"%d",timeInt]]; }/* *******开始毫秒计时 */-(void)timerFireMethodBegin:(NSTimer *)theTimer{ timeFloat+=0.01; [stillTime setText:[NSString stringWithFormat:@"%.2f",timeFloat]];}/* *******返回主菜单 */-(void)backGame:(id)sender{ /*ShuConfigView *backHome = [[ShuConfigView alloc] init]; backHome.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self presentModalViewController:backHome animated:YES];*/ self.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self dismissModalViewControllerAnimated:YES];}/* *******重新游戏 */-(void)resetGame:(id)sender{ if (gameNumBtn!=nil) { gameNumBtn = nil; [gameBtnView removeFromSuperview]; } currentNum = 1; NSLog(@"%d",rowNum); [self initNumArray]; [self initBtnRect]; [self.view addSubview:gameBtnView]; timeFloat = 0.00; timeInt = 3; [beginTime invalidate]; [stillTime setText:[NSString stringWithFormat:@"%d",timeInt]]; beginTime = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES]; }/* *******初始化数字按钮 */-(void)initBtnRect{ float btnWidth = (290-10*(rowNum-1))/rowNum; float btnHeight = (380-10*(rowNum-1))/rowNum; for (int i = 0, countNum = 1; i<rowNum; i++) { for (int j = 0; j<rowNum; j++) { gameNumBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [gameNumBtn setBackgroundImage:redBtnImage forState:UIControlStateNormal]; [gameNumBtn setTitle:[NSString stringWithFormat:@"%d",[[gameNumArray objectAtIndex:countNum-1] intValue]] forState:UIControlStateNormal]; [gameNumBtn setFrame:CGRectMake(15+(btnWidth+10)*j, 80+(btnHeight+10)*i, btnWidth, btnHeight)]; [gameNumBtn addTarget:self action:@selector(numBtnPressed:) forControlEvents:UIControlEventTouchUpInside]; gameNumBtn.tag = [[gameNumArray objectAtIndex:countNum-1] intValue]; [gameBtnView addSubview:gameNumBtn]; countNum++; } }}/* *******记忆模式下再次初始化数字按钮 */-(void)initBtnRectMemory{ float btnWidth = (290-10*(rowNum-1))/rowNum; float btnHeight = (380-10*(rowNum-1))/rowNum; for (int i = 0, countNum = 1; i<rowNum; i++) { for (int j = 0; j<rowNum; j++) { gameNumBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [gameNumBtn setBackgroundImage:redBtnImage forState:UIControlStateNormal]; //[gameNumBtn setTitle:[NSString stringWithFormat:@"%d",[[gameNumArray objectAtIndex:countNum-1] intValue]] forState:UIControlStateNormal]; [gameNumBtn setFrame:CGRectMake(15+(btnWidth+10)*j, 80+(btnHeight+10)*i, btnWidth, btnHeight)]; [gameNumBtn addTarget:self action:@selector(numBtnPressed:) forControlEvents:UIControlEventTouchUpInside]; gameNumBtn.tag = [[gameNumArray objectAtIndex:countNum-1] intValue]; [gameBtnView addSubview:gameNumBtn]; countNum++; } }}/* *******按下数字按钮时触发的函数 */-(void)numBtnPressed:(id)sender{ UIButton *myBtn = (UIButton *)sender; NSLog(@"myBtnNum:%d",myBtn.tag); if (timeFloat >= 0.01) { if (myBtn.tag == currentNum) { if (modNum == 0) { [myBtn setBackgroundImage:greenBtnImage forState:UIControlStateNormal]; } if (modNum == 1) { [myBtn setTitle:[NSString stringWithFormat:@"%d",myBtn.tag] forState:UIControlStateNormal]; } if (myBtn.tag == rowNum*rowNum) { [beginTime invalidate]; GameAlertC *alert = [[GameAlertC alloc] initGameAlert:@"alertBack.jpg" rect:CGRectMake(0, 0, 300, 300) title:[NSString stringWithFormat:@"恭喜你:%.2f秒",timeFloat]]; alert._delegate = self; [self.view addSubview:alert]; return; } currentNum ++; } }}/* *******点击弹出层按钮后响应函数 */-(void) AfterClickBtn:(id)sender{ UIButton * sc = (UIButton *)sender; if (sc.tag == 1) { [self dismissModalViewControllerAnimated:YES]; }else { [self resetGame:nil]; }}/* *******初始化随机数组 */-(void)initNumArray{ int array_insert; gameNumArray = [NSMutableArray arrayWithCapacity:rowNum*rowNum]; array_insert=(int)(arc4random() % (rowNum*rowNum))+1; [gameNumArray addObject:[NSNumber numberWithInt:array_insert]]; for (int i=0; i<rowNum*rowNum-1; i++) { while ([gameNumArray containsObject:[NSNumber numberWithInt:array_insert]]) { array_insert=(int)(arc4random() % (rowNum*rowNum))+1; } [gameNumArray addObject:[NSNumber numberWithInt:array_insert]]; }}- (void)viewDidLoad{ [super viewDidLoad];// Do any additional setup after loading the view. NSLog(@"你好"); [self.view addSubview:gameBackView]; [self.view addSubview:gameBtnView];}- (void)viewDidUnload{ [super viewDidUnload]; // Release any retained subviews of the main view.}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ return (interfaceOrientation == UIInterfaceOrientationPortrait);}@end
//// GameAlertC.m// ShuRect//// Created by 东 王 on 12-4-4.// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.//#import "GameAlertC.h"@implementation GameAlertC@synthesize _delegate;- (id)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { // Initialization code } return self;}-(id)initGameAlert:(NSString *)backImageStr rect:(CGRect)backRect title:(NSString *)alertTitleStr{ self = [super initWithFrame:CGRectMake(0, 0, 320, 480)]; if (self) { self.userInteractionEnabled = YES; NSLog(@"RectHeight:%f",backRect.size.height*2/3); UIImageView *alertBackImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:backImageStr]]; alertBackImageView.userInteractionEnabled = YES; [alertBackImageView setFrame:backRect]; UILabel *alertLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, backRect.size.width, backRect.size.height*2/3)]; [alertLabel setText:alertTitleStr]; [alertLabel setBackgroundColor:[UIColor colorWithWhite:0 alpha:0]]; [alertLabel setTextAlignment:UITextAlignmentCenter]; alertLabel.center = alertBackImageView.center; [alertBackImageView addSubview:alertLabel]; alertBackImageView.center = self.center; //设置弹出层圆角及border颜色宽度 alertBackImageView.layer.cornerRadius = 8; alertBackImageView.layer.borderWidth = 2; alertBackImageView.layer.borderColor = [UIColor lightGrayColor].CGColor; alertBackImageView.layer.masksToBounds = YES; //设置弹出动画 CAKeyframeAnimation *animation; animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; animation.duration = 0.3; animation.delegate = self; animation.removedOnCompletion = YES; animation.fillMode = kCAFillModeForwards; NSMutableArray *values = [NSMutableArray array]; [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1, 0.1, 1.0)]]; [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.2, 1.2, 1.0)]]; [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.9, 0.9, 0.9)]]; [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 1.0)]]; animation.values = values; [alertBackImageView.layer addAnimation:animation forKey:nil]; UIButton *okBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; okBtn.tag = 1; okBtn.frame = CGRectMake(alertBackImageView.frame.size.width/2-55, 6*alertBackImageView.frame.size.height/7-25, 50, 30); /*[okBtn setBackgroundColor:[UIColor yellowColor]]; okBtn.layer.cornerRadius = 8; okBtn.layer.masksToBounds = YES;*/ [okBtn setTitle:@"Menu" forState:UIControlStateNormal]; [okBtn addTarget:self action:@selector(popAlert:) forControlEvents:UIControlEventTouchUpInside]; [alertBackImageView addSubview:okBtn]; UIButton *againBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; againBtn.frame = CGRectMake(alertBackImageView.frame.size.width/2+45, 6*alertBackImageView.frame.size.height/7-25, 50, 30); /*[okBtn setBackgroundColor:[UIColor yellowColor]]; okBtn.layer.cornerRadius = 8; okBtn.layer.masksToBounds = YES;*/ [againBtn setTitle:@"Again" forState:UIControlStateNormal]; againBtn.tag = 2; [againBtn addTarget:self action:@selector(popAlert:) forControlEvents:UIControlEventTouchUpInside]; [alertBackImageView addSubview:againBtn]; [self addSubview:alertBackImageView]; } return self;}//点击弹出层按钮响应函数-(void)popAlert:(id)sender{ UIButton *switchBtn = (UIButton *)sender; [_delegate AfterClickBtn:switchBtn]; [self removeFromSuperview];}/*// Only override drawRect: if you perform custom drawing.// An empty implementation adversely affects performance during animation.- (void)drawRect:(CGRect)rect{ // Drawing code}*/@end
完整项目下载地址:http://download.csdn.net/detail/dongge_111/4206406
- 【IOS】自己写的一个舒尔特方格app
- 自己写的一个简单的android记事本app
- android-为自己的APP写一个ContentProvider
- 一个iOS开发者业余开发自己APP的经验分享
- IOS 自己设计的一个APP,附源码
- 写一个自己的引擎
- 写一个自己的引擎
- 自己写的一个分页
- 自己写的一个ArrayList
- 自己写的一个linkedList
- 自己写的一个例子
- 自己写的一个isNumeric。
- 写一个自己的Filter
- 写一个自己的Dictionary
- 写一个自己的listview
- 自己写的一个请求
- 写一个自己的springMVC?
- 自己写的一个CircleImageView
- 3.0 的 U方法 {:U('/Index/Content/id/'.$Ts[0]['list'][0]['id'])}
- JdbcTemplate.queryForList(String sql)
- JfreeChart的使用
- c/c++中const与static的区别
- 浏览器窗口关闭事件的监听搜集
- 【IOS】自己写的一个舒尔特方格app
- 用watij爬取网页内容
- 集合一
- POST+referer注入中转脚本
- J2EE领域的一些技术框架结构图
- 在tomcat中使用数据库连接池
- dalvik 学习笔记(一)
- SurfaceHolder
- 数学之美 系列九 -- 如何确定网页和查询的相关性