<C# 程序设计>之猜猜看

程序主界面



程序文件目录


(xcode开发程序模板自动生成目录,内含各种方法可以重写,而我的程序是单界面,所以只用一个ViewController, .h为接口文件, .m为实现文件,代码主要在ViewController.m, student_photo 2是学生照片的文件夹,包含在工程里)


storyboard文件


(storyboard可以通过拖拽来添加插件并设置属性,也可以实现多个界面的跳转,使用storyboard可以大大减少代码量跟工作量,当然也可以使用纯代码的方式来编写,这里由于我没有加约束,所以此程序按照我的设计只能在Iphone5或5s上运行,否则界面会出现各种显示不完全)


ViewController.m

//
//  ViewController.m
//  caicaikan
//
//  Created by 林嘉文 on 15/6/15.
//  Copyright (c) 2015年 linjiawen. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()
//IBOutlet和IBAction为storyboard创建的对象和方法
@property (weak, nonatomic) IBOutlet UIImageView *Aimage;
@property (weak, nonatomic) IBOutlet UIImageView *Bimage;
@property (weak, nonatomic) IBOutlet UIImageView *Cimage;
@property (weak, nonatomic) IBOutlet UILabel *NameLabel;
-(void) reset;
- (IBAction)atap:(id)sender;
- (IBAction)btap:(id)sender;
- (IBAction)ctap:(id)sender;
@property (weak, nonatomic) IBOutlet UILabel *HintLabel;
@end

@implementation ViewController
{
    //a,b,c,i作为索引号调用数组元素
    int a,b,c,i;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self reset];
    self.HintLabel.text = @"你还没答题.";
}

//重置函数
-(void) reset {
    //将图片名称存入数组
    NSArray *photoname = [NSArray arrayWithObjects:@"201211671101蔡济屹.jpg",@"201211671102蔡小莹.jpg",@"201211671103陈柏安.jpg",@"201211671105冯黄怡.jpg",@"201211671107何燕玲.jpg",@"201211671108黄春妹.jpg",@"201211671109黄立沛.jpg",@"201211671110赖嘉仁.jpg",@"201211671111黎绮霞.jpg",@"201211671112李思婷.jpg",@"201211671113练晓发.jpg",@"201211671115刘仙妹.jpg",@"201211671116卢泳蓬.jpg",@"201211671117聂双燕.jpg",@"201211671118宋晓茹.jpg",@"201211671119谭玉梅.jpg",@"201211671120汤梓苡.jpg",@"201211671121王晓俊.jpg",@"201211671122吴丹妮.jpg",@"201211671123吴坚鑫.jpg",@"201211671124吴明辉.jpg",@"201211671125严登辉.jpg",@"201211671126余姣.jpg",@"201211671127曾婷.jpg",@"201211671128张华楠.jpg",@"201211671129张亮祖.jpg",@"201211671130周绿锋.jpg",@"201211671131朱嘉颖.jpg",@"201211671132朱文婷.jpg",@"201211671202陈春娣.jpg",@"201211671203陈家宜.jpg",@"201211671204陈穗兴.jpg",@"201211671205冯嘉敏.jpg",@"201211671207何伟明.jpg",@"201211671208黄灿凤.jpg",@"201211671209黄树森.jpg",@"201211671210黎京勇.jpg",@"201211671211林奋.jpg",@"201211671212林瑜红.jpg",@"201211671213林志杰.jpg",@"201211671215陆俊球.jpg",@"201211671216罗思阳.jpg",@"201211671217彭政.jpg",@"201211671218戚水仙.jpg",@"201211671219阮文栅.jpg",@"201211671220施学剑.jpg",@"201211671222魏明星.jpg",@"201211671223吴瑞琦.jpg",@"201211671225杨君梦.jpg",@"201211671227叶琛.jpg",@"201211671228袁春丽.jpg",@"201211671229郑碧君.jpg",@"201211671230周荃.jpg",@"201211671231周伟峰.jpg", nil];
    //通过数组取图片
    a = arc4random() % 52;
    UIImage *aimage = [UIImage imageNamed:[photoname objectAtIndex:a]];
    [self.Aimage setImage:aimage];
    b = arc4random() % 52;
    UIImage *bimage = [UIImage imageNamed:[photoname objectAtIndex:b]];
    [self.Bimage setImage:bimage];
    //跟第一张图重复的话,重新随机,直到不重复
    while (b==a) {
        b = arc4random() % 52;
        UIImage *bimage = [UIImage imageNamed:[photoname objectAtIndex:b]];
        [self.Bimage setImage:bimage];
    }
    c = arc4random() % 52;
    UIImage *cimage = [UIImage imageNamed:[photoname objectAtIndex:c]];
    [self.Cimage setImage:cimage];
    while (c==a || c==b) {
        c = arc4random() % 52;
        UIImage *cimage = [UIImage imageNamed:[photoname objectAtIndex:c]];
        [self.Cimage setImage:cimage];
    }
    //在上面三张图片中,随机文本框的名称
    i = arc4random() % 3;
    if (i==0) {
        i = a;
    }
    if (i==1) {
        i = b;
    }
    if (i==2) {
        i = c;
    }
    self.NameLabel.text = [photoname objectAtIndex:i];
    NSLog(@"%i,%i,%i,%i",a,b,c,i);
}

