如何为数学游戏设置DIFFICULTY阶段

时间:2017-03-05 19:29:07

标签: android

我目前正在做一个基本的数学应用程序。该应用程序非常基本,玩家可以通过简单的方程式进行计算。对于任何正确的答案,分数将被添加到播放器中。如果不正确,它将重置为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;

2 个答案:

答案 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);
          }