我正在尝试用Java做一些小游戏来完成一项作业。
我们需要在JFrame窗口中有一个可调整大小的Grid,其中包含nxn(n = 5或7等有意义的数字)字段(在这种情况下,每个字段都是一个按钮),在该字段上有以下规则:
中间按钮是“黑洞”,有2个玩家。每个玩家拥有N-1艘战舰,必须将其移入黑洞。达到此目标的第一个玩家获胜。两名玩家的飞船都朝向和远离中间(黑洞)倾斜排列。
诀窍是,当您告诉船舶向某个方向行驶时,它将一直沿该方向行驶,直到撞到墙壁或另一艘船为止。
这是游戏在安装时的外观以及随船移动的方式:
我的问题是,我已经成功地使所有飞船和黑洞位于正确的位置。它们都是按钮,都是可单击的,因此现在我如何实现以下目的:
在我用鼠标单击选择单个按钮之后,系统应在其上设置Focus(我通过ActionListener尝试了requestFocus(),但似乎没有执行任何操作)。
然后,在设置焦点之后,该按钮(已经具有ActionListener的按钮)将具有KeyListener,它等待箭头键输入。然后,在输入方向后,该按钮将移动其颜色-模拟运动-直到它撞到船只,墙壁或从地图清除后进入黑洞为止。
我的问题是,如何让Java知道特定按钮上的keyListener应该只在选择按钮后才收听箭头键
另一个是-如何实际模拟运动?
基本上,两个团队的太空飞船都是蓝色/红色。其余的块都是白色的,除了中间的黑洞是黑色的。
如何使选定的按钮获得移动命令后移动setBackGroundColoring,以便逐块移动直到撞到墙壁或另一艘船?我什至不知道从哪里开始,所以我想在这里寻求帮助。
您还应该使用KeyAdapter作为参数将KeyListener添加到按钮,并且在事件触发时,您可以获取事件的键代码,并对照值进行检查:
KeyEvent.VK_UP
KeyEvent.VK_DOWN
KeyEvent.VK_LEFT
KeyEvent.VK_RIGHT
然后采取必要的措施。
关于模拟运动,您是否希望三角形简单地在按钮之间“跳跃”,或更流畅?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句