我正在尝试为一个作业制作一个Java的小游戏。我们需要在JFrame窗口中拥有一个可调整大小的方格,其中每个方格是一个按钮,并且有以下规则:中间的按钮是一个“黑洞”,有两个玩家。每个玩家都有 N-1 艘飞船,他们必须将它们移动到黑洞里。第一个实现此目标的玩家获胜。两名玩家的飞船都沿着对角线朝向和远离中心(黑洞)。
问题在于,当你让一艘飞船朝一个方向前进时,它会一直向那个方向前进,直到撞墙或与另一艘飞船相撞。
以下是游戏设置时和移动飞船时的截图:
我的问题是:我已经成功地将所有的按钮放在了正确位置的方格中。它们都是可点击的按钮。现在我该如何实现以下功能:
鼠标单击选择一个按钮后,系统应设置焦点(我尝试通过ActionListener请求焦点,但似乎没有产生任何效果)。
然后,在焦点被设置后,同一个按钮(该按钮已经有一个ActionListener)将在其上等待箭头键输入的KeyListener。然后,在您输入方向后,该按钮将移动其颜色-模拟移动-直到它撞到飞船、墙壁或进入黑洞并从地图上清除。
我的问题是:如何让Java知道特定按钮上的keyListener只应在选中该按钮后才监听箭头键?
另一个问题是:如何实现移动?
基本上,两支队伍的太空飞船都是蓝色/红色的。其余的格子都是白色的,除了中间的黑洞是黑色的。
当选定一个按钮并且输入了移动命令时,我该如何使其背景颜色逐块移动,直到它撞到墙壁或另一艘飞船?我甚至不知道从哪里开始,所以我想在这里寻求一点帮助。