블랙잭/script.js: 두 판 사이의 차이
< 블랙잭
백괴게임>Riemann 잔글편집 요약 없음 |
(alpha: (쿠키를 사용하는) 저장 삭제, 코인 삭제 및 전적으로 변경) |
||
6번째 줄: | 6번째 줄: | ||
{{#vardefine:name|p21}} | {{#vardefine:name|p21}} | ||
{{#vardefine:creat|Riemann}} | {{#vardefine:creat|Riemann}} | ||
{{#vardefine:version|0. | {{#vardefine:version|0.840a1}} | ||
{{#vardefine:descript|블랙잭}} | {{#vardefine:descript|블랙잭}} | ||
{{#vardefine:local|true}} | {{#vardefine:local|true}} | ||
24번째 줄: | 24번째 줄: | ||
$("#multiplier").text(mult); | $("#multiplier").text(mult); | ||
var coins = 100; | |||
var win = 0; | |||
var lose = 0; | |||
//$("#console").text("스코어: " + coins + "점"); | |||
$("#console").text("스코어: " + win + "승 " + lose + "패"); | |||
$("#console").append("<br/>블랙잭에 오신 것을 환영합니다."); | |||
const pcLst = [ | const pcLst = [ | ||
0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAD,0xAE, | 0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAD,0xAE, | ||
71번째 줄: | 46번째 줄: | ||
var dealerD, guestD; | var dealerD, guestD; | ||
$("#deal").click(function(){ | $("#deal").click(function(){ | ||
$("#console").text(" | //$("#console").text("스코어: " + coins + "점"); | ||
$("#console").text("스코어: " + win + "승 " + lose + "패"); | |||
$("#console").append("<br/>새 판을 엽니다."); | $("#console").append("<br/>새 판을 엽니다."); | ||
$("#deal").css("display", "none"); | $("#deal").css("display", "none"); | ||
109번째 줄: | 85번째 줄: | ||
} | } | ||
/* | |||
function inc() { | function inc() { | ||
if (mult < 100) { | if (mult < 100) { | ||
126번째 줄: | 103번째 줄: | ||
$("#multiplier").text(mult); | $("#multiplier").text(mult); | ||
} | } | ||
*/ | |||
function deal() { | function deal() { | ||
266번째 줄: | 244번째 줄: | ||
function win() { | function win() { | ||
$("#console").append("<br/>축하합니다! 이겼습니다.") | $("#console").append("<br/>축하합니다! 이겼습니다.") | ||
$("#console").append("<br/>" + mult + " | //$("#console").append("<br/>" + mult + "점을 얻었습니다.") | ||
coins += mult; | //coins += mult; | ||
win += 1; | |||
$("#deal").css("display", "inline-flex"); | $("#deal").css("display", "inline-flex"); | ||
return 0; | return 0; | ||
274번째 줄: | 252번째 줄: | ||
function lose() { | function lose() { | ||
$("#console").append("<br/>졌습니다...") | $("#console").append("<br/>졌습니다...") | ||
$("#console").append("<br/>" + mult + " | //$("#console").append("<br/>" + mult + "점을 잃었습니다.") | ||
coins -= mult; | //coins -= mult; | ||
lose += 1; | |||
$("#deal").css("display", "inline-flex"); | $("#deal").css("display", "inline-flex"); | ||
publicAd(); | publicAd(); | ||
283번째 줄: | 261번째 줄: | ||
function push() { | function push() { | ||
$("#console").append("<br/>비겼습니다.") | $("#console").append("<br/>비겼습니다.") | ||
$("#deal").css("display", "inline-flex"); | $("#deal").css("display", "inline-flex"); | ||
return 0; | return 0; | ||
291번째 줄: | 268번째 줄: | ||
$("#stand").css("display", "none"); | $("#stand").css("display", "none"); | ||
$("#surrender").css("display", "none"); | $("#surrender").css("display", "none"); | ||
$("#console").append("<br/>이번 판을 포기하셨습니다.") | $("#console").append("<br/>이번 판을 포기하셨습니다 (패배로 처리됩니다).") | ||
$("#console").append("<br/>" + (0.5 * mult) + " | //$("#console").append("<br/>" + (0.5 * mult) + "점을 잃었습니다.") | ||
coins -= 0.5 * mult; | //coins -= 0.5 * mult; | ||
lose += 1; | |||
$("#deal").css("display", "inline-flex"); | $("#deal").css("display", "inline-flex"); | ||
publicAd(); | publicAd(); | ||
301번째 줄: | 278번째 줄: | ||
function bust() { | function bust() { | ||
$("#console").append("<br/>버스트! 유감입니다. 졌습니다...") | $("#console").append("<br/>버스트! 유감입니다. 졌습니다...") | ||
$("#console").append("<br/>" + mult + " | //$("#console").append("<br/>" + mult + "점을 잃었습니다.") | ||
coins -= mult; | //coins -= mult; | ||
lose += 1; | |||
$("#hit").css("display", "none"); | $("#hit").css("display", "none"); | ||
$("#stand").css("display", "none"); | $("#stand").css("display", "none"); | ||
312번째 줄: | 289번째 줄: | ||
function jack() { | function jack() { | ||
$("#console").append("<br/>블랙잭 달성! 축하합니다. 이겼습니다!") | $("#console").append("<br/>블랙잭 달성! 축하합니다. 이겼습니다!") | ||
$("#console").append("<br/>" + (1.5 * mult) + " | //$("#console").append("<br/>" + (1.5 * mult) + "점을 획득했습니다.") | ||
coins += 1.5 * mult; | //coins += 1.5 * mult; | ||
win += 1; | |||
$("#deal").css("display", "inline-flex"); | $("#deal").css("display", "inline-flex"); | ||
return 0; | return 0; | ||
} | } | ||
function publicAd() { | function publicAd() { | ||
if (coins < | if (coins < 0) { | ||
$("#notice").text(" | $("#notice").text("땀 흘려 번 돈이 아름답습니다."); | ||
} | } | ||
return 0; | return 0; |
2023년 9월 3일 (일) 18:16 판
이 플러그인에 대한 설명문서는 블랙잭/script.js/설명문서에서 만들 수 있습니다.
var title = mw.config.get('wgPageName'); if (title.slice( 1, 2 ) == "라") { var blind = true; var defa = 20; } else { var blind = false; var defa = 10; } var mult = defa; $("#multiplier").text(mult); var coins = 100; var win = 0; var lose = 0; //$("#console").text("스코어: " + coins + "점"); $("#console").text("스코어: " + win + "승 " + lose + "패"); $("#console").append("<br/>블랙잭에 오신 것을 환영합니다."); const pcLst = [ 0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAD,0xAE, 0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBD,0xBE, 0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCD,0xCE, 0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDD,0xDE]; const pointData = {a1:1,a2:2,a3:3,a4:4,a5:5,a6:6,a7:7,a8:8,a9:9,aa:10,ab:10,ad:10,ae:10,b1:1,b2:2,b3:3,b4:4,b5:5,b6:6,b7:7,b8:8,b9:9,ba:10,bb:10,bd:10,be:10,c1:1,c2:2,c3:3,c4:4,c5:5,c6:6,c7:7,c8:8,c9:9,ca:10,cb:10,cd:10,ce:10,d1:1,d2:2,d3:3,d4:4,d5:5,d6:6,d7:7,d8:8,d9:9,da:10,db:10,dd:10,de:10}; var pcSet = []; function hexToChar(x) { return String.fromCharCode(0xD83C) +String.fromCharCode(x + 0xDC00); } function hexToStr(x) { return x.toString(16); } var dealerD, guestD; $("#deal").click(function(){ //$("#console").text("스코어: " + coins + "점"); $("#console").text("스코어: " + win + "승 " + lose + "패"); $("#console").append("<br/>새 판을 엽니다."); $("#deal").css("display", "none"); $("#dealerDeck").text(""); $("#guestDeck").text(""); pcSet = Object.create(pcLst); deal(); return 0; }); $("#hit").click(function(){ hit(); return 0; }); $("#stand").click(function(){ stand(); return 0; }); $("#surrender").click(function(){ surrender(); return 0; }); $("#plus").click(function(){ inc(); return 0; }); $("#minus").click(function(){ dec(); return 0; }); $("#reset").click(function(){ reset(); return 0; }); function reset() { mult = defa; $("#multiplier").text(mult); } /* function inc() { if (mult < 100) { mult += 2; } else { alert("최대 100 코인까지만 걸 수 있습니다."); } $("#multiplier").text(mult); } function dec() { if (mult > 2) { mult -= 2; } else { alert("설마 빚을 판돈으로 거시려고요?"); } $("#multiplier").text(mult); } */ function deal() { dealerD = []; guestD = []; dealerD.push(cardPop()); guestD.push(cardPop()); dealerD.push(cardPop()); guestD.push(cardPop()); if (blind == true) { $("#dealerDeck").text("\u{1F0A0}\u{1F0A0}"); } else { $("#dealerDeck").text(hexToChar(dealerD[0]) + "\u{1F0A0}"); } $("#dealerS").text("?"); if (blind == true) { $("#guestDeck").text("\u{1F0A0}\u{1F0A0}"); } else { $("#guestDeck").text(hexToChar(guestD[0]) + hexToChar(guestD[1])); } var guestScore = []; var score = pointData[hexToStr(guestD[0])] + pointData[hexToStr(guestD[1])]; $("#guestS").text(score); if ((pointData[hexToStr(guestD[0])] == 1 && pointData[hexToStr(guestD[1])] == 10) || (pointData[hexToStr(guestD[0])] == 10 && pointData[hexToStr(guestD[1])] == 1)) { $("#guestS").text(21); jack(); } else { $("#hit").css("display", "inline-flex"); $("#stand").css("display", "inline-flex"); $("#surrender").css("display", "inline-flex"); } }; function hit() { $("#hit").css("display", "none"); $("#stand").css("display", "none"); $("#surrender").css("display", "none"); guestD.push(cardPop()); var guestDeq = ""; for (i = 0; i < guestD.length; i++) { guestDeq += hexToChar(guestD[i]); } if (blind == true) { $("#guestDeck").text("\u{1F0A0}".repeat(guestDeq.length / 2)); } else { $("#guestDeck").text(guestDeq); } var guestScore = []; var score = 0; for (i = 0; i < guestD.length; i++) { guestScore.push(pointData[hexToStr(guestD[i])]); score += guestScore[i]; } $("#guestS").text(score); if (score == 21 || (score == 11 && guestScore.includes(1))) { $("#console").append("<br/>21점이므로 자동으로 스탠드를 외쳤습니다.") stand(dealerD,guestD); } else if (score > 21) { bust(); } else { $("#hit").css("display", "inline-flex"); $("#stand").css("display", "inline-flex"); } return 0; } function stand() { $("#hit").css("display", "none"); $("#stand").css("display", "none"); $("#surrender").css("display", "none"); var dScore = 0; var dealerScore = [] for (i = 0; i < dealerD.length; i++) { dealerScore.push(pointData[hexToStr(dealerD[i])]); dScore += dealerScore[i]; } while (dScore < 17) { dealerD.push(cardPop()); $("#console").append("<br/>딜러가 카드를 뽑았습니다.") dealerScore = []; dScore = 0; for (i = 0; i < dealerD.length; i++) { dealerScore.push(pointData[hexToStr(dealerD[i])]); dScore += dealerScore[i]; dealerDeq += hexToChar(dealerD[i]); } } var dealerDeq = ""; for (i = 0; i < dealerD.length; i++) { dealerDeq += hexToChar(dealerD[i]); } $("#dealerS").text(dScore); $("#dealerDeck").text(dealerDeq); guestScore = []; score = 0; for (i = 0; i < guestD.length; i++) { guestScore.push(pointData[hexToStr(guestD[i])]); score += guestScore[i]; } $("#guestS").text(score); if (score > 21) { bust() } else if (dScore > 21) { $("#console").append("<br/>딜러의 버스트.") win() } else { $("#console").append("<br/>딜러의 스탠드.") compare(dealerD,guestD); } return 0; } function compare() { var dealerScore = []; var dScore = 0; for (i = 0; i < dealerD.length; i++) { dealerScore.push(pointData[hexToStr(dealerD[i])]); dScore += dealerScore[i]; } var guestScore = []; var score = 0; for (i = 0; i < guestD.length; i++) { guestScore.push(pointData[hexToStr(guestD[i])]); score += guestScore[i]; } if (dScore < 12 && dealerScore.includes(1)) { dScore += 10 } if (score < 12 && guestScore.includes(1)) { score += 10 } $("#dealerS").text(dScore); $("#guestS").text(score); if (dScore > score) { lose() } else if (dScore == score) { push() } else { win() } return 0; } function win() { $("#console").append("<br/>축하합니다! 이겼습니다.") //$("#console").append("<br/>" + mult + "점을 얻었습니다.") //coins += mult; win += 1; $("#deal").css("display", "inline-flex"); return 0; } function lose() { $("#console").append("<br/>졌습니다...") //$("#console").append("<br/>" + mult + "점을 잃었습니다.") //coins -= mult; lose += 1; $("#deal").css("display", "inline-flex"); publicAd(); return 0; } function push() { $("#console").append("<br/>비겼습니다.") $("#deal").css("display", "inline-flex"); return 0; } function surrender() { $("#hit").css("display", "none"); $("#stand").css("display", "none"); $("#surrender").css("display", "none"); $("#console").append("<br/>이번 판을 포기하셨습니다 (패배로 처리됩니다).") //$("#console").append("<br/>" + (0.5 * mult) + "점을 잃었습니다.") //coins -= 0.5 * mult; lose += 1; $("#deal").css("display", "inline-flex"); publicAd(); return 0; } function bust() { $("#console").append("<br/>버스트! 유감입니다. 졌습니다...") //$("#console").append("<br/>" + mult + "점을 잃었습니다.") //coins -= mult; lose += 1; $("#hit").css("display", "none"); $("#stand").css("display", "none"); $("#deal").css("display", "inline-flex"); publicAd(); return 0; } function jack() { $("#console").append("<br/>블랙잭 달성! 축하합니다. 이겼습니다!") //$("#console").append("<br/>" + (1.5 * mult) + "점을 획득했습니다.") //coins += 1.5 * mult; win += 1; $("#deal").css("display", "inline-flex"); return 0; } function publicAd() { if (coins < 0) { $("#notice").text("땀 흘려 번 돈이 아름답습니다."); } return 0; } function cardPop() { var j, ret; j = Math.floor(Math.random() * pcSet.length); ret = pcSet[j]; pcSet.splice(j,1); return ret; }