目前,我正在开发一个简单的俄罗斯轮盘赌应用程序。
它有三个按钮:
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到目前为止是这样的。
<小时/>我有两个问题:
如何才能在按下“插入回合”按钮时向我的
rounds_left
添加 1 回合?我能够创建一个加法方法(这就是所谓的吗?)来实现此加法。我尝试了多次,但没有成功。
public static int add(int i) { i++; return i; }
子弹射完后,如何从我的
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/