我目前正在做一个基本的数学应用程序。该应用程序非常基本,玩家可以通过简单的方程式进行计算。对于任何正确的答案,分数将被添加到播放器中。如果不正确,它将重置为0.我设置了3个游戏难度阶段:Easy, Medium & Hard
。为了能够玩Medium-difficulty
,玩家必须完成Easy stage
- 例如,通过设置一定数量的点数来打开下一个关卡。
问题:我试过的一种方法是在这段代码中的PlayActivity.java
中设置一个“锁定”:
case R.id.mediumButton:
startActivity(new Intent(this, MediumActivity.class));
break;
这只需尝试从EasyActivity.java
传递当前分数的数据,然后设置ex的限制。使用if-statement
50p。这将阻止startActivity(new Intent(this, MediumActivity.class));
执行,直到达到要点为止。但我无法使代码正确,以便我可以将当前分数从EasyActivity.java
传递到Playactivity.java
。
由于我无处可去,我尝试了另一种解决这个问题的方法。我尝试使用存储的High Score
数据(请参见下文)。当然这不是完整的代码,只是为了给你们一些我做了什么的上下文。 有什么想法吗?
case R.id.mediumButton:
int score = 50p
if (score > highscore)
startActivity(new Intent(this, MediumActivity.class));
break;
解: 通过使用将我的高分存储在HighScoreActivity中的共享首选项,我检索了数据并将其与if语句一起用于为Medium& amp;设置“锁定”。艰难的阶段。这是我使用的代码(我还添加了一个Toast来告知玩家不同阶段的条件):
case R.id.mediumButton:
if (storedEasyHighScore >= 150) {
startActivity(new Intent(this, MediumActivity.class));
} else {
Toast mediumButtonToast = Toast.makeText(getApplicationContext(), "LEVEL LOCKED!\nEASY-level: Min. 150p required!", Toast.LENGTH_LONG);
TextView toastMessage = (TextView) mediumButtonToast.getView().findViewById(android.R.id.message);
toastMessage.setTextColor(Color.WHITE);
toastMessage.setTextSize(20);
mediumButtonToast.show();
}
break;
case R.id.hardButton:
if ((storedEasyHighScore >= 150) && (storedMediumHighScore >= 300)) {
startActivity(new Intent(this, HardActivity.class));
}else{
Toast mediumButtonToast = Toast.makeText(getApplicationContext(), "LEVEL LOCKED!\nEASY-level: Min. 150p required.\nMEDIUM-level: Min. 300p required.", Toast.LENGTH_LONG);
TextView toastMessage = (TextView) mediumButtonToast.getView().findViewById(android.R.id.message);
toastMessage.setTextColor(Color.WHITE);
toastMessage.setTextSize(20);
mediumButtonToast.show();
}
break;
答案 0 :(得分:0)
在调用playActivity时通过简单活动传递当前分数。
Intent intent = new Intent(this, playActivity.class);
intent.putExtra("key",value);
startActivity(intent);
在PlayActivity.java中得分并初始化:
Intent intent = getIntent();
int score= intent.getIntExtra("key")
答案 1 :(得分:0)
在PlayActivity.java中,从sharedPref获取高分,设置按钮Enabled(false)并设置disabled按钮的颜色Color.RED:
@Override
protected void onCreate(Bundle savedInstanceState) {
....
...
SharedPreferences sharedPrefsHighScore = getSharedPreferences("Prefs_HighScore",MODE_PRIVATE);
SharedPreferences.Editor editorScore = sharedPrefsHighScore.edit();
int storedHighScore = sharedPrefsHighScore.getInt("highScore",0);
//fetching button id to work as button click
Button easyButton = (Button) findViewById(R.id.easyButton);
Button mediumButton = (Button) findViewById(R.id.mediumButton);
Button hardButton = (Button) findViewById(R.id.hardButton);
if(storedHighScore > 100) {
mediumButton.setEnabled(true);
hardButton.setEnabled(true);
} else if(storedHighScore > 50) {
mediumButton.setEnabled(true);
hardButton.setEnabled(false);
hardButton.setBackgroundColor(Color.RED);
} else {
mediumButton.setEnabled(false);
mediumButton.setBackgroundColor(Color.RED);
hardButton.setEnabled(false);
hardButton.setBackgroundColor(Color.RED);
}
....
...
.
但我认为最好的办法是让按钮在XML中不可见,然后检查highScore并设置按钮的可见性:
if(storedHighScore > 100) {
hardButton.setVisibility(View.VISIBLE);
mediumButton.setVisibility(View.VISIBLE);
} else if(storedHighScore > 50) {
mediumButton.setVisibility(View.VISIBLE);
}