編輯:解決,感謝MGorgon。與Java中的多個按鈕遊戲
我正在創建一個簡單的遊戲,(目前)允許您在鼠標點擊的同時,在當前位置的每個方向上移動點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;
}
}
}
}
}
}
您是否試過'pos1 = j; POS2 = I;'?可能是按鈕[i] [j]代表pos [y] [x]。 – MGorgon
更改pos1 = j; POS2 = I;只是破了它,但也許我必須在代碼中更改更多的東西才能工作。關於按鈕[i] [j]代表pos [y] [x]的部分可能會修復一些內容,我會試試看。 – sdfg