gpt4 book ai didi

java - 如何使用for循环提高效率?

转载 作者:行者123 更新时间:2023-11-30 02:45:55 25 4
gpt4 key购买 nike

我是一名初学者 Java 程序员,我正在使用 2D 数组制作一个简单的 TicTacToe 游戏,这些是我的 if 语句,用于检查玩家 1 或玩家 2 是否获胜。我相信这可以通过使用 for 循环来简化,但是我不明白如何使用该方法。

if ((grid[0][0] == 1 && grid[0][1] == 1 && grid[0][2] == 1)
|| (grid[1][0] == 1 && grid[1][1] == 1 && grid[1][2] == 1)
|| (grid[2][0] == 1 && grid[2][1] == 1 && grid[2][2] == 1)
|| (grid[0][0] == 1 && grid[1][1] == 1 && grid[2][2] == 1)
|| (grid[0][2] == 1 && grid[1][1] == 1 && grid[2][0] == 1)
|| (grid[0][0] == 1 && grid[1][0] == 1 && grid[2][0] == 1)
|| (grid[0][1] == 1 && grid[1][1] == 1 && grid[2][1] == 1)
|| (grid[0][2] == 1 && grid[1][2] == 1 && grid[2][2] == 1)
&& won == false) {
title.setText("X wins!");
won = true;
} else if ((grid[0][0] == 2 && grid[0][1] == 2 && grid[0][2] == 2)
|| (grid[1][0] == 2 && grid[1][1] == 2 && grid[1][2] == 2)
|| (grid[2][0] == 2 && grid[2][1] == 2 && grid[2][2] == 2)
|| (grid[0][0] == 2 && grid[1][1] == 2 && grid[2][2] == 2)
|| (grid[0][2] == 2 && grid[1][1] == 2 && grid[2][0] == 2)
|| (grid[0][0] == 2 && grid[1][0] == 2 && grid[2][0] == 2)
|| (grid[0][1] == 2 && grid[1][1] == 2 && grid[2][1] == 2)
|| (grid[0][2] == 2 && grid[1][2] == 2 && grid[2][2] == 2)
&& won == false) {
title.setText("O wins!");
won = true;
}

下面是修改后的代码,使用的 if 语句和条件要少得多。

public static boolean hasWon(int[][] grid) {
for (int a = 1; a <= 2; a++) {
for (int b = 0; b < grid.length; b++) {
// Checking for win in horizontal, then vertical, then diagonal
if (grid[b][0] == a && grid[b][1] == a && grid[b][2] == a) {
won = true;
} else if (grid[0][b] == a && grid[1][b] == a && grid[2][b] == a) {
won = true;
} else if ((grid[0][0] == a && grid[1][1] == a && grid[2][2] == a
|| (grid[0][2] == a && grid[1][1] == a && grid[2][0] == a))) {
won = true;
}
}
}
}

最佳答案

为了帮助您自己找到解决方案,我现在给您一些提示。

提示#1:想想获胜意味着什么。玩家必须连续获得 3 个标记——水平、垂直或对角线。考虑如何在您的程序中表示这一点。

提示#2:思考如何将问题分解为更小、更易于管理的部分。考虑每个获胜场景的共同点,并将该逻辑分离到一个可以多次调用的方法中。

提示#3:考虑是什么让每个获胜场景独一无二,以及如何使用网格来生成您想要检查的空间的表示,以便更容易检查获胜情况。

如果您不确定 for 循环的工作原理或 Java 语言的其他方面,您可以在 Oracle's site 上找到教程。

关于java - 如何使用for循环提高效率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40198740/

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