블랙잭

리버티게임, 모두가 만들어가는 자유로운 게임
백괴게임>Riemann님의 2018년 2월 5일 (월) 21:29 판
Crystal Clear app package games.png
이 게임은 현재 공사 중입니다!
2024년 11월 29일 04시 17분 46초까지 완성되기로 한 게임입니다.
"블랙잭" 개발에 대한 문의 사항은 이곳에서 받고 있습니다. 게임 개발자에게: '<!--기획'으로 시작하는 게임 기획을 작성하시면 지정한 날짜 혹은 마지막 편집으로부터 7일 이후 개발이 중단되었을 때 게임이 일방적으로 삭제되는 것을 막을 수 있습니다.
이미 게임 기획을 작성했다면 틀 뒤에 '기획=1'을 적어 이 안내문을 지울 수 있습니다.



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 wincount = 0; var losecount = 0; //$("#console").text("스코어: " + coins + "점"); $("#console").text("스코어: " + wincount + "승 " + losecount + "패"); $("#console").append("\n블랙잭에 오신 것을 환영합니다.");

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("스코어: " + wincount + "승 " + losecount + "패");
   $("#console").append("\n새 판을 엽니다.");
   $("#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("\n21점이므로 자동으로 스탠드를 외쳤습니다.");
       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("\n딜러가 카드를 뽑았습니다.");
       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("\n딜러의 버스트.");
       win();
   } else {
       $("#console").append("\n딜러의 스탠드.");
       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("\n축하합니다! 이겼습니다.");
   //$("#console").append("\n" + mult + "점을 얻었습니다.");
   //coins += mult;
   wincount += 1;
   $("#deal").css("display", "inline-flex");
   return 0;

} function lose() {

   $("#console").append("\n졌습니다...");
   //$("#console").append("\n" + mult + "점을 잃었습니다.");
   //coins -= mult;
   losecount += 1;
   $("#deal").css("display", "inline-flex");
   publicAd();
   return 0;

} function push() {

   $("#console").append("\n비겼습니다.");
   $("#deal").css("display", "inline-flex");
   return 0;

} function surrender() {

   $("#hit").css("display", "none");
   $("#stand").css("display", "none");
   $("#surrender").css("display", "none");
   $("#console").append("\n이번 판을 포기하셨습니다 (패배로 처리됩니다).");
   //$("#console").append("\n" + (0.5 * mult) + "점을 잃었습니다.");
   //coins -= 0.5 * mult;
   losecount += 1;
   $("#deal").css("display", "inline-flex");
   publicAd();
   return 0;

} function bust() {

   $("#console").append("\n버스트! 유감입니다. 졌습니다...");
   //$("#console").append("\n" + mult + "점을 잃었습니다.");
   //coins -= mult;
   losecount += 1;
   $("#hit").css("display", "none");
   $("#stand").css("display", "none");
   $("#deal").css("display", "inline-flex");
   publicAd();
   return 0;

} function jack() {

   $("#console").append("\n블랙잭 달성! 축하합니다. 이겼습니다!");
   //$("#console").append("\n" + (1.5 * mult) + "점을 획득했습니다.");
   //coins += 1.5 * mult;
   wincount += 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;

}

딜러:

당신:

Request Deal