0

私は今、完全に機能する雑学ゲームを持っていると思います。結果ページのゲームの最後に、スコア (long) とパーセンテージ (int) が表示されます。ランク (int)、スコア (ロング)、パーセンテージ (int) の 3 つの変数が入力されるオフラインの SharePreferences ハイスコアを実装したいと考えています。最初に変数の 1 つを使用してハイスコアを実装し、後で他の 2 つを追加しようとしましたが、うまくいかないようです。以下の私のアクティビティで、私が試していた多くのコメントアウトされたコードと、他の多くの試みがすでに削除されていることがわかります。

SharedPreferences を使用するのはこれが初めてなので、まだしっかりと把握していません。

結果.java

public class Results extends Activity {

    public static final String SP_NAME = "TEST";
    public static final String INT_PERCENTAGE = "SP_percentage";
    public static final String INT_RANK = "SP_rank";
    public static final String LONG_SCORE = "SP_score";
    private SharedPreferences mPrefs;

    QuestionView qv = new QuestionView();
    ArrayList<Question> queryList = qv.getQueries();

    int cAnswers, wAnswers, percentage, rank;

    long score;

    ArrayList<Question> qs;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.resultsmain);

        mPrefs = getSharedPreferences(SP_NAME, 0);

        cAnswers = getIntent().getIntExtra("correctAnswers", -1);
        wAnswers = getIntent().getIntExtra("wrongAnswers", -1);
        score = getIntent().getLongExtra("score", -1);

        qs = getIntent().getParcelableArrayListExtra("queries");

        Button mainmenuBtn = (Button)findViewById(R.id.mainmenuBtn);
        mainmenuBtn.setText("Main Menu");

        mainmenuBtn.setOnClickListener(new OnClickListener() {
            public void onClick(View arg0) {
                restart();
            }
        }); 

        //Retrieving high score
        SharedPreferences mPrefs = getSharedPreferences(LONG_SCORE, 0);
        SharePreferences.Editor editor = prefs.edit();
        long highscore = mPrefs.getLong(LONG_SCORE, 0);

        //Saving current score as high score
/*      SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        SharedPreferences.Editor editor = settings.edit();
        editor.putInteger(HIGH_SCORE, currentScore);*/
        // Commit the edits!
        editor.commit();

        SharedPreferences prefs = mContext.getSharedPreferences("preferencename", 0);  
/*      SharedPreferences.Editor editor = prefs.edit();  
        return editor.commit();*/

        showResults();
    }

    //...other code
}
4

2 に答える 2

2

つまり、SharedPreference の使用法を理解していないということです。このハイスコアなものには、SQLite データベースまたはテキスト ファイルを使用する必要があります。

ガイドhttp://developer.android.com/guide/topics/data/data-storage.htmlを読んで、Android のさまざまな種類の永続化方法について理解を深めてください。

ところで、あなたが言った3つの列(rank(int)、score(long)、percentage(int))を含むテーブルを作成し、CRUDを少し実行して、ハイスコアをうまく​​機能させる必要があります。テーブル作成手順を実行するには、SQLiteOpenHelper の使用方法と独自の作成方法を理解する必要があります。次に、データを管理するためのモデル クラスを作成します。

したがって、developer.android.com ガイドを読んでも疑問がある場合は、Google で SQLite チュートリアルを検索してください。

于 2012-12-17T20:04:31.763 に答える
1

あなたの質問はかなりよく答えられたように見えますが、私はこれを見通しのためにそこに投げ出します(あなたが知っているほどです!そうですか?).

リーダーボード システムをローカルで管理するよりも、オンライン リーダーボード システムを使用する方が簡単な場合があります。これにより、かなりの労力を節約でき、プレーヤーがグローバルに簡単に競争できるというメリットが得られます。チェックインするオプションには、Swarm (別名 SwarmConnect)、Scoreloop、またはPapayaがあります。それらの 3 つすべてが、グローバル リーダーボードを起動して実行する方法を提供しますが、Swarm のシステムはおそらく箱から出してすぐにセットアップするのが最も速く、最も簡単だと思います.

乾杯!

于 2012-12-20T04:20:56.773 に答える