20172303 20172322 2017-2018-2 暑假做业 结对编程项目-舒尔特方格(及获小黄衫感想)

20172303 20172322 2017-2018-2 暑假做业 结对编程项目-舒尔特方格(及获小黄衫感想)

项目介绍

结对伙伴

  • 姓名:张昊然
  • 学号:20172322

舒尔特方格简介

  • 舒尔特方格是一种帮助人们提升注意力的简单训练方法。
  • 最先的舒尔特方格,是在一张方形卡片上画上 1cm × 1cm 的 25 个方格,格子内任意填写上阿拉伯数字 1 ~ 25 等共 25 个数字。训练时,要求被测者用手指按 1 ~ 25 的顺序依次指出其位置,同时诵读出声,施测者一旁记录所用时间。数完 25 个数字所用时间越短,注意力水平越高。
  • 舒尔特方格是全世界范围内最简单,最有效也是最科学的注意力训练方法。寻找目标数字时,注意力是须要极度集中的,把这短暂的高强度的集中精力过程反复练习,大脑的集中注意力功能就会不断的加固、提升,注意水平愈来愈高。

项目相关地址

需求分析

  • 实现舒尔特方格游戏的功能
    • 在n排n列的n^2个方块中,使1~n共n个数字随机分布在方块中
    • 用户按数字由小到大的顺序进行点击,当点击错误时弹出警告窗口,点击按钮后返回游戏。
    • 当完成游戏后,弹出窗口提示游戏结束,点击按钮后返回主界面
  • 拓展需求
    • 增长一个介绍游戏内容和游戏方法的界面
    • 有简单(3×3)、中等(5×5)、困难(7×7)三种模式能够选择

相关过程及解释

其实在这个程序中,最主要也是最重要的部分就是舒尔特方格的游戏部分,如何生成排列布局,实现游戏功能等是其中最核心的过程html

生成排列布局

  • 首先要生成一个布局,在这个布局中,n^2个正方形按钮按每行n个、每列n个进行排列,造成一个更大的正方形。
  • 在《Java和Android开发学习指南》的27章中提供了五种布局,依据咱们所想生成的布局需求,有LinearLayoutRelativeLayoutTableLayout能够选择。而书上又说明了TableLayout类实际上是LinearLayout类的一个子类,因此最后问题就归结为选择LinearLayout仍是RelativeLayout
  • 在查了许多资料后,咱们发现虽然RelativeLayout须要对其子View进行两次measure过程,而LinearLayout则只需一次measure过程,显然会快于RelativeLayout。可是在诸如ListView等控件中,使用LinearLayout容易产生多层嵌套的布局结构,这在性能上是很差的。而RelativeLayout因其原理上的灵活性,一般层级结构都比较扁平,不少使用LinearLayout的状况均可以用一个RelativeLayout来替代,以下降布局的嵌套层级,优化性能。 因此咱们最终选择使用RelativeLayout来进行布局。
//批量随机生成按钮
private void findViews(RelativeLayout layout) {
        for (int i = 0, j = 0; i < 25; i++) {
            btn[i] = new Button(this);
            int temp = getRandom();
            btn[i].setText(temp + "");
            btn[i].setId(temp);
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                    length, length);
            if (i != 0 & i % 5 == 0) {
                j++;
            }
            params.leftMargin = 40 + length * (i % 5) - (i % 5) * 10;
            params.topMargin = 40 + length * j - j * 10;
            layout.addView(btn[i], params);
        }
    }

随机生成数字来设置动态按钮的id和text

private Integer getRandom() {
        Random random = new Random(System.currentTimeMillis());
        int i = 0;
        do {
            i = random.nextInt(25) + 1; }
        while (map.get(i) != null);
        map.put(i, i + "");

        return i;
    }
  • 为了防止产生重复的随机数,这里使用Map类来限定随机数不发生重复。

设定点击错误时和游戏结束时弹出的对话框

new AlertDialog.Builder(SecondActivity.this)
        .setTitle("警告")
        .setMessage("只能按顺序进行点击")
        .setPositiveButton("返回游戏",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog,int which) {}
        }).show();
  • 游戏结束时弹出的对话框
new AlertDialog.Builder(SecondActivity.this)
        .setTitle("结束")
        .setMessage("恭喜你完成游戏!")
        .setPositiveButton("好的",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog,int which) {
                Intent intent = new Intent(SecondActivity.this,MainActivity.class);
                startActivity(intent);
            }
        }).show();

导出成apk文件

  • 选择Build -> Generate Signed APK
  • 弹出新窗口后选择Create new…
  • 设置好路径、密码等信息后选择OK

  • 而后一路Next最后选择Finish便可

成员项目感想

  • 范雯琪:其实咱们的app如今实现的功能很简单,起初咱们只作了5×5一个模式的,后来才加入了其余模式和游戏介绍,但总体而言还有不少提高的余地,也没有作到界面优化,可是在这个过程当中也学到了不少,是个很是有趣而有意义的过程。
  • 张昊然:在一开始编一个app比较难,但在过程当中学习,发现是能够试验的。经过此次编写,在暑假中复习了课本知识,学习了相关技能,收获不小。另外还要感谢,项目中的另一位成员,她的贡献比我大不少,咱们一块儿协力完成了本次任务。

获小黄衫感想

  • 很惭愧拖了整整两个月才写感想,得到小黄衫纯属是意外收获,由于我自认为在班里学习java不是最刻苦的,也不是最有天赋学得最好的。可能惟一的优势就是可以坚持,在学期期末你们把重心放到复习上的时候,依旧坚持好好写博客。学习方法什么的通过了一个学期你们各自本身的学习方法应该都已经成熟了,我惟一以为本身比较好的习惯是老师上课时讲的一些知识点或者错题会用word文档记录下来,而不是干干地听着或者本身干什么其余事情。
  • 我很喜欢王国维提出的“读书三境界”:古今之成大事业、大学问者,必通过三种之境界:'昨夜西风凋碧树,独上高楼,望尽天涯路'。此第一境也。'衣带渐宽终不悔,为伊消得人憔悴。'此第二境也。'众里寻他千百度,蓦然回首,那人却在灯火阑珊处'。此第三境也。我以为不仅是读书,换到学习任何一门课程上也应该是这样。
  • 刚开始学习的时候,重要的是“望天涯路”,要看,要博览,不能只局限在课本上的内容和代码,要学会本身去上完查,本身去不断修改代码尝试新的东西。到了第二阶段就是要学会思考,学而不思则罔,思而不学则殆,就好像每周的学习都要让咱们记录在看教材和运行过程当中的问题,这其实就是一个引导咱们去思考的过程,不能浮于知识的表面,必定要有本身深入的理解,遇到问题时,不要作“伸手党”,直接去问老师,问助教或者问同窗,那样对学习其实并无多大的帮助。第三个阶段能够叫作“返璞归真”,我相信在上学期学习的过程当中你们都有这样的经历,为了某一个程序修改了上百遍上千遍代码,不论怎么改都得不到满意的答案,可是在最后真正找到答案的时候,就会有一种恍然大悟的感受,原来它其实并无本身想象得那么难。
  • 本来我以为我已经足够努力了,但经历了开学的一些事情以后我发现,我尚未努力没有优秀到可让人不用顾忌其余任何事地选择我,很遗憾我也没能作到我所指望的“珍惜天赋,保持悲悯”,将来还有很长的路要走,加油吧。

参考资料

相关文章
相关标签/搜索