블랙잭/script.js: 두 판 사이의 차이
< 블랙잭
백괴게임>Riemann 잔글편집 요약 없음 |
백괴게임>Riemann 잔글 (I think the problem is resolved) |
||
6번째 줄: | 6번째 줄: | ||
{{#vardefine:name|p21}} | {{#vardefine:name|p21}} | ||
{{#vardefine:creat|Riemann}} | {{#vardefine:creat|Riemann}} | ||
{{#vardefine:version|0. | {{#vardefine:version|0.789}} | ||
{{#vardefine:descript|블랙잭}} | {{#vardefine:descript|블랙잭}} | ||
{{#vardefine:local|true}} | {{#vardefine:local|true}} | ||
27번째 줄: | 27번째 줄: | ||
$("#deal").click(function(){ | $("#deal").click(function(){ | ||
console.log("init"); | console.log("init"); | ||
$("#console").text("새 판을 엽니다.") | $("#console").text("새 판을 엽니다.") | ||
$("#deal").css("display", "none"); | $("#deal").css("display", "none"); | ||
34번째 줄: | 32번째 줄: | ||
$("#guestDeck").text(""); | $("#guestDeck").text(""); | ||
pcSet = pcLst; | pcSet = pcLst; | ||
var dealerD = []; | var dealerD, guestD; | ||
deal(); | |||
return 0; | |||
}); | |||
$("#hit").click(function(){ | |||
console.log("hit"); | |||
console.log(guestD); | |||
hit(dealerD, guestD); | |||
return 0; | |||
}); | |||
$("#stand").click(function(){ | |||
stand(dealerD, guestD); | |||
return 0; | |||
}); | |||
function deal() { | |||
dealerD = []; | |||
guestD = []; | |||
dealerD.push(cardPop()); | dealerD.push(cardPop()); | ||
guestD.push(cardPop()); | guestD.push(cardPop()); | ||
52번째 줄: | 65번째 줄: | ||
$("#hit").css("display", "inline-flex"); | $("#hit").css("display", "inline-flex"); | ||
$("#stand").css("display", "inline-flex"); | $("#stand").css("display", "inline-flex"); | ||
} | } | ||
}; | |||
function hit(dd, gd) { | |||
$("#hit").css("display", "none"); | |||
$("#stand").css("display", "none"); | |||
gd.push(cardPop()); | |||
var guestDeq = ""; | |||
for (i = 0; i < gd.length; i++) { | |||
guestDeq += hexToChar(gd[i]); | |||
} | |||
$("#guestDeck").text(guestDeq); | |||
var guestScore = []; | |||
var score = 0; | |||
for (i = 0; i < gd.length; i++) { | |||
guestScore.push(pointData[hexToStr(gd[i])]); | |||
score += guestScore[i]; | |||
} | |||
$("#guestS").text(score); | |||
if (score == 21 || (score == 11 && guestScore.includes(1))) { | |||
$("#console").text("21점이므로 자동으로 스탠드를 외쳤습니다.") | |||
stand(dd,gd); | |||
} else if (score > 21) { | |||
bust(); | |||
} else { | |||
$("#hit").css("display", "inline-flex"); | |||
$("#stand").css("display", "inline-flex"); | |||
} | |||
return 0; | |||
} | |||
function stand(ddd, gdd) { | |||
$("#hit").css("display", "none"); | |||
$("#stand").css("display", "none"); | |||
var dScore = 0; | |||
var dealerScore = [] | |||
for (i = 0; i < ddd.length; i++) { | |||
dealerScore.push(pointData[hexToStr(ddd[i])]); | |||
dScore += dealerScore[i]; | |||
} | } | ||
while (dScore < 17) { | |||
ddd.push(cardPop()); | |||
$("# | $("#console").text("br/>딜러가 카드를 뽑았습니다.") | ||
dealerScore = []; | |||
dScore = 0; | |||
for (i = 0; i < ddd.length; i++) { | for (i = 0; i < ddd.length; i++) { | ||
dealerScore.push(pointData[hexToStr(ddd[i])]); | dealerScore.push(pointData[hexToStr(ddd[i])]); | ||
dScore += dealerScore[i]; | dScore += dealerScore[i]; | ||
dealerDeq += hexToChar(ddd[i]); | |||
} | } | ||
} | |||
var dealerDeq = ""; | |||
for (i = 0; i < ddd.length; i++) { | |||
dealerDeq += hexToChar(ddd[i]); | |||
} | } | ||
$("#dealerS").text(dScore); | |||
$("#dealerDeck").text(dealerDeq); | |||
guestScore = []; | |||
score = 0; | |||
for (i = 0; i < gdd.length; i++) { | |||
guestScore.push(pointData[hexToStr(gdd[i])]); | |||
score += guestScore[i]; | |||
} | } | ||
$("#guestS").text(score); | |||
console.log(score); | |||
if (score > 21) { | |||
bust() | |||
} else if (dScore > 21) { | |||
win() | |||
} else { | |||
compare(ddd,gdd); | |||
} | } | ||
function | return 0; | ||
} | |||
function compare(d, g) { | |||
var dealerScore = []; | |||
var dScore = 0; | |||
for (i = 0; i < d.length; i++) { | |||
dealerScore.push(pointData[hexToStr(d[i])]); | |||
dScore += dealerScore[i]; | |||
} | } | ||
var guestScore = []; | |||
var score = 0; | |||
for (i = 0; i < g.length; i++) { | |||
guestScore.push(pointData[hexToStr(g[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").text("축하합니다! 이겼습니다.") | |||
$("#deal").css("display", "inline-flex"); | |||
return 0; | |||
} | |||
function lose() { | |||
$("#console").text("졌습니다...") | |||
$("#deal").css("display", "inline-flex"); | |||
return 0; | |||
} | |||
function push() { | |||
$("#console").text("비겼습니다.") | |||
$("#deal").css("display", "inline-flex"); | |||
return 0; | |||
} | |||
function bust() { | |||
$("#console").text("버스트! 유감입니다. 졌습니다...") | |||
$("#hit").css("display", "none"); | |||
$("#stand").css("display", "none"); | |||
$("#deal").css("display", "inline-flex"); | |||
return 0; | |||
} | |||
function jack() { | |||
$("#console").text("블랙잭 달성! 축하합니다. 이겼습니다!") | |||
$("#deal").css("display", "inline-flex"); | |||
return 0; | |||
} | |||
function cardPop() { | function cardPop() { | ||
var j, ret; | var j, ret; |
2018년 2월 5일 (월) 23:50 판
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}; function hexToChar(x) { return String.fromCharCode(0xD83C) +String.fromCharCode(x + 0xDC00); } function hexToStr(x) { return x.toString(16); } $("#deal").click(function(){ console.log("init"); $("#console").text("새 판을 엽니다.") $("#deal").css("display", "none"); $("#dealerDeck").text(""); $("#guestDeck").text(""); pcSet = pcLst; var dealerD, guestD; deal(); return 0; }); $("#hit").click(function(){ console.log("hit"); console.log(guestD); hit(dealerD, guestD); return 0; }); $("#stand").click(function(){ stand(dealerD, guestD); return 0; }); function deal() { dealerD = []; guestD = []; dealerD.push(cardPop()); guestD.push(cardPop()); dealerD.push(cardPop()); guestD.push(cardPop()); $("#dealerDeck").text(hexToChar(dealerD[0]) + "\u{1F0A0}"); $("#dealerS").text("?"); $("#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"); } }; function hit(dd, gd) { $("#hit").css("display", "none"); $("#stand").css("display", "none"); gd.push(cardPop()); var guestDeq = ""; for (i = 0; i < gd.length; i++) { guestDeq += hexToChar(gd[i]); } $("#guestDeck").text(guestDeq); var guestScore = []; var score = 0; for (i = 0; i < gd.length; i++) { guestScore.push(pointData[hexToStr(gd[i])]); score += guestScore[i]; } $("#guestS").text(score); if (score == 21 || (score == 11 && guestScore.includes(1))) { $("#console").text("21점이므로 자동으로 스탠드를 외쳤습니다.") stand(dd,gd); } else if (score > 21) { bust(); } else { $("#hit").css("display", "inline-flex"); $("#stand").css("display", "inline-flex"); } return 0; } function stand(ddd, gdd) { $("#hit").css("display", "none"); $("#stand").css("display", "none"); var dScore = 0; var dealerScore = [] for (i = 0; i < ddd.length; i++) { dealerScore.push(pointData[hexToStr(ddd[i])]); dScore += dealerScore[i]; } while (dScore < 17) { ddd.push(cardPop()); $("#console").text("br/>딜러가 카드를 뽑았습니다.") dealerScore = []; dScore = 0; for (i = 0; i < ddd.length; i++) { dealerScore.push(pointData[hexToStr(ddd[i])]); dScore += dealerScore[i]; dealerDeq += hexToChar(ddd[i]); } } var dealerDeq = ""; for (i = 0; i < ddd.length; i++) { dealerDeq += hexToChar(ddd[i]); } $("#dealerS").text(dScore); $("#dealerDeck").text(dealerDeq); guestScore = []; score = 0; for (i = 0; i < gdd.length; i++) { guestScore.push(pointData[hexToStr(gdd[i])]); score += guestScore[i]; } $("#guestS").text(score); console.log(score); if (score > 21) { bust() } else if (dScore > 21) { win() } else { compare(ddd,gdd); } return 0; } function compare(d, g) { var dealerScore = []; var dScore = 0; for (i = 0; i < d.length; i++) { dealerScore.push(pointData[hexToStr(d[i])]); dScore += dealerScore[i]; } var guestScore = []; var score = 0; for (i = 0; i < g.length; i++) { guestScore.push(pointData[hexToStr(g[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").text("축하합니다! 이겼습니다.") $("#deal").css("display", "inline-flex"); return 0; } function lose() { $("#console").text("졌습니다...") $("#deal").css("display", "inline-flex"); return 0; } function push() { $("#console").text("비겼습니다.") $("#deal").css("display", "inline-flex"); return 0; } function bust() { $("#console").text("버스트! 유감입니다. 졌습니다...") $("#hit").css("display", "none"); $("#stand").css("display", "none"); $("#deal").css("display", "inline-flex"); return 0; } function jack() { $("#console").text("블랙잭 달성! 축하합니다. 이겼습니다!") $("#deal").css("display", "inline-flex"); return 0; } function cardPop() { var j, ret; j = Math.floor(Math.random() * pcSet.length); ret = pcSet[j]; pcSet.splice(j,1); return ret; }