井字游戏逻辑

时间:2019-02-12 03:00:15

标签: java android

我不理解游戏井字游戏。我刚刚开始学习Android,并开始了非常简单的课程,但是现在我被这个游戏所困扰。请帮帮我。

我被这个代码困住了。谁能解释一下发生了什么事?

<List actions={null} {...props}>

这是完整的代码,可以完美运行,没有任何错误。

for (int[] columnWinner : winner) {

        if (playerChoices[columnWinner[0]] == playerChoices[columnWinner[1]] &&
                playerChoices[columnWinner[1]] == playerChoices[columnWinner[2]] &&
                playerChoices[columnWinner[0]] != Player.NO) {

            Toast.makeText(getApplicationContext(), "We have Winner", Toast.LENGTH_LONG).show();

        }


    }

3 个答案:

答案 0 :(得分:2)

cleanup

在所有情况下都有赢家。前三个是水平的,下三个是垂直的,后两个是对角线,其中的数字是这样定义的,如上一个代码所示:

cleanup

然后让我们分析核心代码:

int[][] winner = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}, {0, 3, 6}, {1, 4, 7}, {2, 5, 8}, {0, 4, 8}, {2, 4, 6}}; 

答案 1 :(得分:0)

我假设您正在询问每个循环的内容:

for (int[] columnWinner : winner) {

对于每个创建变量并为循环中的每次迭代赋予其值的循环,该循环都称为a。

在这种情况下,循环为井字游戏板上的每个可能的行,列和对角线创建一个长度为3的数组columnWinner。

每次循环时,它都会检查人员是否已经在验证columnWinner数组中的所有三个元素是否相同:

if (playerChoices[columnWinner[0]] == playerChoices[columnWinner[1]] && playerChoices[columnWinner[1]] == playerChoices[columnWinner[2]]

然后检查以确保它们已填写,而不是空的。

&& playerChoices[columnWinner[0]] != Player.NO) { 

答案 2 :(得分:0)

3 x 3面板由一维数组表示(有点奇怪)。所有获胜位置都是由人工确定的,并以三元组的形式列出在{ "userType": "new", "userName": "net", "itemCatalog": [ { "itemId": 1, "name": "harry potter" }, { "itemId": 2, "name": "adidas shoes" }, { "itemId": 3, "name": "watch" }, { "itemId": 4, "name": "adidas shoes" } ] } 数组中,因为要花3个标记才能在井字游戏中占据一个获胜位置。

您指定的循环会依次检查每个获胜位置。

例如,考虑赢得排名winner。 if语句正在检查板位置1、4、7上的值是否相同,并且不等于表示没有人在那里打过的“否”值。

实际的{1, 4, 7}数据被构造为由3个元素组成的数组的数组;因此,for循环一次获取每个3元素数组,并使用它来驱动'if'语句。例如,当winnerscolumnWinner时,{1, 4, 7}为4,因此columnWinner[0]在看playerChoices[columnWinner[0]]