我不理解游戏井字游戏。我刚刚开始学习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();
}
}
答案 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'语句。例如,当winners
为columnWinner
时,{1, 4, 7}
为4,因此columnWinner[0]
在看playerChoices[columnWinner[0]]
。