连接四 - 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 [];
}

我没有测试过,所以你得最后确认一下。

祝你好运!