gpt4 book ai didi

java - 尝试创建一个方法,该方法采用鼠标单击的位置,并且应该返回一个作为所选单元格的单元格编号

转载 作者:行者123 更新时间:2023-11-30 09:59:29 26 4
gpt4 key购买 nike

我想创建并调用一个方法来检查网格上是否发生了点击。此方法应采用鼠标单击的位置,并应返回作为所选单元格的单元格编号。如果单击了一个单元格,则需要确定单击了哪个单元格并返回该单元格数字。确保如果一个单元格已经被选中,而用户没有选择新的单元格,旧的选定的单元格仍保持选中状态。如果用户单击一个单元格,并且该特定单元格已经被选中,应该取消选中。在这种情况下,它应该返回 -1。我这样做是为了获取单元格编号,但无法确保它保持选中状态并且无法返回 -1 以取消选择。

int cellSelected(int x, int y){
int selected=-2;
int left=40;

for(int num=0; num<=12*8; num++)
{
int col = num%8;
int row = num/8;
left = 40+CELL_SIZE*col;
int right = left+CELL_SIZE;
int top = 40+CELL_SIZE*row;
int bottom = top+CELL_SIZE;
if (x >= left && x < right && y >= top && y < bottom)
{
selected = num;

}
}
return selected;
}

最佳答案

要计算单元格的索引,只需将鼠标的相对位置(相对于网格的原点)除以单元格的大小即可。

int cellSelected(int x, int y){

// position of the mouse relative to the grid
int px = x - 40;
int py = y - 40;

// evaluate if the mouse is in the grid, return -1 else
int cols = 8;
int rows = 12;
if (px < 0 || py < 0 || px > cols*CELL_SIZE || px > cols*CELL_SIZE) {
return -1;
}

// calculate cell index (row and column of the cell)
int col = px / CELL_SIZE;
int row = py / CELL_SIZE;

// return index of the cell
return rows*cols + col;
}

关于java - 尝试创建一个方法,该方法采用鼠标单击的位置,并且应该返回一个作为所选单元格的单元格编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58846732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com