连接四 - jQuery
Connect Four - jQuery
我的 jQuery 家庭作业有严重问题(我是学生和 JS 初学者)。
基本上,任务是使用 MV(C)(我们不使用控制器)架构创建一个 jQuery 连连四人游戏。
比赛场地是一个二维数组,看起来像这样。
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
玩家按列进行游戏(f.ex。玩家 1 按 3)
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , x , - , - , - , -
玩家 2 按 4
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , x , o , - , - , -
等等。
游戏结束后,获胜的四个字母应变为大写。
我被卡住了,不知道该如何继续,所以我创建了一个包含所有代码的 GitHub 存储库。
https://github.com/VeronicaLeeds/connectfour
基本上它会初始化运动场,您可以按数字,但 play() 方法将不起作用。
我不知道从 View 调用函数的任何其他方法。
我试过 View().play , View.play() , play() ...
但是我总是出错。
if (evt.which == 49) {
View().play(1);
return 1;
console.log('1');
}
play() 函数在 View.js 文件中。
如有任何帮助,我们将不胜感激。
请注意,您应该着手将文件重命名为有意义的名称。当一些文件的名字模糊到js.js
.
时,很难找到相关的代码
除此之外,js.js
中的函数 checkIfWon(arr)
使用方法 checkForFour()
,该方法接受一个数组作为参数,并且 return 的 true 或 false 基于是否检测到同一玩家的4个棋子
因为在同一个数组上迭代两次是多余的,如果没有检测到 connect-4,您可以将 checkIfWon(arr)
return 设为一个空数组,并且列(连胜在大写)如果检测到 connect-4。
例如:
// Horizontal
var tempArrayHorizontal = new Array(7);
for (var row = 0; row <= 5; row++) {
for (var col = 0; col <= 6; col++) {
tempArrayHorizontal[col] = playFieldArray[col][row];
}
var result = checkForFour(tempArrayHorizontal);
if (result !== []) {
for (var col = 0; col <= 6; col++) { // we re-iterate the same way we did when you populated tempArrayHorizontal
playFieldArray[col][row] = result[col];
}
return true;
}
}
和您的 checkForFour
函数:
function checkForFour(input) {
var count = 0;
for (var i = 0; i < input.length; i++) {
if (input[i] === currentPlayer) {
count++;
if (count === 4) {
// replace the 4 previous column to uppercase
input.splice(i-4, 4, currentPlayer.toUpperCase(), currentPlayer.toUpperCase(), currentPlayer.toUpperCase(), currentPlayer.toUpperCase());
return input;
}
} else {
count = 0;
}
}
return [];
}
我没有测试过,所以你得最后确认一下。
祝你好运!
我的 jQuery 家庭作业有严重问题(我是学生和 JS 初学者)。
基本上,任务是使用 MV(C)(我们不使用控制器)架构创建一个 jQuery 连连四人游戏。
比赛场地是一个二维数组,看起来像这样。
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
玩家按列进行游戏(f.ex。玩家 1 按 3)
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , x , - , - , - , -
玩家 2 按 4
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , - , - , - , - , -
- , - , x , o , - , - , -
等等。
游戏结束后,获胜的四个字母应变为大写。
我被卡住了,不知道该如何继续,所以我创建了一个包含所有代码的 GitHub 存储库。
https://github.com/VeronicaLeeds/connectfour
基本上它会初始化运动场,您可以按数字,但 play() 方法将不起作用。
我不知道从 View 调用函数的任何其他方法。
我试过 View().play , View.play() , play() ... 但是我总是出错。
if (evt.which == 49) {
View().play(1);
return 1;
console.log('1');
}
play() 函数在 View.js 文件中。
如有任何帮助,我们将不胜感激。
请注意,您应该着手将文件重命名为有意义的名称。当一些文件的名字模糊到js.js
.
除此之外,js.js
中的函数 checkIfWon(arr)
使用方法 checkForFour()
,该方法接受一个数组作为参数,并且 return 的 true 或 false 基于是否检测到同一玩家的4个棋子
因为在同一个数组上迭代两次是多余的,如果没有检测到 connect-4,您可以将 checkIfWon(arr)
return 设为一个空数组,并且列(连胜在大写)如果检测到 connect-4。
例如:
// Horizontal
var tempArrayHorizontal = new Array(7);
for (var row = 0; row <= 5; row++) {
for (var col = 0; col <= 6; col++) {
tempArrayHorizontal[col] = playFieldArray[col][row];
}
var result = checkForFour(tempArrayHorizontal);
if (result !== []) {
for (var col = 0; col <= 6; col++) { // we re-iterate the same way we did when you populated tempArrayHorizontal
playFieldArray[col][row] = result[col];
}
return true;
}
}
和您的 checkForFour
函数:
function checkForFour(input) {
var count = 0;
for (var i = 0; i < input.length; i++) {
if (input[i] === currentPlayer) {
count++;
if (count === 4) {
// replace the 4 previous column to uppercase
input.splice(i-4, 4, currentPlayer.toUpperCase(), currentPlayer.toUpperCase(), currentPlayer.toUpperCase(), currentPlayer.toUpperCase());
return input;
}
} else {
count = 0;
}
}
return [];
}
我没有测试过,所以你得最后确认一下。
祝你好运!