Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Blackjack {
- constructor(bj_obj) {
- this.cards_dealer = bj_obj.cards_dealer;
- this.cards_player = bj_obj.cards_player;
- this.bet = bj_obj.bet;
- this.more = bj_obj.more;
- this.leave = bj_obj.leave;
- this.active = bj_obj.active;
- this.admin_list = bj_obj.admin_list;
- }
- game_start() {
- const arr_bet = [];
- for ( let bet of this.bet ) {
- bet.addEventListener('click', (e) => {
- const bet_value = e.target;
- arr_bet.push(Number(bet_value.innerText));
- const bet = arr_bet.reduce((sum, current) => {
- return sum + current;
- }, 0);
- this.admin_list.children[0].innerText = bet;
- this.inited || setTimeout((e) => {
- this.active[0].classList.add('hidden');
- this.distribution_of_cards();
- }, 1000);
- this.inited = 1;
- })
- }
- console.log('Game start');
- }
- generate_cards(user, count) {
- const card_deck = ['A', 'K', 'Q', 'J', 10, 9, 8, 7, 6, 5, 4, 3, 2];
- const deck_length = card_deck.length - 1;
- for ( let i = 0; i < count; i++ ) {
- const random_card = Math.floor(Math.random() * (deck_length - 0 + 1)) + 0;
- user.push(card_deck[random_card]);
- }
- }
- distribution_of_cards() {
- const dealer = [];
- const player = [];
- this.generate_cards(dealer, 2);
- this.generate_cards(player, 2);
- const board = {
- dealer: dealer,
- player: player,
- }
- this.amount_cards(board);
- this.cards_update(board.dealer, this.cards_dealer);
- this.cards_update(board.player, this.cards_player);
- }
- amount_cards(board) {
- const cards_obj = {
- A: ["A", 11],
- K: ["K", 10],
- Q: ["Q", 10],
- J: ["J", 10],
- }
- let amount = 0;
- let amount_dealer = amount;
- let amount_player = amount;
- board.amount_player = this.amount_func(board.player, amount_player, cards_obj);
- board.amount_dealer = this.amount_func(board.dealer, amount_dealer, cards_obj);
- this.choice(board, cards_obj);
- }
- amount_func(user, amount, cards_obj) {
- user.forEach(item => {
- if ( typeof(item) == "string" ) {
- for ( let card of Object.keys(cards_obj) ) {
- if ( item == cards_obj[card][0] ) {
- amount = amount + cards_obj[card][1];
- }
- }
- } else if ( typeof(item) == "number" ) {
- amount = amount + item;
- }
- })
- return amount;
- }
- cards_update(cards, user) {
- cards.forEach(card => {
- const li = document.createElement('li');
- li.innerText = card;
- li.className = 'bj-board__item';
- user.appendChild(li);
- })
- }
- amount_check_player(board) {
- if ( board.amount_player > 21 ) {
- console.log('Игрок проиграл!');
- this.active[1].classList.add('hidden');
- this.game_end(board);
- } else if ( board.amount_player == 21 ) {
- console.log('Игрок выиграл! Блэкджек!');
- this.active[1].classList.add('hidden');
- this.game_end(board);
- }
- }
- amount_check_dealer(board) {
- if ( board.amount_dealer > 21 ) {
- console.log('Диллер проиграл.');
- } else if ( board.amount_dealer == 21 ) {
- console.log('Диллер выиграл! Блэкджек!');
- } else if ( board.amount_dealer > board.amount_player ) {
- console.log('Рука диллера оказалась сильнее!');
- } else if ( board.amount_dealer == board.amount_player ) {
- console.log('Ничья.');
- } else {
- console.log('Рука игрока оказалась сильнее!')
- }
- }
- add_card(board, user, cards_user, cards_obj) {
- let amount = 0;
- let amount_users = amount;
- const li = document.createElement('li');
- board.amount_users = this.amount_func(user, amount_users, cards_obj);
- li.innerText = user[user.length - 1];
- li.className = 'bj-board__item';
- cards_user.appendChild(li);
- return board.amount_users;
- }
- choice(board, cards_obj) {
- this.amount_check_player(board);
- if ( board.amount_player < 21 ) {
- this.more.addEventListener('click', (e) => {
- this.generate_cards(board.player, 1);
- board.amount_player = this.add_card(board, board.player, this.cards_player, cards_obj);
- this.amount_check_player(board);
- });
- this.leave.addEventListener('click', (e) => {
- this.active[1].classList.add('hidden');
- if ( board.amount_dealer < 17 ) {
- for ( let i = board.amount_dealer; i < 17; ) {
- if ( board.amount_dealer < 17 ) {
- this.generate_cards(board.dealer, 1);
- board.amount_dealer = this.add_card(board, board.dealer, this.cards_dealer, cards_obj);
- } else {
- this.amount_check_dealer(board);
- this.game_end(board);
- break;
- }
- }
- } else {
- this.amount_check_dealer(board);
- this.game_end(board);
- }
- });
- }
- }
- game_end(board) {
- board = {};
- this.active[0].classList.remove('hidden');
- this.admin_list.children[0].innerText = 0;
- while ( this.cards_dealer.firstChild ) {
- this.cards_dealer.removeChild(this.cards_dealer.firstChild);
- }
- while ( this.cards_player.firstChild ) {
- this.cards_player.removeChild(this.cards_player.firstChild);
- }
- console.log(board);
- }
- }
- const bj_obj = {
- cards_dealer: document.querySelector('.dealer'),
- cards_player: document.querySelector('.player'),
- bet: document.querySelectorAll('.bj-control__bet > ul > li'),
- more: document.querySelector('.bj-control__more'),
- leave: document.querySelector('.bj-control__leave'),
- active: document.querySelectorAll('.bj-control__active'),
- admin_list: document.querySelector('.bj-admin__list'),
- }
- let blackjack = new Blackjack(bj_obj);
- blackjack.game_start();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement