我目前正在使用java开发Yahtzee游戏,但我仍然坚持使用重新掷骰子逻辑。
我有一个带有5个随机骰子的阵列,玩家可以决定他想要保留哪个骰子而另一个骰子可以重新掷骰子。
例如,玩家决定将模具保留在第4侧,将模具保持在第3侧。我正在做的是创建一个新数组并仅存储所选择的骰子。
randomDice: [5, 1, 3, 1, 4]
selectedDice: [0, 0, 3, 0, 4]
之后,玩家只会重新选择他没有选择的骰子。应该得到类似的东西:
randomDice: [4, 2, 3, 5, 4]
我使用两个数组的原因是RandomDice实际上是JButtons,后来我循环。
以下是一些提供想法的代码段:
rollDice.addActionListener( new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
JToggleButton diceButtons[] = new JToggleButton[loadGame.getRolledDice().length];
int selectedDice[] = new int[loadGame.getRolledDice().length];
diceBox.removeAll();
for(int i = 0; i < loadGame.getRolledDice().length; i++ ) {
// make new button name
diceButtons[i] = new JToggleButton(String.valueOf(loadGame.getRolledDice()[i]));
int dieKey = i;
diceButtons[i].addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent ev) {
if(ev.getStateChange()==ItemEvent.SELECTED){
selectedDice[dieKey] = Integer.parseInt(diceButtons[dieKey].getText());
System.out.printf(Arrays.toString(selectedDice));
} else if(ev.getStateChange()==ItemEvent.DESELECTED){
selectedDice[dieKey] = 0;
System.out.printf(Arrays.toString(selectedDice));
}
}
});
// add button to panel
diceBox.add(diceButtons[i]);
};
我的问题是如何实现重新翻身并保留之前选择的骰子?
答案 0 :(得分:0)
您可以在数组中获取所有选定的骰子索引,并在重新滚动简单添加:
if(selectedDices.contains(i, true)) return;
对于其他人 - 将JToggleButton值更改为新值。