質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

2回答

1181閲覧

ハイスコアをゼロにしてゲーム内容確認をしたい

aruko

総合スコア47

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2021/09/29 07:03

編集2021/09/30 02:33

androidstudioで簡単なゲームを作っています。
基本的なところはできたので、自分のハイスコアを一旦ゼロにして、上がっていくたびにImageViewやTextViewがちゃんと設定したとおりになっていくか確かめたいです。
ハイスコアは、当たり前ですが、作りながら自分が出したものがずっとそのままになっています。
ハイスコアを一旦ゼロにするには、どこをどのように書けばいいのでしょうか。

MainActivity.javaでは、

//結果画面へ移動

startForResult.launch(new Intent(MainActivity.this, ResultActivity.class) .putExtra(ResultActivity.PARAM_SCORE, score));

で結果画面へ移動とともに、PARAM_SCOREをキーとして得点を渡し、
ResultActivity.javaで、

score = getIntent().getIntExtra("PARAM_SCORE", 0);

scoreLabel.setText(score + "てん"); highscore = sharedPreferences.getInt("HIGH_SCORE", 0); highscoreLabel.setText( highscore+"てん");

highscoreLabel.setText(score + "てん");
―――ハイスコアが出て、保存ボタンが押されれば、―――
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("HIGH_SCORE", score);
editor.apply();

というように保存されていきます。
よろしくお願いします。
新たな問題が発生

コメント投稿させてもらったように、新たな問題が発生しました。
MainActivity.javaの方ではなく、ResultActivity.javaの方で、

SharedPreferences.Editor editor = sharedPreferences.edit();

editor.putInt("HIGH_SCORE", 0); editor.apply();

を入れたら、ハイスコアは0にできたのですが、ResultActivity.javaでのゲームのスコアまで0になっていました。
ゲームのスコアは、PARAM_SCOREで引き継がれることになっています。
PARAM_SCOREについては何もさわっていません。(つもりです)
とりあえず次に、ハイスコアを0にするコードを消して下記の状態(つまりゲームのスコアもMainActivity.javaから引き継がれ、ハイスコアも正しい数値で出ていた状態)にしましたが、なぜかゲームのスコアが引き継がれず、0のままです。

数回ゲームをしてみましたが、やっぱり0のままです。
これはどういうことでしょうか。
どうしたら元のように引き継がれるようになるのか、教えていただきたいです。

java

1import androidx.appcompat.app.AppCompatActivity; 2 3import android.app.Activity; 4import android.content.Intent; 5import android.content.SharedPreferences; 6import android.os.Bundle; 7import android.view.View; 8import android.widget.Button; 9import android.widget.ImageView; 10import android.widget.TextView; 11 12public class ResultActivity extends AppCompatActivity { 13 public static final String PARAM_SCORE = "SCORE"; 14 public static final int RESULT_OWARU = Activity.RESULT_FIRST_USER; 15 16 public static final String SHARED_NAME = "GAME_DATA"; 17 public static final String KEY_HIGHSCORE = "HIGH_SCORE"; 18 19 @Override 20 protected void onCreate(Bundle savedInstanceState) { 21 super.onCreate(savedInstanceState); 22 setContentView(R.layout.activity_result); 23 24 int score; 25 int highscore; 26 TextView scoreLabel = findViewById(R.id.scoreLabel); 27 TextView highscoreLabel = findViewById(R.id.highscoreLabel); 28 TextView hukidasinaiyou=findViewById(R.id.hukidasinaiyou); 29 Button bt_hozon=findViewById(R.id.bt_hozon); 30 Button bt_mouitido=findViewById(R.id.bt_mouitido); 31 Button bt_owaru=findViewById(R.id.bt_owaru); 32 ImageView img_neko=findViewById(R.id.img_neko); 33 SharedPreferences sharedPreferences = getSharedPreferences("GAME_DATA", MODE_PRIVATE); 34 score = getIntent().getIntExtra("PARAM_SCORE", 0); 35 scoreLabel.setText(score + "てん"); 36 37 hukidasinaiyou.setTextSize(18.0f); 38 highscore = sharedPreferences.getInt("HIGH_SCORE", 0); 39 highscoreLabel.setText( highscore+"てん"); 40 if (score > highscore) { 41 hukidasinaiyou.setText("さいこうとうてんがでました。ほぞんしましょう!"); 42 img_neko.setImageResource(R.drawable.neko_1ban); 43 bt_hozon.setVisibility(View.VISIBLE); 44 bt_mouitido.setVisibility(View.INVISIBLE); 45 bt_owaru.setVisibility(View.INVISIBLE); 46 }else{ 47 bt_hozon.setVisibility(View.INVISIBLE); 48 bt_mouitido.setVisibility(View.VISIBLE); 49 bt_owaru.setVisibility(View.VISIBLE); 50 if(score==highscore) { 51 hukidasinaiyou.setText("さいこうとくてんと、どうてんですね!おしかったです。"); 52 hukidasinaiyou.setTextSize(16.0f); 53 img_neko.setImageResource(R.drawable.neko_ponpon); 54 }else{ 55 hukidasinaiyou.setText("つぎは、さいこうとくてんになるといいですね!"); 56 img_neko.setImageResource(R.drawable.neko_annai 57 ); 58 } 59 } 60 View.OnClickListener event = new View.OnClickListener() { 61 public void onClick(View view) { 62 if (view.getId() == R.id.bt_mouitido) { 63 setResult(Activity.RESULT_OK, null); 64 finish(); 65 } else if (view.getId() == R.id.bt_hozon) { 66 highscoreLabel.setText(score + "てん"); 67 68 SharedPreferences.Editor editor = sharedPreferences.edit(); 69 editor.putInt("HIGH_SCORE", score); 70 editor.apply(); 71 72 bt_hozon.setVisibility(View.INVISIBLE); 73 bt_owaru.setVisibility(View.VISIBLE); 74 bt_mouitido.setVisibility(View.VISIBLE); 75 76 } else if (view.getId() == R.id.bt_owaru) { 77 setResult(RESULT_OWARU, null); 78 finish(); 79 } 80 } 81 }; 82 bt_mouitido.setOnClickListener(event); 83 bt_hozon.setOnClickListener(event); 84 bt_owaru.setOnClickListener(event); 85 } 86}

