비디오 포커 게임의 기초를 내리는 방법으로 자바 포커로 비디오 포커 게임을 작성하려고하는데 jQuery 클릭 이벤트 핸들러가 여러 번 실행되는 문제가 발생했습니다.
베팅을하기위한 버튼에 부착되어 있으며, 게임 중에 직접 베팅을 할 때 좋습니다 (한 번만 발사). 그러나 초침 베팅에서는 베팅 또는 플레이스 베팅 버튼을 누를 때마다 클릭 이벤트가 두 번 발생합니다 (따라서 매번 정확한 금액이 베팅됩니다). 베팅 버튼을 한 번 누르면 클릭 이벤트가 발생하는 횟수에 대해 전반적으로이 패턴을 따릅니다 . 시퀀스 의 i 번째 항은 게임 시작부터 i 번째 손을 베팅 한 것입니다 . 1, 2, 4 표시, 7, 11, 16, 22, 29, 37, 46, N (N + 1) / 2 + 1은 무엇을 위해 그 가치가 수 - 내가 그림을 그 밖으로 스마트 충분하지, 내가 사용 OEIS을 . :)
작동하는 click 이벤트 핸들러가있는 함수는 다음과 같습니다. 바라건대 이해하기 쉽기를 바랍니다 (그렇지 않다면 알려주세요.
/** 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);
요소의 동일한 속성을 두 번 이상 사용하여 해당 속성을 캐시 하려는 경우 계속 찾아 보지 마십시오. 조회 비용이 비싸다.