清空除两个值之外的所有数组值

时间:2017-07-21 06:51:55

标签: java arrays

我目前正在使用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]);
                };

我的问题是如何实现重新翻身并保留之前选择的骰子?

1 个答案:

答案 0 :(得分:0)

您可以在数组中获取所有选定的骰子索引,并在重新滚动简单添加:

if(selectedDices.contains(i, true)) return;

对于其他人 - 将JToggleButton值更改为新值。