我有一个纸牌游戏,它是建立在使用 ArrayLists 将纸牌存储在人们手中的基础上的。我有一个 main 方法,它通过游戏播放并使用主类中的 InvokeLater 调用的线程更新 GUI 类
目前我正在控制台上玩游戏,并输入和 int 到扫描仪中以从玩家手中选择卡片。我想要做的是运行一个线程,可能带有调用和等待,当玩家必须做出选择时运行。然后等待玩家在 GUI 中点击对应的卡片,并返回卡片所在位置的相应 int。然后这个选择由我的游戏处理。
我现在如何更新我的 GUI。
public static void Play(ArrayList<Card> ...){
UpdateHand(player1, deck, deckused);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
GUI.getInstance().UpdateHand();
}
});
将侦听器附加到卡片并将其名称设置为他们手中相应位置的 int。
public void PlayerSelection()
{
selection = -1;
Information = new JLabel("Please Select Your Card");
ButtonDisplay.add(Information);
ButtonDisplay.updateUI();
for (int i = 0; i < (HumanHand.size()); i++)
{
Card card = HumanHand.get(i);
BufferedImage cardImage = null;
try {
cardImage = ImageIO.read(new File("card/" + card + ".jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JLabel picLabel = new JLabel(new ImageIcon( cardImage ));
String name = "" + i;
picLabel.setName(name);
picLabel.addMouseListener((MouseListener) this);
HumanHandDisplay.add(picLabel);
}
}
单击鼠标时存储 int 以供选择。
public void mouseClicked(MouseEvent e) {
String name = ((JLabel)e.getSource()).getName();
System.out.println("Working " + name);
selection = Integer.parseInt(name);
}
我想将此 int 返回到我的主类 Play() 方法以用于其余的计算。我无法弄清楚如何做到这一点,特别是等待做出选择。我听说可以做到这一点,但我不确定如何在我的工作中实现这一点。如果有人可以提供帮助,那就太好了。