所以我正在制作一个图形纸牌游戏。每张卡片都是一个 JPanel,带有一个按钮和两个与之关联的图像。我有一个翻转方法,这是我在点击卡片时在动作监听器中调用的第一件事。
public void flip()
{
if(b1.getIcon() == card2) b1.setIcon(card1);
else b1.setIcon(card2);
revalidate();
repaint();
}
但是,由于某种原因,卡片在我调用此方法后的某个时间点才会翻转(意味着图标不会改变)。例如,当我在调用翻转后放置一个 Thread.sleep 时,我会假设我的程序会在翻转完成后暂停,但事实并非如此!它在尚未切换图像的情况下进入睡眠状态,并且仅在睡眠时间结束后才切换它们。
当我让人类在这个纸牌游戏中玩 AI 时,这会导致一些重大问题,因为 AI 事件发生在纸牌在屏幕上翻转之前发生,即使我在执行任何 AI 代码之前调用了 flip()。谁能告诉我这里发生了什么?