2014-10-02 41 views
0

像在風險遊戲我必須擲骰子,但我不想使用Random.nextInt()方法爲每卷。 由於某些原因,我已經是攻擊的結果,我想簡單地生成骰子的值。

在風險遊戲骰子被排序和單獨使用相比:
例如:如果攻擊輥3個骰子和防禦輥2個骰子和這些是結果:
[4,3,5] - [3, 5]
攻擊失去1輛坦克,防禦失去1輛坦克,因爲:
[5,4,3] - [5,3]
5 = 5(在平局的情況下,攻擊失敗)
4> 3防守丟失)
3(第三個骰子在這種情況下是無用的)

這是輸入的代碼:
解決這個骰子風險的Java算法遊戲

int diceForAttack = StringUtils.nextInt(3) + 1; 
int diceForDefense = StringUtils.nextInt(3) + 1; 
//prints: attack Vs. defense 
System.out.println(String.format("%d Vs. %d", diceForAttack, diceForDefense)); 

int maxLost = Math.min(diceForAttack, diceForDefense); 
int attackLoses = StringUtils.nextInt(maxLost + 1); 
int defenseLoses = maxLost - attackLoses; 
//prints: 
//Attack lost x 
//Defense lost y 
System.out.println(String.format("Attack lost %d\nDefense lost %d", attackLoses, defenseLoses)); 

//Now I want to generate two arrays 
//such that the dice respect the values attackLoses and defenseLoses 
int[] attack = new int[diceForAttack]; 
int[] defense= new int[diceForDefense]; 
... 
... 
... 


的問題是:
既然我已經知道有多少坦克將喪失攻擊力和防禦。
我該如何生成兩個數組,使骰子尊重這些值attackLoses和defenseLoses?

+0

爲什麼不生成骰子,然後根據規則確定結果? – rgettman 2014-10-02 17:45:52

+0

爲攻擊失敗的每個坦克添加一條配合(隨機值,攻擊和防禦相同)(它甚至不必是隨機的,1很好)。爲防守失去的每個坦克添加一個>。例如2和1。或[1-5]上的一個隨機數,另一個在[x-6]上。 – njzk2 2014-10-02 17:47:32

+0

@rgettman因爲我有很多骰子類型從易到現實。 Realistic使用基於規則的概率。但Easy模式有利於此次攻擊。 – 2014-10-02 17:57:49

回答

1

一個乾淨,簡單的方法來處理像這樣的問題是重擲骰子,直到你得到你想要的結果。缺點是,如果要求的結果不太可能(甚至不可能),那麼這將需要一段時間,但這似乎在這裏不成問題。