在Javascript游戏中在两个玩家之间切换

问题描述 投票:-1回答:1

我有两个玩家,而且他们每个人都有各自的事件监听器,但行为不同。游戏在画布(ctx)上进行。用鼠标单击后,我想更改为其他播放器,以便将下一次单击注册为他。我将事件侦听器存储在单独的函数中,因此每当我单击时都调用它们。问题在于,其中只有一个在整个游戏中都能正常工作,因为该功能仅运行一次,因此计数器不会更新。这是基本代码:

HTML:

<button onclick="draw()">Push me</button>

脚本:

     function draw()
    {
        drawBoard(250, 250, ctx, +size(),arr);
    }

    function drawBoard(x, y, ctx, m,arr)
    {
        ctx.clearRect(0,0,980,520);
        var count = 0;

        if(count % 2 !== 0) {
             fPGMove(ctx, pX, pY, oX, oY, m, bo,arr);
             count++;

        } else if(count % 2 === 0) {
            fPRMove(ctx, x, y, oX, oY, m, bo, arr);
            count++;
        }   
    }
function fPRMove(ctx, x, y, oX, oY, m, bo, arr)
{   
    canvas1.addEventListener('click', e => {

        let moX = e.offsetX;
        let moY = e.offsetY;
    //do specific
    });
}
function fPGMove(ctx, x, y, oX, oY, m, bo, arr)
{   
    canvas1.addEventListener('click', e => {

        let mX = e.offsetX;
        let mY = e.offsetY;
    //do other specific
    });
}

整个代码:https://jsfiddle.net/yt95cdem/

javascript event-listener
1个回答
0
投票
var count=0; //should be declared outside the function.

之所以出现这个问题,是因为每次调用该函数都会将计数值初始化为零,因此只有一个玩家在玩。请把计数变量声明移到函数外。

© www.soinside.com 2019 - 2024. All rights reserved.