3

我正在制作棋盘游戏,但无法移动它们。棋子将根据骰子结果移动。以下是我尝试做的,但它不起作用。(来自 button[].addActionListener(new ActionListener()) 注意:我使用 ImageIcon 来表示我的作品。有什么帮助吗?

    //Puts the player 1 piece on button 1,3,5,7,9 and player 2 piece on button 2,4,6,8,10 
    if ((btnNumber - 1) < 10) 
    { 
        if (((btnNumber - 1) % 2) == 0) 
        { 
            buttons[btnNumber - 1].setIcon(piece1); 
        } 
        else 
        { 
            buttons[btnNumber - 1].setIcon(piece2); 
        } 
    } 
    centerPanel.add(buttons[btnNumber - 1]); 
} 

frame.add(centerPanel, BorderLayout.CENTER); 
4

1 回答 1

3

看起来好像有些基本的东西你还没有完全掌握。以下是一些更接近目标的建议:

  1. button[].addActionListener是一个无意义的陈述。您不能一次将动作侦听器添加到整个数组。也许您的意思是说buttons[btnNumber - 1].addActionListener并将其放在for循环中。
  2. buttons[]==ImageIcon("piece1")也是一个无意义的陈述(它甚至不应该编译)。您可以尝试buttons[btnNumber - 1] == ImageIcon("piece1"),尽管有一种更简单的方法可以做到这一点(#3)。
  3. 不是根据它是否等于图像图标实例来确定片段的位置,为什么不使用变量piece1Location并且piece2Location随着片段的移动而保持更新。然后你会立即知道碎片在哪里,你的逻辑会简化为if (btnNumber - 1 == piece1Location)
  4. 在 Java 中,数组从 index 开始0。在 Java 中使用循环处理数组的最简洁方法for是也开始索引变量0,并将比较从 更改<=<。有了以下for(int i = 0; i < 30; i++),你就不必一直说btnNumber - 1
  5. 您的代码组织有点混乱,模型和表示之间紧密集成。您应该寻求将处理显示棋盘和棋子(演示)的逻辑与处理游戏机制(掷骰子、移动棋子等)的逻辑分开。这将极大地帮助您维护代码并跟踪正在发生的事情。
于 2012-05-01T12:50:55.753 回答