在同一事件上以不同的方式让不同的听众

时间:2016-01-07 23:49:02

标签: java swing events event-handling actionevent

我在摇摆和事件驱动的界面周围有点困难。我正在做一个学校项目,我们必须建立一个类似棋盘的东西,在那里我们可以放置碎片并移动它们并在输入时相互攻击。所以这就是我迷路的地方:

我设置了棋盘(有点)。我在JPanel上放置了许多tile(它是一个模型,它保存坐标和它上面的部分以及一个视图,它是JComponent的裸星子类)。 然后我有了可以移动,攻击等的棋子......

现在,当我点击瓷砖时,我必须做不同的事情。例如:

  • 如果瓷砖是空的,我想在上面放一个棋子。
  • 如果磁贴被占用,我想要一个对话框,弹出不同的按钮(移动,攻击......)。
  • 如果我点击移动,我必须点击另一个图块并检查它是否被占用,然后更改第一个图块和pawn的状态。
  • 如果我点击攻击,我想点击另一个图块并更改,如果它被占用,则更改图块上的pawn的状态。

现在,前两个有点容易,我可以让棋子听到瓷砖,当点击瓷砖时,我可以显示对话框(如果瓷砖上有一个棋子),或者瓷砖是免费的地方它上面的棋子。

问题来自于我必须单击对话框上的按钮,然后单击另一个图块并进行多项通信。

我该怎么办? 假设我们正在谈论攻击按钮。

  1. 我点击了图块,pawn会听到点击并显示对话框。
  2. 我点击攻击按钮,攻击按钮的监听器接收输入。
  3. 现在怎样?

    我认为我应该让“攻击按钮监听器”听到磁贴。但它应该只在特定情况下以这种方式作出反应。当我点击一个磁贴并且我不想攻击时,如何让听众无所事事? 我不认为我可以只看事件对象(因为我无法直接修改它以便做我需要的东西吗?)。所以也许最好的事情是给听众一个对我的“游戏系统”对象的引用,该对象基本上控制游戏(转弯,可用的棋子,时间等),并且在那里有一个变量用于区分那种状态游戏在(移动,攻击,放置典当......)。

    小切向问题,是否给听众以及诸如按钮引用周围事物(例如他们所处的框架或在这种情况下是游戏系统)的做法是好还是坏。从我的初学者的角度来看,如果一个按钮或一个监听器没有引用他们需要询问/访问以便工作他们基本上什么也做不了,但也许我错了,我正在做错误的方式。

    我希望我能以清晰的方式揭露我的问题。谢谢大家的帮助。

0 个答案:

没有答案