Java 如何检查完整列?
我正在构建一个连接四的游戏,这是我的棋盘格:Java 如何检查完整列?,java,Java,我正在构建一个连接四的游戏,这是我的棋盘格: static final int ROWS = 6; public void checkIfFull(int colu) { /*deleted*/ } 当用户单击按钮时,将调用此选项: if (e.getSource () == b1) { checkIfFull (0); } 这是我将令牌定位在最低开放级别的方法: public void setPos(int column) {
static final int ROWS = 6;
public void checkIfFull(int colu)
{
/*deleted*/
}
当用户单击按钮时,将调用此选项:
if (e.getSource () == b1)
{
checkIfFull (0);
}
这是我将令牌定位在最低开放级别的方法:
public void setPos(int column)
{
if (demise) return; //this is for when the game is already over and the user
still attempts to click on a button
int row;
for (row = 0; row < ROWS; ++row)
{
if (slots[row][column] > 0)
break;
}
if (row > 0)
{
//save current player
slots[--row][column] = active;
//change turns
/*if (active == GREEN)
{
active = RED;
activeMe ();
}
else if (active == RED)
{
active = GREEN;
activeMe();
} I moved this to setCircle method*/
setCircle(active, row, column); //gui method used to fill up the empty circle
}
}
public void setPos(int列)
{
if(diseat)return;//这是用于游戏已经结束并且用户
仍然尝试单击按钮
int行;
用于(行=0;行<行;++行)
{
如果(插槽[行][列]>0)
打破
}
如果(行>0)
{
//保存当前播放器
插槽[--行][列]=活动;
//换车
/*如果(活动==绿色)
{
活动=红色;
activeMe();
}
else if(活动==红色)
{
活动=绿色;
activeMe();
}我把这个移到了setCircle方法*/
setCircle(活动、行、列);//用于填充空圆圈的gui方法
}
}
当我填写一个专栏时,Joptionpane不会弹出,但它应该会弹出
有什么线索吗
我仍在不断地研究我的逻辑,因此,如果你能看到其他缺陷,请指出它们。:) 您应该检查
计数器
是否等于6,因为您已声明:
static final int ROWS = 6;
因此,您必须检查以下内容:
if (counter == ROWS) // not 5
请注意,您是在与行
进行比较,而不是直接与6
进行比较,以避免出现错误
另外,在使用计数器之前,不要忘记声明和初始化它:
int counter = 0;
Stackoverflow更多用于具体问题。你遇到了什么问题?您是否收到错误(如果收到,请发布堆栈跟踪)?你是否观察到意外行为,如果是,是什么,期望的行为是什么?@Teeg对不起,应该更具体一点。此时,joptionpane应该在列已满时弹出,但它没有t@HovercraftFullOfEels是的,很好,谢谢。这不是错误的原因,但我可以肯定地说,
publicstaticvoidsetpos(int列)
不应声明为静态。如果您这样做是为了防止编译错误,那么您修复的是错误的。此外,您不应该为JOptionPane创建新的JFrame,而应该使用当前显示的GUI中的组件来实现这一点。这是有道理的,但是循环从0开始?所以5最终是最大值?是的,但是从0到5,有6个数字。虽然我的循环中的条件是row
,因此工作方式类似于5<6,然后循环在更新时中断,row=6?最后检查的条件是:6,这是false
,因此循环结束。为什么是静态的?如果您只打算使用计数器
执行此特定任务,请将其设置为局部变量。