Advertisement
Guest User

Untitled

a guest
Nov 5th, 2020
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.51 KB | None | 0 0
  1. class Blackjack {
  2. constructor(bj_obj) {
  3. this.cards_dealer = bj_obj.cards_dealer;
  4. this.cards_player = bj_obj.cards_player;
  5. this.bet = bj_obj.bet;
  6. this.more = bj_obj.more;
  7. this.leave = bj_obj.leave;
  8. this.active = bj_obj.active;
  9. this.admin_list = bj_obj.admin_list;
  10. }
  11.  
  12. game_start() {
  13. const arr_bet = [];
  14.  
  15. for ( let bet of this.bet ) {
  16. bet.addEventListener('click', (e) => {
  17. const bet_value = e.target;
  18.  
  19. arr_bet.push(Number(bet_value.innerText));
  20.  
  21. const bet = arr_bet.reduce((sum, current) => {
  22. return sum + current;
  23. }, 0);
  24.  
  25. this.admin_list.children[0].innerText = bet;
  26.  
  27. this.inited || setTimeout((e) => {
  28. this.active[0].classList.add('hidden');
  29. this.distribution_of_cards();
  30. }, 1000);
  31.  
  32. this.inited = 1;
  33. })
  34. }
  35. console.log('Game start');
  36. }
  37.  
  38. generate_cards(user, count) {
  39. const card_deck = ['A', 'K', 'Q', 'J', 10, 9, 8, 7, 6, 5, 4, 3, 2];
  40. const deck_length = card_deck.length - 1;
  41.  
  42. for ( let i = 0; i < count; i++ ) {
  43. const random_card = Math.floor(Math.random() * (deck_length - 0 + 1)) + 0;
  44. user.push(card_deck[random_card]);
  45. }
  46. }
  47.  
  48. distribution_of_cards() {
  49. const dealer = [];
  50. const player = [];
  51.  
  52. this.generate_cards(dealer, 2);
  53. this.generate_cards(player, 2);
  54.  
  55. const board = {
  56. dealer: dealer,
  57. player: player,
  58. }
  59.  
  60. this.amount_cards(board);
  61. this.cards_update(board.dealer, this.cards_dealer);
  62. this.cards_update(board.player, this.cards_player);
  63. }
  64.  
  65. amount_cards(board) {
  66. const cards_obj = {
  67. A: ["A", 11],
  68. K: ["K", 10],
  69. Q: ["Q", 10],
  70. J: ["J", 10],
  71. }
  72. let amount = 0;
  73. let amount_dealer = amount;
  74. let amount_player = amount;
  75.  
  76. board.amount_player = this.amount_func(board.player, amount_player, cards_obj);
  77. board.amount_dealer = this.amount_func(board.dealer, amount_dealer, cards_obj);
  78.  
  79. this.choice(board, cards_obj);
  80. }
  81.  
  82. amount_func(user, amount, cards_obj) {
  83. user.forEach(item => {
  84. if ( typeof(item) == "string" ) {
  85. for ( let card of Object.keys(cards_obj) ) {
  86. if ( item == cards_obj[card][0] ) {
  87. amount = amount + cards_obj[card][1];
  88. }
  89. }
  90. } else if ( typeof(item) == "number" ) {
  91. amount = amount + item;
  92. }
  93. })
  94.  
  95. return amount;
  96. }
  97.  
  98. cards_update(cards, user) {
  99. cards.forEach(card => {
  100. const li = document.createElement('li');
  101. li.innerText = card;
  102. li.className = 'bj-board__item';
  103. user.appendChild(li);
  104. })
  105. }
  106.  
  107. amount_check_player(board) {
  108. if ( board.amount_player > 21 ) {
  109. console.log('Игрок проиграл!');
  110.  
  111. this.active[1].classList.add('hidden');
  112. this.game_end(board);
  113. } else if ( board.amount_player == 21 ) {
  114. console.log('Игрок выиграл! Блэкджек!');
  115.  
  116. this.active[1].classList.add('hidden');
  117. this.game_end(board);
  118. }
  119. }
  120.  
  121. amount_check_dealer(board) {
  122. if ( board.amount_dealer > 21 ) {
  123. console.log('Диллер проиграл.');
  124. } else if ( board.amount_dealer == 21 ) {
  125. console.log('Диллер выиграл! Блэкджек!');
  126. } else if ( board.amount_dealer > board.amount_player ) {
  127. console.log('Рука диллера оказалась сильнее!');
  128. } else if ( board.amount_dealer == board.amount_player ) {
  129. console.log('Ничья.');
  130. } else {
  131. console.log('Рука игрока оказалась сильнее!')
  132. }
  133. }
  134.  
  135. add_card(board, user, cards_user, cards_obj) {
  136. let amount = 0;
  137. let amount_users = amount;
  138. const li = document.createElement('li');
  139.  
  140. board.amount_users = this.amount_func(user, amount_users, cards_obj);
  141. li.innerText = user[user.length - 1];
  142. li.className = 'bj-board__item';
  143. cards_user.appendChild(li);
  144.  
  145. return board.amount_users;
  146. }
  147.  
  148. choice(board, cards_obj) {
  149. this.amount_check_player(board);
  150.  
  151. if ( board.amount_player < 21 ) {
  152. this.more.addEventListener('click', (e) => {
  153.  
  154. this.generate_cards(board.player, 1);
  155. board.amount_player = this.add_card(board, board.player, this.cards_player, cards_obj);
  156.  
  157. this.amount_check_player(board);
  158. });
  159.  
  160. this.leave.addEventListener('click', (e) => {
  161. this.active[1].classList.add('hidden');
  162.  
  163. if ( board.amount_dealer < 17 ) {
  164. for ( let i = board.amount_dealer; i < 17; ) {
  165. if ( board.amount_dealer < 17 ) {
  166.  
  167. this.generate_cards(board.dealer, 1);
  168. board.amount_dealer = this.add_card(board, board.dealer, this.cards_dealer, cards_obj);
  169.  
  170. } else {
  171. this.amount_check_dealer(board);
  172. this.game_end(board);
  173. break;
  174. }
  175. }
  176. } else {
  177. this.amount_check_dealer(board);
  178. this.game_end(board);
  179. }
  180. });
  181. }
  182.  
  183. }
  184.  
  185. game_end(board) {
  186. board = {};
  187.  
  188. this.active[0].classList.remove('hidden');
  189. this.admin_list.children[0].innerText = 0;
  190.  
  191. while ( this.cards_dealer.firstChild ) {
  192. this.cards_dealer.removeChild(this.cards_dealer.firstChild);
  193. }
  194.  
  195. while ( this.cards_player.firstChild ) {
  196. this.cards_player.removeChild(this.cards_player.firstChild);
  197. }
  198.  
  199. console.log(board);
  200. }
  201. }
  202.  
  203. const bj_obj = {
  204. cards_dealer: document.querySelector('.dealer'),
  205. cards_player: document.querySelector('.player'),
  206. bet: document.querySelectorAll('.bj-control__bet > ul > li'),
  207. more: document.querySelector('.bj-control__more'),
  208. leave: document.querySelector('.bj-control__leave'),
  209. active: document.querySelectorAll('.bj-control__active'),
  210. admin_list: document.querySelector('.bj-admin__list'),
  211. }
  212.  
  213. let blackjack = new Blackjack(bj_obj);
  214. blackjack.game_start();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement