---
# System prepended metadata

title: GameToMem MVP

---

# GameToMem MVP

```
嗨！以下是分工表

洪偉豪、謝承彧：Game相關的fragment、Timer、HomePage、Result
陳聖和：flashcard
陳昭汝：Article、Theme
郭晏昀：Setting、Profile

請大家依照自己要負責的頁面，列出兩種東西：
1. 該頁面需要拿資料的動作
2. 該頁面需要用到的資料型別

例如：

Article Fragment 一開始初始化時需要拿到使用者所選擇文章的資料
，使用者在按 submit 鍵時，Article Fragment 需要拿到正確答案的資料
，在這過程中，Article Fragment會需要的資料型別可能有以下

1. 資料的內容（Array<String>）
2. 第幾篇文章（Int）
3. 上一次中途離開所儲存的作答記錄（Array<Int>）

需要拿資料的動作可能有

1. 拿到使用者所選擇文章的資料
2. 拿到正確答案的資料
3. 拿到上一次的作答記錄


以上請大家列出各自的 Fragment 內的
1. 該頁面需要拿資料的動作
2. 該頁面需要用到的資料型別

謝承彧跟我才能把他們加入新的 template 之中
另外如果你們已經開始在舊的模板上寫
請不用擔心，你們寫的東西可以直接 migrate 到新的模板上
``` 

- 謝承彧
#### GamePageFragment
1. 該頁面需要拿資料的動作
    * 拿遊戲需要的單字卡集(一個list)：可能我給一個id，就可以拿到那個序號的單字集。
        ```
        usecases/GetVocabularySet
        
        data class VocabularySetModel(
            val id: Int,
            val vocabularySet: List<Vocabulary>,
        )
        ```
    * 該單字集的歷史紀錄 或者 整個遊戲的歷史紀錄 
        ```
        usecases/GetHistoryData
        
        data class HistoryVocabularySetRecord(
            val lastVocabularySet: List<Vocabulary>,
            val lastVocabularyId: Int,
            val score: Int,
            val time: Int
        )
        ```
2. 該頁面需要用到的資料型別
    * 單字集 = List of Vocabulary
        ```
        val vocabularySet: List<Vocabulary>
        ```
    * 單字，裡面要有一個id(Int)，有完整的單字(String)，中文意思(String)，將單字切成一半的切割點(Int)。
        ```
        data class Vocabulary (
            val id: Int,
            val word: String,
            val chinese: String,
            val breakpoint: Int
        )
        ```
    * P.S. 在原先的tetris project的Vocabulary長這樣(下圖)，但我覺得有一點奇怪，所以把前兩個拿掉，加上切割點，看看會用到這個資料的人覺得可不可以。
```kotlin=
data class TetrisVocabulary (
    val prefixRow: String,
    val suffixRow: String,
    val answerRow: String,
    val chineseMeaning: String
)
```
#### HomePageFragment
1. 該頁面需要拿資料的動作
    * 取得需要顯示在首頁的"文章"資料(一個list)
    * 取得需要顯示在首頁的"單字"資料(一個list)
    * 取得需要顯示在首頁的"主題"資料(一個list)
2. 該頁面需要用到的資料型別
    * 我覺得雖然有三個動作，但是應該可以用一個"東西"裝起來就可以了吧?
    * 那個東西包含：id(Int)、圖片(bitmap 或者 Uri)、要顯示的名字(String)

- 洪偉豪


- 陳聖和
#### Flashcard
overview: 
1. 左右滑動單字卡的動畫
2. 單字卡翻面的動畫
3. 直接進遊戲的Skip按鈕
4. 倒數計時功能

該頁面需要拿資料的動作:

1. 單字集ID、內容
2. 倒數計時的設定時間

該頁面需要用到的資料型別:

1. 單字集ID (Int)
2. 單字集內容 (string陣列)
3. 倒數計時時間 (Int)
    
- 陳昭汝
#### Article
Article Fragment 一開始初始化時需要拿到使用者所選擇文章的資料，使用者在按 submit 鍵時，Article Fragment 需要拿到正確答案的資料，並依照radio buttons的內容顯示正確的答案，最後按下ok鍵回主頁面
    
該頁面需要拿資料的動作

1. 拿到使用者所選擇文章的資料
2. 拿到正確答案的資料

該頁面需要用到的資料型別

1. 資料的內容 文章、選擇題(四題、每題四個選項)
（Array<String>）
2. 第幾篇文章（Int）
3. Answer - A, B, C, D (Char)

#### Theme
Theme Fragment 一開始初始化時需要拿到使用者所選擇Theme的資料，使用者在按 click 鍵時，Theme Fragment 需要拿到正確的單字卡的資料
    
該頁面需要拿資料的動作

1. 拿到使用者所選擇Theme的資料
    （中英文單字、圖片、click按鈕位置）
2. 拿到正確的單字卡的資料

該頁面需要用到的資料型別

1. 資料的內容
（Array<String>、圖片、click按鈕位置）
2. 第幾個Theme（Int）


 


- 郭晏昀
    #### Settings

    該頁面需要拿資料的動作


    該頁面需要用到的資料型別



    #### Profile

    該頁面需要拿資料的動作

    個人資料
        1. 姓名
        2. 大頭照
    
    成就
        1. 成就的數量 
        2. 成就的圖片
        3. 成就的詳細敘述
    
    ```
    data class AchievementSetModel(
        val id: Int,
        val achievement: List<Achievement>,
    )

    data class Achievement (
        val id: Int,
        val img: Uri,
        val description: String,
        val obtained: Boolean
    )
    ```
    

    該頁面需要用到的資料型別


        1.彈出成就的圖片及敘述
        （Array<string>、圖片）