gpt4 book ai didi

java - 连接四 - 寻找获胜的处理 (Java)

转载 作者:行者123 更新时间:2023-12-01 09:03:25 24 4
gpt4 key购买 nike

我正在使用Processing (Java) 构建一个connect 4 游戏,但在尝试寻找获胜者时遇到了困难。我已经发布了代码,无论如何可以告诉我为什么这不起作用吗?或者我该如何补救。

非常感谢任何帮助。

谢谢

  if (whooseWon() == true) {
text = loadFont("Tahoma-Bold-50.vlw");
textFont(text, 50);
fill(255, 0, 0);
game = false;
if (whoWon == 1) {
text("Red Wins!", width/4, height/4);
text("Click to play again", 110, height/2);
} else if (whoWon == 2) {
fill(255, 255, 0);
text("yellow Wins!", width/4, height/4);
text("Click to play again", 110, height/2);
} else if (whoWon == 3) {
fill(255, 255, 0);
text("It's a Tie", width/4, height/4);
text("Click to play again", 110, height/2);
}
}
}
// click to play again functionality
void mousePressed() {
if (game == false) {
game = true;
setup();
}
}

// 21 vertical possibilities, 24 horizontal and 12 diagonally that's a total of 69 possibilities
// cols = j
// rows = i
boolean whooseWon() {
// horizontal
for (int i = 0; i < rows-3; i++) {
for (int j = 0; j < cols; j++) {
//red player
if (piece[i+1][j].getColour() == color(counter1) && piece[i+1]. [j].getColour() == color(counter1) &&
piece[i+2][j].getColour() == color(counter1) && piece[i+3][j].getColour() == color(counter1))
{
whoWon = 1;
return true;
}
if (piece[i][j].getColour() == color(counter2) && piece[i+1][j].getColour() == color(counter2) &&
piece[i+2][j].getColour() == color(counter2) && piece[i+3][j].getColour() == color(counter2))
{
whoWon = 2;
return true;
}
}
}
// vertical

for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols-3; j++) {

//red player
if (piece[i][j].getColour() == color(counter1) && piece[i][j+1].getColour() == color(counter1) &&
piece[i][j+2].getColour() == color(counter1) && piece[i][j+3].getColour() == color(counter1))
{
whoWon = 1;
return true;
}
if (piece[i][j].getColour() == color(counter2) && piece[i][j+1].getColour() == color(counter2) &&
piece[i][j+2].getColour() == color(counter2) && piece[i][j+3].getColour() == color(counter2))
{
whoWon = 2;
return true;
}
}
}
//diagonal
for (int i = 0; i < rows-3; i++) {
for (int j = 0; j < cols-3; j++) {
//red player
if (piece[i][j].getColour() == color(counter1) && piece[i+1][j+1].getColour() == color(counter1) &&
piece[i+2][j+2].getColour() == color(counter1) && piece[i+3][j+3].getColour() == color(counter1))
{
whoWon = 1;
return true;
}
if (piece[i][j].getColour() == color(counter2) && piece[i+1][j+1].getColour() == color(counter2) &&
piece[i+2][j+2].getColour() == color(counter2) && piece[i+3][j+3].getColour() == color(counter2))
{
whoWon = 2;
return true;
}
}
}
//diagonal
for (int i = 0; i < rows-3; i++) {
for (int j = 0; j < cols; j++) {
//red player
if (piece[i][j].getColour() == color(counter2) && piece[i+1]
[j-1].getColour() == color(counter2) &&
piece[i+2][j-2].getColour() == color(counter2) && piece[i+3]
[j-3].getColour() == color(counter2))
{
whoWon = 1;
return true;
}
if (piece[i][j].getColour() == color(counter2) && piece[i+1]. [j+1].getColour() == color(counter2) &&
piece[i+2][j-2].getColour() == color(counter2) && piece[i+3]
[j-3].getColour() == color(counter2))
{
whoWon = 2;
return true;
}
}
}
return false;
}


`

最佳答案

你让人们很难帮助你。不要从巨大的草图中发布断开连接的片段,而是尝试创建一个 MCVE 。这通常涉及从一个空白草图开始,只添加足够的代码来重复问题,而不添加任何与其不直接相关的额外内容。我们应该能够将代码复制并粘贴到我们自己的编辑器中,点击运行,然后看到与您相同的内容。否则我们都只是猜测。您通常会在创建 MCVE 的过程中解决您的问题!

话虽这么说,我可以帮助您尝试调试您的问题。您说过您遇到了 ArrayIndexOutOfBounds 异常。错误出现在哪一行?我不是问这个,所以你告诉我。我这么问是因为这是你应该问自己的第一个问题。

当您将范围缩小到特定行时,您需要回溯以找出到底发生了什么。正在访问哪些索引?数组有多少个索引?两者之间不匹配,这导致了您的问题。

使用println()函数打印出可能属于其中的每个值。至少是 ij 变量,以及 rowcolumns 以及 piece。长度piece[yourIndexHere].length

然后逐行浏览代码,直到您准确理解它在做什么。再说一遍,如果您使用 MCVE 工作而不是试图解析一大堆乱七八糟的东西,那么您的运气会好得多。然后,如果您遇到困难,您可以使用该 MCVE 发布新问题,我们会更轻松地为您提供帮助。祝你好运。

关于java - 连接四 - 寻找获胜的处理 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41488748/

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