连接四 - jQuery

时间:2018-04-30 11:19:02

标签: javascript jquery

我的jQuery作业存在严重问题(我是学生和JS初学者)。

基本上,分配是使用MV(C)(我们不使用控制器)模式使用jQuery创建Connect 4游戏。

比赛场地是一个2D阵列,看起来像这样。

- , - , - , - , - , - , - 
- , - , - , - , - , - , - 
- , - , - , - , - , - , - 
- , - , - , - , - , - , - 
- , - , - , - , - , - , - 
- , - , - , - , - , - , - 

并且玩家按下列进行游戏(f.ex.Player 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文件中。

永远感激任何帮助。

1 个答案:

答案 0 :(得分:0)

有点抬头,您应该将文件重命名为重要文件。当某些文件的名称与js.js一样模糊时,很难找到相关代码。

除此之外,checkIfWon(arr)中的函数js.js使用方法checkForFour(),该方法将数组作为参数,并根据来自同一玩家的4个片段返回true或false已被发现。

由于在同一个数组上迭代两次是多余的,如果没有检测到connect-4,你可以让checkIfWon(arr)返回一个空数组,如果有一个,则可以使列(带有大写的连胜条件)检测到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 [];
}

我还没有测试过,所以你必须在最后确认。

祝你好运!