java - Android Studio - - MainActivity 中只有 1 个按钮播放声音

标签 java android audio

目前,我正在开发一个简单的俄罗斯轮盘赌应用程序。

它有三个按钮:

  • Spin - 只播放旋转桶的声音(目前有效)。

  • Insert Round——将一颗子弹放入左轮手枪(还没有做到这一点)并播放声音(有效)。

  • 播放——使用 boolean 值来哑火或发射一轮(如果发射一轮,则将子弹从左轮手枪中取出),完全取决于机会和左轮手枪中有多少子弹。目前,我使用 1 到 6 之间的随机数,0 是启动应用程序时的默认回合(因此它包括左轮手枪中没有回合的机制)。

这是我的 Activity :

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.media.MediaPlayer;

import java.util.Random;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    //Buttons of Main-activity displayed
    Button one = (Button) findViewById(R.id.spinner);
    one.setOnClickListener(this);
    Button two = (Button) findViewById(R.id.insert_Round);
    two.setOnClickListener(this);
    Button three = (Button) findViewById(R.id.fire_weapon);
    three.setOnClickListener(this);
    int rounds_left = 0;
}

//Let's make addition.
public static int add(int i) {
    i++;
    return i;
}

@Override
public void onClick (View v) {
    int rounds_left = 0;
    switch (v.getId()) {
        case R.id.spinner:
            //play spinner sound
            final MediaPlayer mp1 = MediaPlayer.create(this, R.raw.spinnersound);
            mp1.start();
            break;
        case R.id.insert_Round:
            //play insert_round sound
            final MediaPlayer mp2 = MediaPlayer.create(this, R.raw.insert_round_sound);
            mp2.start();
            //Adds one round into chamber (I need help here)
            break;
        case R.id.fire_weapon:
            //Random number between 1 and 6... *Click* or *Fire*
            Random rand = new Random();
            int  play_chances = rand.nextInt(7) + 1;
            if (play_chances < rounds_left) {
                final MediaPlayer mp4 = MediaPlayer.create(this, R.raw.fire_sound);
                mp4.start();
                //Take a bullet away (need help here too)
            } else {
                final MediaPlayer mp3 = MediaPlayer.create(this, R.raw.misfire_sound);
                mp3.start();
            }
            break;
    }
}

}

this到目前为止是这样的。

<小时/>

我有两个问题:

  1. 如何才能在按下“插入回合”按钮时向我的 rounds_left 添加 1 回合?

    我能够创建一个加法方法(这就是所谓的吗?)来实现此加法。我尝试了多次,但没有成功。

    public static int add(int i) {
        i++;
        return i;
    }
    
  2. 子弹射完后,如何从我的 rounds_left 中取出一发子弹?

最佳答案

1:外壳内部 R.id.insert_Round:

case R.id.insert_Round:
  if(rounds_left < 6)
    rounds_left++;

2:箱子内部 R.id.fire_weapon:

case R.id.fire_weapon:
    if(rounds_left > 1){
      //do stuff
      rounds_left--;
    } else {
      //play empty chamber sound
    }

主动提供的建议:

我建议不要这样做:

one.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
          whateverMethodOrCodeYouWantToTriggerWhenUserClicksOne();
        }

two.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
          whateverMethodOrCodeYouWantToTriggerWhenUserClicksTwo();
        }

您的代码将更易于阅读和维护。

另外:

public static int add(int i) {
    i++;
    return i;
}  

这样的代码有一天会困扰你或一些糟糕的维护者。没必要用这个方法。它的名字不清楚,而且它会产生一些人们可能没有预料到的副作用。只需在适当的时候增加 i 即可,无需使用自定义方法。

关于java - Android Studio - - MainActivity 中只有 1 个按钮播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42308610/

相关文章:

python - 同时多个笔记-溢出错误

java - Hibernate一对多单向映射表

java - 在 Java 中不断检查和读取 PHP 文件以了解数据库更改的最简单/最有效的方法?

java - 返回整数而不是 Scanner.NextInt() 时出错

android - 我真的需要保存实例状态吗

android - 如何缩放 MapView 以使其始终包含两个地理点?

java - 图像下载异步任务在测试异步任务完成之前开始启动

c++ - VST乐器多进多出

java.lang.NoClassDefFoundError : org/apache/http/nio/conn/NHttpClientConnectionManager

python - 使用 Python 实时分析音频电平