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文檔記錄下來,而不是乾乾地聽着或者本身幹什麼其餘事情。
  • 我很喜歡王國維提出的「讀書三境界」:古今之成大事業、大學問者,必通過三種之境界:'昨夜西風凋碧樹,獨上高樓,望盡天涯路'。此第一境也。'衣帶漸寬終不悔,爲伊消得人憔悴。'此第二境也。'衆裏尋他千百度,驀然回首,那人卻在燈火闌珊處'。此第三境也。我以爲不僅是讀書,換到學習任何一門課程上也應該是這樣。
  • 剛開始學習的時候,重要的是「望天涯路」,要看,要博覽,不能只侷限在課本上的內容和代碼,要學會本身去上完查,本身去不斷修改代碼嘗試新的東西。到了第二階段就是要學會思考,學而不思則罔,思而不學則殆,就好像每週的學習都要讓咱們記錄在看教材和運行過程當中的問題,這其實就是一個引導咱們去思考的過程,不能浮於知識的表面,必定要有本身深入的理解,遇到問題時,不要作「伸手黨」,直接去問老師,問助教或者問同窗,那樣對學習其實並無多大的幫助。第三個階段能夠叫作「返璞歸真」,我相信在上學期學習的過程當中你們都有這樣的經歷,爲了某一個程序修改了上百遍上千遍代碼,不論怎麼改都得不到滿意的答案,可是在最後真正找到答案的時候,就會有一種恍然大悟的感受,原來它其實並無本身想象得那麼難。
  • 本來我以爲我已經足夠努力了,但經歷了開學的一些事情以後我發現,我尚未努力沒有優秀到可讓人不用顧忌其餘任何事地選擇我,很遺憾我也沒能作到我所指望的「珍惜天賦,保持悲憫」,將來還有很長的路要走,加油吧。

參考資料

相關文章
相關標籤/搜索