编辑:解决了,多亏了Mgorgon。
我正在创建一个简单的游戏,它(目前)允许你用鼠标点击在当前位置的每个方向上移动一个点1步。然而,这只在板是正方形(你可以选择板的大小)时才起作用。板由带有图像和2D数组的按钮表示,以跟踪位置,其中“1”是点的位置,“0”是一个空闲空间。actionlistener中的Pos1和Pos2打印出所单击的按钮的位置。当游戏棋盘是正方形时,这很有效,但当我把棋盘改成矩形时,我会得到不正确的pos1和pos2值,这是我用来移动点的。
//creates the array and sets dot start position.
for(int i=0;i<xAxis;i++)
{
for(int j=0;j<yAxis;j++)
{
board[i][j]=0;
}
}
board[(xAxis/2)][(yAxis/2)]=1;
,
//Creates buttons and adds actionslistener and images to the buttons.
for(int i=0;i<xAxis;i++)
{
for(int j=0;j<yAxis;j++)
{
buttons[i][j] = new JButton();
buttons[i][j].setIcon(circleIMG);
buttons[i][j].setBorderPainted(false);
buttons[i][j].addActionListener(GBC);
buttons[i][j].setPreferredSize(new Dimension(52,52));
buttons[i][j].setRolloverIcon(circleDotIMG);
buttons[i][j].setRolloverEnabled(true);
GameBoardPanel.add(buttons[i][j]);
}
}
buttons[(xAxis/2)][(yAxis/2)].setIcon(circleDotIMG);
.
//implements the actionlistener
public class GridButtonClick implements ActionListener
{
//int xControl=0;
int pos1=0;
int pos2=0;
boolean Move = false;
public void actionPerformed(ActionEvent e)
{
int posx=FindXpos(board);
int posy=FindYpos(board);
for(int i=0;i<xAxis;i++)
{
for(int j=0;j<yAxis;j++)
{
if(buttons[i][j] == e.getSource())
{
pos1=i;
pos2=j;
//System.out.println("posx: "+posx);
//System.out.println("posy: "+posy);
System.out.println("pos1: "+pos1);
System.out.println("pos2: "+pos2);
System.out.println("\n");
if((pos1 == posx+1 && pos2 == posy+1) || (pos1 == posx-1 && pos2 == posy-1))
Move=true;
if((pos1 == posx+1 && pos2 == posy-1) || (pos1 == posx-1 && pos2 == posy+1))
Move=true;
if((pos1 == posx+1 && pos2 == posy) || (pos1 == posx-1 && pos2 == posy))
Move=true;
if((pos2 == posy+1 && pos1 == posx) || (pos2 == posy-1 && pos1 == posx))
Move=true;
if(Move)
{
if(yAxis>xAxis)
buttons[(xAxis/2)][(yAxis/2)-1].setIcon(circleIMG);
else if((xAxis>yAxis) || (xAxis==yAxis))
buttons[(xAxis/2)][(yAxis/2)].setIcon(circleIMG);
RemovePreviousMark(board);
board[i][j] = 1;
buttons[i][j].setIcon(circleDotIMG);
System.out.println("Button press: "+"["+i+"]"+"["+j+"]");
//System.out.println("x: "+i+" "+"y "+j);
Move=false;
}
}
}
}
}
}
这似乎很复杂。
从所列代码中我不确定您是否已经是,但是如果您还没有,您应该记住currX和currY字段中的当前位置。然后要移动,您需要做的就是空白当前位置,适当地更改变量,然后设置新位置。
使您的button对象成为您自己的button子类,并在button内部存储一个x,y坐标。然后您就可以立即知道按钮点击的坐标,而不必扫描数组。
我在Java中创建了一个小TicTacToe游戏,我想编写更有效的代码,我会制作一个for循环来创建9个按钮。 我现在面临的问题是如何测试按下哪个按钮以确定胜利者。我已经注释掉了我的旧测试代码,因为它不再工作。
我的游戏重启按钮不起作用,点击后会成倍增加。我并不完全理解Java,我认为自己很好。
问题内容: 在我的React组件中,我有一个按钮,当单击该按钮时,它会通过AJAX发送一些数据。我只需要第一次发生,即在首次使用后禁用该按钮。 我如何尝试做到这一点: 我认为发生的事情是状态变量没有立即更新,这是React文档所说的预期。 我如何强制按钮被禁用或在单击按钮时立即消失? 问题答案: 您可以做的是单击该按钮后将其禁用,然后将其保留在页面中(不可单击的元素)。 为此,您必须向按钮元素添加
在React组件中,我有一个按钮,用于在单击时通过AJAX发送一些数据。我只需要第一次使用,即在第一次使用后禁用按钮。 我是如何做到这一点的: 我认为发生的是状态变量没有立即更新,React文档说这是预期的。 我如何强制按钮在被点击的瞬间被禁用或完全消失?
我使用Arduino Uno通过USB或蓝牙将(正版)SNES控制器连接到计算机上。 Arduino使用snespad库捕获控制器的按钮按下和释放。它将按钮按下和释放作为字符进行通信(例如按下A的“a”,释放“A”的“A”)。接下来,一个Java程序使用rxtx库监听串行输出。最后,一个Java机器人使用keyPress和keyRelise模拟按键。 不幸的是,这种方法有一些缺点。主要问题是密钥映
问题内容: 我创建了一个按钮,我想要这些: 当用户单击按钮时,它将保持按下状态约3秒钟。3秒钟后,按钮应再次看起来可按下。因此,用户必须等待3秒钟才能再次单击该按钮。我尝试了这些: 你有什么建议吗? 问题答案: 可能对您有帮助