Javascript 纸牌游戏

Javascript 纸牌游戏,javascript,jquery,Javascript,Jquery,我有一个战争游戏,效果很好,但是支付的牌会重复。每场比赛每张牌只能显示一次。如何让我的旧卡只显示一次 这是我的密码: $(document).ready(function () { var used_cards = new Array(); var player_cards = new Array(); var slick_cards = new Array(); var playerName=""; var count = 0; document.getElem

我有一个战争游戏,效果很好,但是支付的牌会重复。每场比赛每张牌只能显示一次。如何让我的旧卡只显示一次

这是我的密码:

$(document).ready(function () {    
var used_cards = new Array();

var player_cards = new Array();
var slick_cards = new Array();
var playerName="";
var count = 0; 
document.getElementById("play").disabled = true;

var P_hand = {
    cards: new Array()
}
var S_hand = {
    cards: new Array()
}
var Hand = {
    cards: new Array()
}
卡片变量组:

var deck = [
    new card('Ace', 'Hearts', 11, 142),
    new card('Two', 'Hearts', 2, 22),
    new card('Three', 'Hearts', 3, 32),
    new card('Four', 'Hearts', 4, 42),
    new card('Five', 'Hearts', 5, 52),
    new card('Six', 'Hearts', 6, 62),
    new card('Seven', 'Hearts', 7, 72),
    new card('Eight', 'Hearts', 8, 82),
    new card('Nine', 'Hearts', 9, 92),
    new card('Ten', 'Hearts', 10, 102),
    new card('Jack', 'Hearts', 10, 112),
    new card('Queen', 'Hearts', 10, 122),
    new card('King', 'Hearts', 10, 132),
    new card('Ace', 'Diamonds', 11, 141),
    new card('Two', 'Diamonds', 2, 21),
    new card('Three', 'Diamonds', 3, 31),
    new card('Four', 'Diamonds', 4, 41),
    new card('Five', 'Diamonds', 5, 51),
    new card('Six', 'Diamonds', 6, 61),
    new card('Seven', 'Diamonds', 7, 71),
    new card('Eight', 'Diamonds', 8, 81),
    new card('Nine', 'Diamonds', 9, 91),
    new card('Ten', 'Diamonds', 10, 101),
    new card('Jack', 'Diamonds', 10, 111),
    new card('Queen', 'Diamonds', 10, 121),
    new card('King', 'Diamonds', 10, 131),
    new card('Ace', 'Clubs', 11, 143),
    new card('Two', 'Clubs', 2, 23),
    new card('Three', 'Clubs', 3, 33),
    new card('Four', 'Clubs', 4, 43),
    new card('Five', 'Clubs', 5, 53),
    new card('Six', 'Clubs', 6, 63),
    new card('Seven', 'Clubs', 7, 73),
    new card('Eight', 'Clubs', 8, 83),
    new card('Nine', 'Clubs', 9, 93),
    new card('Ten', 'Clubs', 10, 103),
    new card('Jack', 'Clubs', 10, 113),
    new card('Queen', 'Clubs', 10, 123),
    new card('King', 'Clubs', 10, 133),
    new card('Ace', 'Spades', 11, 144),
    new card('Two', 'Spades', 2, 24),
    new card('Three', 'Spades', 3, 34),
    new card('Four', 'Spades', 4, 44),
    new card('Five', 'Spades', 5, 54),
    new card('Six', 'Spades', 6, 64),
    new card('Seven', 'Spades', 7, 74),
    new card('Eight', 'Spades', 8, 84),
    new card('Nine', 'Spades', 9, 94),
    new card('Ten', 'Spades', 10, 104),
    new card('Jack', 'Spades', 10, 114),
    new card('Queen', 'Spades', 10, 124),
    new card('King', 'Spades', 10, 134)
];
职能:

    function card(name, suit, value, trump) {
        this.name = name;
        this.suit = suit;
        this.value = value;
        this.trump = trump;
    }
    

    $("#newPlayer").click(function(){
            var newPlayer = prompt("Please enter your name.","");
            playerName = newPlayer;
            if(newPlayer != null){
                document.getElementsByClassName("pName")[0].innerHTML = newPlayer;
                document.getElementsByClassName("pName")[1].innerHTML = newPlayer+":";
            }
        });
        

     $("#deal").click(function(){
        if(playerName == ""){
            var newPlayer = prompt("Please enter your name.","");
            playerName = newPlayer;
            if(newPlayer != null){
                document.getElementsByClassName("pName")[0].innerHTML = newPlayer;
                document.getElementsByClassName("pName")[1].innerHTML = newPlayer+":";
            }
        }
        document.getElementById("pHandImg").src = "";
        document.getElementById("cHandImg").src = "";
        document.getElementById("play").disabled = false;
        document.getElementById("cardCount").innerHTML = 26;
        document.getElementById("cScore").innerHTML = "";
        document.getElementById("pScore").innerHTML = "";
        document.getElementById("win").innerHTML = "";
    });

    $("#play").click(function(){
        
        debugger;
        var cardcount = parseInt(document.getElementById("cardCount").textContent);
        if(cardcount == 1){
            document.getElementById("cardCount").innerHTML = cardcount-1;
            var pScore = parseInt(document.getElementById("pScore").textContent);
            var cScore = parseInt(document.getElementById("cScore").textContent);
            if(pScore > cScore){
                document.getElementById("pHandImg").src = "./images/other/check.png";
                document.getElementById("win").innerHTML = "Congrats "+playerName + " Won Game";
            } 
            if(pScore < cScore){
                document.getElementById("pHandImg").src = "./images/other/x.png";
            }
            if(pScore < cScore){
                document.getElementById("cHandImg").src = "./images/other/check.png";
                document.getElementById("win").innerHTML = "Congrats  slick Won Game";
            } 
            if(pScore > cScore){
                document.getElementById("cHandImg").src = "./images/other/x.png";
            }

            document.getElementById("play").disabled = true;
        }else{
            if(count > 0){
                document.getElementById("cardCount").innerHTML = cardcount-1;
            }
            pItem = deck[Math.floor(Math.random() * deck.length)];
            sItem = deck[Math.floor(Math.random() * deck.length)];
            player_cards.push(pItem);
            slick_cards.push(sItem);
            used_cards.push(sItem,sItem);
            pSrc = "./images/"+pItem.suit+"/"+pItem.name+".jpg";
            sSrc = "./images/"+sItem.suit+"/"+sItem.name+".jpg";
            document.getElementById("pHandImg").src = pSrc;
            document.getElementById("cHandImg").src = sSrc;
            pValue = pItem.value;
            sValue = sItem.value;
            val = pValue + sValue;
            var pScore = parseInt(document.getElementById("pScore").textContent);
            if(!pScore){
                pScore = 0;
            }
            var cScore = parseInt(document.getElementById("cScore").textContent);
            if(!cScore){
                cScore = 0;
            }
            if(pValue > sValue){
                document.getElementById("pScore").innerHTML = pScore + val;
            }
            if(pValue < sValue){
                document.getElementById("cScore").innerHTML = cScore + val;
                
            }
        }
        count++;
    });
    
});
功能卡(姓名、套装、价值、王牌){
this.name=名称;
这套衣服;
这个值=值;
这个特朗普=特朗普;
}
$(“#新玩家”)。单击(函数(){
var newPlayer=prompt(“请输入您的姓名。”,”);
playerName=新玩家;
if(newPlayer!=null){
document.getElementsByClassName(“pName”)[0].innerHTML=newPlayer;
document.getElementsByClassName(“pName”)[1].innerHTML=newPlayer+“:”;
}
});
$(“#交易”)。单击(函数(){
如果(playerName==“”){
var newPlayer=prompt(“请输入您的姓名。”,”);
playerName=新玩家;
if(newPlayer!=null){
document.getElementsByClassName(“pName”)[0].innerHTML=newPlayer;
document.getElementsByClassName(“pName”)[1].innerHTML=newPlayer+“:”;
}
}
document.getElementById(“pHandImg”).src=“”;
document.getElementById(“cHandImg”).src=“”;
document.getElementById(“play”).disabled=false;
document.getElementById(“cardCount”).innerHTML=26;
document.getElementById(“cScore”).innerHTML=“”;
document.getElementById(“pScore”).innerHTML=“”;
document.getElementById(“win”).innerHTML=“”;
});
$(“#播放”)。单击(函数(){
调试器;
var cardcount=parseInt(document.getElementById(“cardcount”).textContent);
if(cardcount==1){
document.getElementById(“cardCount”).innerHTML=cardCount-1;
var pScore=parseInt(document.getElementById(“pScore”).textContent);
var cScore=parseInt(document.getElementById(“cScore”).textContent);
if(pScore>cScore){
document.getElementById(“pHandImg”).src=“./images/other/check.png”;
document.getElementById(“赢”).innerHTML=“恭喜”+玩家名称+“赢了游戏”;
} 
if(pScorecScore){
document.getElementById(“cHandImg”).src=“./images/other/x.png”;
}
document.getElementById(“play”).disabled=true;
}否则{
如果(计数>0){
document.getElementById(“cardCount”).innerHTML=cardCount-1;
}
pItem=deck[Math.floor(Math.random()*deck.length)];
sItem=deck[Math.floor(Math.random()*deck.length)];
玩家卡。推(pItem);
光滑的卡片。推(sItem);
用过的卡片。推送(sItem,sItem);
pSrc=“./images/”+pItem.suit+“/”+pItem.name+“.jpg”;
sSrc=“./images/”+sItem.suit+“/”+sItem.name+“.jpg”;
document.getElementById(“pHandImg”).src=pSrc;
document.getElementById(“cHandImg”).src=sSrc;
pValue=pItem.value;
S值=站点M.value;
val=pValue+sValue;
var pScore=parseInt(document.getElementById(“pScore”).textContent);
如果(!pScore){
pScore=0;
}
var cScore=parseInt(document.getElementById(“cScore”).textContent);
如果(!cScore){
cScore=0;
}
如果(pValue>sValue){
document.getElementById(“pScore”).innerHTML=pScore+val;
}
if(pValue
我不确定什么是pItem和sItem以及二手卡和光滑卡,但例如,如果您想检查在二手卡中是否未使用sItem(与pItem和光滑卡类似),则在使用新卡之前,在循环中生成新项,直到您确保之前未使用它们:

var usedBefore=false;
while (!usedBefore){
    sItem = deck[Math.floor(Math.random() * deck.length)];
    if (used_cards.includes(sItem)){
        usedBefore=true;
    }
}
//Then do other stuff

只需在每张卡上添加一个
播放的
属性即可跟踪它们:

const suits=[“红心”、“钻石”、“梅花”、“黑桃”]
常数等级=['Ace','2','3','4','5','6','7','8','9','Jack','Queen','King']
功能卡(等级、套装、价值、王牌){
这个.等级=等级;
这套衣服;
这个值=值;
这个特朗普=特朗普;
这是假的
}
让卡片=[]
排名。forEach(排名=>{
套装。forEach(套装=>{
卡片.推送(新卡片(等级,套装,10,10))
})
})
//让每个国王都参加比赛
cards.forEach(card=>card.played=card.rank===“King”?真:假)

console.log(cards.filter(card=>card.played))
document.getElementsByClassName(“pName”)[0]。innerHTML
对于和是非常糟糕的代码。应避免使用innerHTML
,因为它具有安全性和性能含义(当字符串不包含任何HTML时使用
.textContent
)。此外,如果您要在整个应用程序中引用相同的元素,请只获取一次引用,并为它们提供适当的范围,以便在整个应用程序中访问。哦,谢谢!我会努力修好的