目前,我正在处理简单的俄罗斯轮盘申请。
它有三个按钮:
旋转 - 它只是播放旋转桶的声音(目前有效)。
插入圆形 - 将一颗子弹放入左轮手枪中(尚未获得)然后播放声音(正常工作)。
播放 - 使用布尔方式失火或发射一个圆形(如果它发射一个圆形,将子弹从左轮手枪中取出)完全取决于机会和左轮手枪中有多少子弹。目前我使用1到6之间的随机数,0是你启动应用程序时开始的默认轮次(所以它包括在左轮手枪中没有轮次的机制)。
以下是我的活动:
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
一轮?
答案 0 :(得分:0)
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(this);
我建议做更多的事情:
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
,而不使用自定义方法。