//点击动作发生后,判断正误,并重置
- (IBAction)atap:(id)sender {
    if (i==a) {
        self.HintLabel.text = @"恭喜你,答对了!";
    }
    else{
        self.HintLabel.text = @"很遗憾,答错了!";
    }
    [self reset];
}

- (IBAction)btap:(id)sender {
    if (i==b) {
        self.HintLabel.text = @"恭喜你,答对了!";
    }
    else{
        self.HintLabel.text = @"很遗憾,答错了!";
    }
    [self reset];
}

- (IBAction)ctap:(id)sender {
    if (i==c) {
        self.HintLabel.text = @"恭喜你,答对了!";
    }
    else{
        self.HintLabel.text = @"很遗憾,答错了!";
    }
    [self reset];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end


百度网盘链接


 开发过程

整个猜猜看程序我用了大概4小时来编写,因为之前已经有构思过整个程序的逻辑.我之前学过C++只学到了类,所以开学第一个代码行统计的作业就用C++来做,这个也是我第一个做的程序.而我从这个学期开始学习objective-c,几乎所有学习的时间都放上去了,所以我也决定猜猜看课程设计用objective-c来编写.

我是个编程的菜鸟,没写过任何程序,只跟过视频里面写例程或者再修改一下功能,所以开发猜猜看开始的时候也比较迷茫.刚开始我只用storyboard写了一个界面就想不到接下来要怎样去继续写.然后我就试着在上面显示第一张图片,这里也是我耗费最多时间的一个地方,因为我开始添加图片文件夹的时候,只添加了引用,而并没有把文件添加到工程里面.然后无论我通过纯代码,还是直接从storyboard里面直接添加图片都显示不出来.后来我去请教班上另一个一样在学习oc(objective-c简称)的同学,他说他也遇到同样的问题,后来才帮我重新添加解决了.然后我按照我的思路,首先想如何显示3张图片和1个其中的名称,因为oc里面只要图片在工程里面,就可以通过图片名称来选定显示图片,于是我就把所有图片名称放在一个数组里面,然后通过索引号选出不重复的3张图片,最后在3个索引号里面随机出一个来作为答案显示在文本框.这里的内容我全部写在了reset方法里面,方便我调用.接下来就要进行选择正确的图片,因为oc里面有现成的手势类,本来我想添加点击手势的,但发现添加了手势之后怎么点都没有反应,但百度过后里面也是说跟按钮一样写回调函数就可以,但就是实现不了.所以最后我在3张图片上面添加了3个透明的按钮,并在3个回调函数里面判断所点击的图片的索引号是否与文本框的索引号一致,然后改变最下面的文本框的状态,最后调用reset方法重置3张图片.


学习收获

可以说猜猜看是第一个我编出来有界面的程序,虽然编出来后觉得是很简单的一个程序,但其中关于程序的逻辑全是自己写出来的.

真正实际操作了storyboard来进行界面添加UIViewController,UIImageView,Label,Button这四个控件,但其实UIViewController还有更加复杂的要学.但后面3个控件基本上是掌握并能进行操作了.

还有NSArray的使用,这是个元素为对象的数组,而存储在里面的图片名称全是字符串对象,并不是普通的字符串,在oc里面NSArray的用处很广泛.


感受体会

由于是第一次开发程序,所以有点小激动,真正来说我大三这个学期才开始学习编程.在开学时很迷茫,不知道要学什么,所以借了C++来看,用了2个星期就把老师之前一年教的内容都看完了.然后迷茫之中曾经想学java,但由于学习java的人感觉太多了,而且竞争太大,最终就选择了学习ios开发,因为一个已经就业的师兄说ios开发学习swift不错,但后来加了各种开发群后,发现人家都是先学习oc的,而且swift是新出的语言,有点不完善,所以我就决定学习oc并往里面钻研,然后这个学期基本所有学习的时间都放在oc的学习上.开始时学习觉得自己什么都做不了,但我还是继续学下去,我只能相信一直学总有一天人家叫你做东西能做出来,所以就这样坚持下来了.这个猜猜看的程序也是一个证明吧,开学时说这个设计的时候我以为很难做,因为那是什么都不会,以为做不出来,但到了今天发现我坚持学了这么久,做出来并不怎么费工夫.猜猜看可以说是对我信念的一个坚定,经过了猜猜看我相信我只要继续学下去,我可以做出一些功能更加强大的东西.


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值