ついでに、スコア引き継ぎに関するMainActivity部分は、これです。

java

1private static final String TAG = "MainActivity"; 2 3 private ActivityResultLauncher<Intent> startForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { 4 switch (result.getResultCode()) { 5 case Activity.RESULT_OK: 6 syokisettei(); 7 Log.d(TAG, "ActivityResultLaundher result=" + result); 8 break; 9 case ResultActivity.RESULT_OWARU: 10 Log.d(TAG, "ActivutyResultLaundher OWARU"); 11 finish(); 12 break; 13 } 14 }); 15--------------------------------------------------------------------------------- 16 startForResult.launch(new Intent(MainActivity.this, ResultActivity.class) 17 .putExtra(ResultActivity.PARAM_SCORE, score));

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ResultActivity.javaの下の部分の、
――――――――――――――――――――――――――――――――――――――――――――――――――――――
score = getIntent().getIntExtra("PARAM_SCORE", 0);
scoreLabel.setText(score + "てん");
highscore = sharedPreferences.getInt("HIGH_SCORE", 0);
highscoreLabel.setText( highscore+"てん");
――――――――――――――――――――――――――――――――――――――――――――――――――――――

score = getIntent().getIntExtra("PARAM_SCORE", 0);を
score = getIntent().getIntExtra(PARAM_SCORE, 0);に変えたら、PARAM_SCOREが引き継がれました。

""が必要かどうかは、sharedPreferencesの関係なのでしょうか。
とりあえずできました。

投稿2021/09/30 09:12

aruko

総合スコア47

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ハイスコアをゼロにしたいタイミングで以下をやる等でしょうか

SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putInt("HIGH_SCORE", 0); editor.apply();

投稿2021/09/29 07:08

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aruko

2021/09/29 08:22

さっそく回答ありがとうございます。 MainActivity.javaの、 MainActivityのprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); の後に、 SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putInt("HIGH_SCORE", 0); editor.apply(); を入れてみましたが、 ”sharedPreferencesの部分がエラーになります。 ResultActivity.javaではできています。 かぶっているからかも…、と思い、 ResultActivity.javaの SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putInt("HIGH_SCORE", score); editor.apply(); をはずしてみましたが、エラーはとれません。 教えていただけたらありがたいです。
退会済みユーザー

退会済みユーザー

2021/09/29 08:28

sharedPreferences変数はセットされてますでしょうか ResultActivity.javaの方では SharedPreferences sharedPreferences = context.getSharedPreferences(〜); のようなことをsharedPreferencesを使用する前にやっていると思います
aruko

2021/09/29 13:24

ResultActivity.javaの方に、 SharedPreferences sharedPreferences = getSharedPreferences("GAME_DATA", MODE_PRIVATE); を、 MainActivity.javaにも、 SharedPreferences sharedPreferences = getSharedPreferences("GAME_DATA", MODE_PRIVATE); をセットしたらエラーはなくなったので、実行すると、ランタイムエラーになり、白い画面が一瞬出てから消えます。 アドバイスしていただけたらありがたいです。
aruko

2021/09/30 02:34

新たな問題が発生しましたので、質問内容のところに書かせてもらいました。 よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問