मैं जावास्क्रिप्ट में एक वीडियो पोकर गेम लिखने का प्रयास कर रहा हूं, इसके मूल के नीचे आने का एक तरीका है, और मैं एक समस्या में चला गया हूं जहां jQuery क्लिक इवेंट हैंडलर कई बार फायर कर रहे हैं।
वे एक शर्त रखने के लिए बटन से जुड़े होते हैं, और यह एक गेम के दौरान पहले हाथ पर दांव लगाने के लिए ठीक काम करता है (केवल एक बार फायरिंग); लेकिन दूसरे हाथ के लिए सट्टेबाजी में, यह क्लिक इवेंट को हर बार दो बार फायर करता है जब भी एक शर्त या जगह बटन दबाया जाता है (इसलिए प्रत्येक प्रेस के लिए दो बार सही राशि शर्त होती है)। कुल मिलाकर, यह एक बार एक बेट बटन को दबाते समय क्लिक इवेंट को निकाल दिए जाने की संख्या के लिए इस पैटर्न का अनुसरण करता है - जहां गेम की शुरुआत से ith हाथ के सट्टेबाजी के लिए अनुक्रम का ith शब्द है : 1, 2, 4 , 7, 11, 16, 22, 29, 37, 46, 46, जो प्रतीत होता है n (n + 1) / 2 + 1 जो कुछ भी इसके लायक है - और मैं इसे समझ पाने के लिए पर्याप्त स्मार्ट नहीं था, मैंने OEIS का उपयोग किया था । :)
यहां क्लिक इवेंट हैंडलर के साथ कार्य किया जा रहा है; उम्मीद है कि यह समझना आसान है (मुझे पता है कि नहीं, मैं उस पर भी बेहतर करना चाहते हैं):
/** The following function keeps track of bet buttons that are pressed, until place button is pressed to place bet. **/
function pushingBetButtons() {
$("#money").text("Money left: $" + player.money); // displays money player has left
$(".bet").click(function() {
var amount = 0; // holds the amount of money the player bet on this click
if($(this).attr("id") == "bet1") { // the player just bet $1
amount = 1;
} else if($(this).attr("id") == "bet5") { // etc.
amount = 5;
} else if($(this).attr("id") == "bet25") {
amount = 25;
} else if($(this).attr("id") == "bet100") {
amount = 100;
} else if($(this).attr("id") == "bet500") {
amount = 500;
} else if($(this).attr("id") == "bet1000") {
amount = 1000;
}
if(player.money >= amount) { // check whether the player has this much to bet
player.bet += amount; // add what was just bet by clicking that button to the total bet on this hand
player.money -= amount; // and, of course, subtract it from player's current pot
$("#money").text("Money left: $" + player.money); // then redisplay what the player has left
} else {
alert("You don't have $" + amount + " to bet.");
}
});
$("#place").click(function() {
if(player.bet == 0) { // player didn't bet anything on this hand
alert("Please place a bet first.");
} else {
$("#card_para").css("display", "block"); // now show the cards
$(".card").bind("click", cardClicked); // and set up the event handler for the cards
$("#bet_buttons_para").css("display", "none"); // hide the bet buttons and place bet button
$("#redraw").css("display", "block"); // and reshow the button for redrawing the hand
player.bet = 0; // reset the bet for betting on the next hand
drawNewHand(); // draw the cards
}
});
}
कृपया मुझे बताएं कि क्या आपके पास कोई विचार या सुझाव है, या यदि मेरी समस्या का समाधान यहां की एक अन्य समस्या के समाधान के समान है (मैंने कई समान शीर्षक वाले थ्रेड्स को देखा है और समाधान खोजने में कोई भाग्य नहीं था जो काम कर सकता है मेरे लिए)।
var amount = parseInt(this.id.replace(/[^\d]/g,''),10);
और अगर आप एक बार से अधिक एक तत्व की ही संपत्ति का उपयोग करने जा रहे हैं कैश कि संपत्ति, इसे देख नहीं रखते। दिखना महंगा है।