这是一个非常奇怪的错误和非常大的程序,但我会将代码发布到彼此互动的位置。
所以我有一个扫雷游戏,其中一个"作弊"功能已实施,它揭示了电路板上的所有地雷。
这是调用它的方法:
public void showBombTile(){
for(int y = 0; y < m_columns ; y++){
for(int x = 0; x < m_rows ; x++){
if(m_board.get(y).get(x).isMine()){
m_board.get(y).remove(x);
m_board.get(y).add(x, new Mine(true,true,false,
"images/mine.png"));
for(int i = 0; i < m_board.size(); i++){
for(int j = 0; j < m_board.size(); j++){
if(m_board.get(i).get(j).isMine() && i != x && j != y){
m_board.get(i).remove(j);
m_board.get(i).add(j, new Mine(true,true,false,
"images/mine.png"));
}
}
}
}
}
}
}
通过此方法调用此方法:
public void actionPerformed(ActionEvent event) {
if(event.getSource()== m_revealBomb){
m_board.showBombTile();
}
}
及其创建和处理程序加法器在这里:
m_revealBomb = new JMenuItem("Reveal Bombs");
m_revealBomb.addActionListener(this);
当我点击m_revealBomb JMenuItem时,它的工作正如计划的那样我还必须点击电路板的瓷砖然后它显示它。我认为它与董事会没有任何关系,但我和其他6人都可以解决这个问题。
任何帮助都很棒。谢谢!
答案 0 :(得分:1)
假设这是使用Swing进行的,请尝试在repaint()
方法内的应用程序框架上调用actionPerformed()
:
public void actionPerformed(ActionEvent event) {
if(event.getSource()== m_revealBomb){
m_board.showBombTile();
yourFrame.repaint();
}
}
我假设您在点击时重新绘制框架,这就是为什么它在点击棋盘后显示所需游戏状态的原因。