簡體   English   中英

瑣事游戲設計模式

[英]Trivia game design pattern

我需要有關創建瑣事問答游戲的一些設計問題的幫助。 在繼續之前,我可以使用一些建議,如果以下方法可以/可改進/容易失敗/..。 這是我到目前為止想出的:

public class Question {
    private String question;
    private List<Answer> answers;
    private int statisticsCorrectness;
}

public class Answer {
    private String answer;
    private boolean correct;
}

我不是在一個持有者類中創建問題,我可以用它來獲取一組問題(這是我不確定的地方,把它放在一個類中似乎是錯誤的,以前從未見過它)

public class StaticStuff {

    public Module getModuleOne(){
        Module module;


        //Question1
        Answer a = new Answer("Ten", true);
        Answer a1 = new Answer("Five", false);
        Answer a2 = new Answer("Six", false);
        Answer a3 = new Answer("Eight", false);
        Answer a4 = new Answer("10", true);
        Answer[] listOfAn = new Answer[]{a, a1, a2, a3, a4};

        Question q1 = new Question("What is 5 plus 5", Arrays.asList(listOfAn));
        //End Question1

        //Question2
        //....
        //End Question2

        //Add all questions
        Question[] questionsForFirstModule = new Question[]{q1};

        //Create the module that will be returned
        module = new Module("Introduction", Arrays.asList(questionsForFirstLession));

        return module;
    }
}

我計划使用它的方式是在應用程序第一次運行時將每個 Module 對象保存在 SharedPreferences 中(使用 Json 或parcelable)。 比當我需要這組問題時,我只需從 SharedPreferences 獲取對象並將其“更新”發送回 SharedPreferences。

如果需要指定一個明確的問題,那就是:與使用數據庫相比,以這種方式保存對象是否有很多缺點。 也許我應該采用數據庫方法(我在寫完所有這些之后才意識到的)?

我查看了谷歌“Trivia game java tutorial”的前三頁,但並沒有真正從中獲得足夠的信息。

在這里使用外部數據文件會更好。 前段時間我為編碼挑戰寫了一個百萬富翁類型的問答游戲,我使用了這樣的東西:

問題 - 問題文本 - 答案(字符串數組 [4])

這是通過讀取一個簡單的文本文件來填充的,今天您可以使用 JSON 或 XML,但是純文本文件運行良好,只是沒有那么靈活。

為此,您可以使用 Room 或類似的東西,但請記住,編輯這些問題將是您經常做的事情,因此請盡可能簡化。

在我的版本中,數據中的第一個答案總是正確的。 在顯示它們隨機排列了順序,主要是為了讓寫下問題更容易,因為這需要大量工作,而你想讓它變得容易。

考慮將問題的顯示頻率與時間戳結合起來存儲,以便盡可能避免重復這些問題。

在 android 中,創建一個活動來顯示帶有可能答案的問題,然后單擊顯示選擇的結果,然后更改 ViewModel 數據以顯示下一個問題。

分數和其他變量可以通過使用通常的方法來處理狀態變化來持久化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM