【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


原创粉丝点击