我正在寻找一款卡牌游戏,其中有一个用户控制的玩家,对抗3个a.i对手。这是一个Euchre的游戏,你可以在这里找到一个类似的例子:
在这个纸牌游戏中,赢得该回合的玩家开始下一轮。游戏会自动继续
我无法找到处理用户事件的方法。点击事件需要操作用户控制的播放器播放卡片,然后按顺时针顺序播放其他播放器。
问题在于,如果用户控制的玩家没有赢手,游戏必须继续玩,直到用户控制的玩家需要再次玩,此时他们将被要求发起另一次点击事件。
解决此问题的最佳方法是什么?我有一个JSFiddle,我觉得我想做的,但它真的不理想:
https://jsfiddle.net/GerardSimpson/m736364e/18/
var player1 = {};
player1.hasPlayed = false;
var roundStarter = 0;
var i = 0;
var currentTurn = (i + roundStarter) % 4;
while(player1.hasPlayed === false) {
console.log("player[",currentTurn,"]", "plays a card");
i++;
currentTurn = (i + roundStarter) % 4;
if(i === 4) {
roundStarter = 2;
console.log("Round Over, player "+ roundStarter +" wins");
i = 0;
currentTurn = (i + roundStarter) % 4;
}
if(currentTurn === 0) {
console.log("player[ 0 ]s turn, exit loop and wait for new click event");
player1.hasPlayed = true;
}
}
答案 0 :(得分:0)
我已经设法找到了我的问题的解决方案,诀窍是将转弯功能放入一个函数中,该函数修改父作用域中保持游戏转向记录的变量。如果我不想在全球范围内进行调查,我想我可能需要为此添加闭包。我稍后会更新,这是我的代码和小提琴:
var player1 = {};
player1.hasPlayed = false;
var roundStarter = 0;
var i = 0;
var currentTurn = (i + roundStarter) % 4;
$('.click-me').on('click', function(){
while(1) {
console.log("player[",currentTurn,"]", "plays a card");
i++;
currentTurn = (i + roundStarter) % 4;
if(i === 4) {
roundStarter = 3;
console.log("Round Over, player "+ roundStarter +" wins");
i = 0;
currentTurn = (i + roundStarter) % 4;
}
if(currentTurn === 0) {
console.log("player[ 0 ]s turn, exit loop and wait for new click event");
break;
}
}
});