From 9f4e0d637174d675acebcfbda966635eb8da5c29 Mon Sep 17 00:00:00 2001 From: spbRusty <42145047+spbRusty@users.noreply.github.com> Date: Sun, 11 Aug 2024 02:32:24 +0300 Subject: [PATCH] Update game.js --- game.js | 108 +++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 80 insertions(+), 28 deletions(-) diff --git a/game.js b/game.js index d9d08bc..ae0c3a4 100644 --- a/game.js +++ b/game.js @@ -5,20 +5,24 @@ document.addEventListener('DOMContentLoaded', () => { const player1 = new Player('Player 1'); const player2 = new Player('Player 2'); - // Создаем колоду и добавляем карты (12 карт) + // Создаем колоду и добавляем карты const deck = new Deck(); - deck.addCard(new Card('Masik', 5)); - deck.addCard(new Card('Tubik', 3)); - deck.addCard(new Card('Skuf', 4)); - deck.addCard(new Card('Altushka', 7)); - deck.addCard(new Card('Sheikh', 6)); - deck.addCard(new Card('Alkash', 4)); - deck.addCard(new Card('ITishnik', 6)); - deck.addCard(new Card('Fifa', 5)); - deck.addCard(new Card('Vaper', 3)); - deck.addCard(new Card('TikToker', 4)); - deck.addCard(new Card('Khalif', 6)); - deck.addCard(new Card('GameDev', 8)); + const cardsData = [ + { name: 'Masik', value: 5 }, + { name: 'Tubik', value: 3 }, + { name: 'Skuf', value: 4 }, + { name: 'Altushka', value: 7 }, + { name: 'Sheikh', value: 6 }, + { name: 'Alkash', value: 4 }, + { name: 'ITishnik', value: 6 }, + { name: 'Fifa', value: 5 }, + { name: 'Vaper', value: 3 }, + { name: 'TikToker', value: 4 }, + { name: 'Khalif', value: 6 }, + { name: 'GameDev', value: 8 }, + ]; + + cardsData.forEach(card => deck.addCard(new Card(card.name, card.value))); deck.shuffle(); // Игроки берут по 6 карт @@ -28,23 +32,71 @@ document.addEventListener('DOMContentLoaded', () => { } // Рендеринг карт - let cardIndex = 0; - - rows.forEach((row, rowIndex) => { - console.log(`Рендеринг для ряда ${rowIndex + 1}`); + const totalCards = 6; + for (let rowIndex = 0; rowIndex < 4; rowIndex++) { + const row = rows[rowIndex]; for (let i = 0; i < 3; i++) { - if (rowIndex < 2) { - if (player1.hand[cardIndex]) { - console.log(`Добавление карты ${player1.hand[cardIndex].name} для Player 1 в ряд ${rowIndex + 1}`); - row.appendChild(player1.hand[cardIndex].render()); - } + let card; + if (rowIndex < 2) { + card = player2.hand[rowIndex * 3 + i]; } else { - if (player2.hand[cardIndex - 6]) { - console.log(`Добавление карты ${player2.hand[cardIndex - 6].name} для Player 2 в ряд ${rowIndex + 1}`); - row.appendChild(player2.hand[cardIndex - 6].render()); - } + card = player1.hand[(rowIndex - 2) * 3 + i]; + } + if (card) { + row.appendChild(card.render()); } - cardIndex++; } - }); + } }); + +// Определение класса Card +class Card { + constructor(name, value) { + this.name = name; + this.value = value; + } + + render() { + const cardElement = document.createElement('div'); + cardElement.classList.add('card'); + cardElement.textContent = `${this.name} (${this.value})`; + return cardElement; + } +} + +// Определение класса Deck +class Deck { + constructor() { + this.cards = []; + } + + addCard(card) { + this.cards.push(card); + } + + shuffle() { + for (let i = this.cards.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [this.cards[i], this.cards[j]] = [this.cards[j], this.cards[i]]; + } + } + + drawCard() { + return this.cards.pop(); + } +} + +// Определение класса Player +class Player { + constructor(name) { + this.name = name; + this.hand = []; + } + + drawCard(deck) { + const card = deck.drawCard(); + if (card) { + this.hand.push(card); + } + } +}