diff --git a/data/ancients.js b/data/ancients.js index e19926c1..491ff2b8 100644 --- a/data/ancients.js +++ b/data/ancients.js @@ -1,10 +1,11 @@ -import Ancients from '../assets/Ancients/index' +//import Ancients from '../assets/Ancients/index.js' const ancientsData = [ { id: 'azathoth', name: 'azathoth', - cardFace: Ancients.azathoth, + //cardFace: Ancients.azathoth, + cardFace: "../assets/Ancients/Azathoth.png", firstStage: { greenCards: 1, blueCards: 1, @@ -24,7 +25,8 @@ const ancientsData = [ { id: 'cthulhu', name: 'cthulhu', - cardFace: Ancients.cthulhu, + //cardFace: Ancients.cthulhu, + cardFace: "../assets/Ancients/Cthulthu.png", firstStage: { greenCards: 0, blueCards: 2, @@ -44,7 +46,8 @@ const ancientsData = [ { id: 'iogSothoth', name: 'iogSothoth', - cardFace: Ancients.iogSothoth, + //cardFace: Ancients.iogSothoth, + cardFace: "../assets/Ancients/IogSothoth.png", firstStage: { greenCards: 0, blueCards: 1, @@ -64,7 +67,8 @@ const ancientsData = [ { id: 'shubNiggurath', name: 'shubNiggurath', - cardFace: Ancients.shubNiggurath, + //cardFace: Ancients.shubNiggurath, + cardFace: "../assets/Ancients/ShubNiggurath.png", firstStage: { greenCards: 1, blueCards: 1, @@ -83,4 +87,5 @@ const ancientsData = [ }, ] -export default ancientsData \ No newline at end of file +//export default ancientsData +export {ancientsData} \ No newline at end of file diff --git a/data/mythicCards/blue/index.js b/data/mythicCards/blue/index.js index 6439ca19..006c76a5 100644 --- a/data/mythicCards/blue/index.js +++ b/data/mythicCards/blue/index.js @@ -1,78 +1,91 @@ -import blueCardsAssets from '../../../assets/MythicCards/blue'; +//import blueCardsAssets from '../../../assets/MythicCards/blue'; const cardsData = [ { id: 'blue1', - cardFace: blueCardsAssets.blue1, + //cardFace: blueCardsAssets.blue1, + cardFace: "../../../assets/MythicCards/blue/blue1.png", difficulty: 'hard', color:'blue' }, { id: 'blue2', - cardFace: blueCardsAssets.blue2, + //cardFace: blueCardsAssets.blue2, + cardFace: "../../../assets/MythicCards/blue/blue2.png", difficulty: 'hard', color:'blue' }, { id: 'blue3', - cardFace: blueCardsAssets.blue3, + //cardFace: blueCardsAssets.blue3, + cardFace: "../../../assets/MythicCards/blue/blue3.png", difficulty: 'easy', color:'blue' }, { id: 'blue4', - cardFace: blueCardsAssets.blue4, + //cardFace: blueCardsAssets.blue4, + cardFace: "../../../assets/MythicCards/blue/blue4.png", difficulty: 'easy', color:'blue' }, { id: 'blue5', - cardFace: blueCardsAssets.blue5, + //cardFace: blueCardsAssets.blue5, + cardFace: "../../../assets/MythicCards/blue/blue5.png", difficulty: 'easy', color:'blue' }, { id: 'blue6', - cardFace: blueCardsAssets.blue6, + //cardFace: blueCardsAssets.blue6, + cardFace: "../../../assets/MythicCards/blue/blue6.png", difficulty: 'hard', color:'blue' }, { id: 'blue7', - cardFace: blueCardsAssets.blue7, + //cardFace: blueCardsAssets.blue7, + cardFace: "../../../assets/MythicCards/blue/blue7.png", difficulty: 'normal', color:'blue' }, { id: 'blue8', - cardFace: blueCardsAssets.blue8, + //cardFace: blueCardsAssets.blue8, + cardFace: "../../../assets/MythicCards/blue/blue8.png", difficulty: 'hard', color:'blue' }, { id: 'blue9', - cardFace: blueCardsAssets.blue9, + //cardFace: blueCardsAssets.blue9, + cardFace: "../../../assets/MythicCards/blue/blue9.png", difficulty: 'normal', color:'blue' }, { id: 'blue10', - cardFace: blueCardsAssets.blue10, + //cardFace: blueCardsAssets.blue10, + cardFace: "../../../assets/MythicCards/blue/blue10.png", difficulty: 'easy', color:'blue' }, { id: 'blue11', - cardFace: blueCardsAssets.blue11, + //cardFace: blueCardsAssets.blue11, + cardFace: "../../../assets/MythicCards/blue/blue11.png", difficulty: 'normal', color:'blue' }, { id: 'blue12', - cardFace: blueCardsAssets.blue12, + //cardFace: blueCardsAssets.blue12, + cardFace: "../../../assets/MythicCards/blue/blue12.png", difficulty: 'normal', color:'blue' }, ] -export default cardsData \ No newline at end of file +//export default cardsData +export {cardsData} \ No newline at end of file diff --git a/data/mythicCards/brown/index.js b/data/mythicCards/brown/index.js index 0bce7522..b6c823a5 100644 --- a/data/mythicCards/brown/index.js +++ b/data/mythicCards/brown/index.js @@ -1,132 +1,154 @@ -import brownCardsAssets from '../../../assets/MythicCards/brown'; +//import brownCardsAssets from '../../../assets/MythicCards/brown'; const cardsData = [ { id: 'brown1', - cardFace: brownCardsAssets.brown1, + //cardFace: brownCardsAssets.brown1, + cardFace: "../../../assets/MythicCards/brown/brown1.png", difficulty: 'normal', color:'brown' }, { id: 'brown2', - cardFace: brownCardsAssets.brown2, + //cardFace: brownCardsAssets.brown2, + cardFace: "../../../assets/MythicCards/brown/brown2.png", difficulty: 'normal', color:'brown' }, { id: 'brown3', - cardFace: brownCardsAssets.brown3, + //cardFace: brownCardsAssets.brown3, + cardFace: "../../../assets/MythicCards/brown/brown3.png", difficulty: 'normal', color:'brown' }, { id: 'brown4', - cardFace: brownCardsAssets.brown4, + //cardFace: brownCardsAssets.brown4, + cardFace: "../../../assets/MythicCards/brown/brown4.png", difficulty: 'normal', color:'brown' }, { id: 'brown5', - cardFace: brownCardsAssets.brown5, + //cardFace: brownCardsAssets.brown5, + cardFace: "../../../assets/MythicCards/brown/brown5.png", difficulty: 'normal', color:'brown' }, { id: 'brown6', - cardFace: brownCardsAssets.brown6, + //cardFace: brownCardsAssets.brown6, + cardFace: "../../../assets/MythicCards/brown/brown6.png", difficulty: 'hard', color:'brown' }, { id: 'brown7', - cardFace: brownCardsAssets.brown7, + //cardFace: brownCardsAssets.brown7, + cardFace: "../../../assets/MythicCards/brown/brown7.png", difficulty: 'hard', color:'brown' }, { id: 'brown8', - cardFace: brownCardsAssets.brown8, + //cardFace: brownCardsAssets.brown8, + cardFace: "../../../assets/MythicCards/brown/brown8.png", difficulty: 'hard', color:'brown' }, { id: 'brown9', - cardFace: brownCardsAssets.brown9, + //cardFace: brownCardsAssets.brown9, + cardFace: "../../../assets/MythicCards/brown/brown9.png", difficulty: 'hard', color:'brown' }, { id: 'brown10', - cardFace: brownCardsAssets.brown10, + //cardFace: brownCardsAssets.brown10, + cardFace: "../../../assets/MythicCards/brown/brown10.png", difficulty: 'hard', color:'brown' }, { id: 'brown11', - cardFace: brownCardsAssets.brown11, + //cardFace: brownCardsAssets.brown11, + cardFace: "../../../assets/MythicCards/brown/brown11.png", difficulty: 'easy', color:'brown' }, { id: 'brown12', - cardFace: brownCardsAssets.brown12, + //cardFace: brownCardsAssets.brown12, + cardFace: "../../../assets/MythicCards/brown/brown12.png", difficulty: 'easy', color:'brown' }, { id: 'brown13', - cardFace: brownCardsAssets.brown13, + //cardFace: brownCardsAssets.brown13, + cardFace: "../../../assets/MythicCards/brown/brown13.png", difficulty: 'easy', color:'brown' }, { id: 'brown14', - cardFace: brownCardsAssets.brown14, + //cardFace: brownCardsAssets.brown14, + cardFace: "../../../assets/MythicCards/brown/brown14.png", difficulty: 'easy', color:'brown' }, { id: 'brown15', - cardFace: brownCardsAssets.brown15, + //cardFace: brownCardsAssets.brown15, + cardFace: "../../../assets/MythicCards/brown/brown15.png", difficulty: 'normal', color:'brown' }, { id: 'brown16', - cardFace: brownCardsAssets.brown16, + //cardFace: brownCardsAssets.brown16, + cardFace: "../../../assets/MythicCards/brown/brown16.png", difficulty: 'normal', color:'brown' }, { id: 'brown17', - cardFace: brownCardsAssets.brown17, + //cardFace: brownCardsAssets.brown17, + cardFace: "../../../assets/MythicCards/brown/brown17.png", difficulty: 'normal', color:'brown' }, { id: 'brown18', - cardFace: brownCardsAssets.brown18, + //cardFace: brownCardsAssets.brown18, + cardFace: "../../../assets/MythicCards/brown/brown18.png", difficulty: 'normal', color:'brown' }, { id: 'brown19', - cardFace: brownCardsAssets.brown19, + //cardFace: brownCardsAssets.brown19, + cardFace: "../../../assets/MythicCards/brown/brown19.png", difficulty: 'normal', color:'brown' }, { id: 'brown20', - cardFace: brownCardsAssets.brown20, + //cardFace: brownCardsAssets.brown20, + cardFace: "../../../assets/MythicCards/brown/brown20.png", difficulty: 'normal', color:'brown' }, { id: 'brown21', - cardFace: brownCardsAssets.brown21, + //cardFace: brownCardsAssets.brown21, + cardFace: "../../../assets/MythicCards/brown/brown21.png", difficulty: 'easy', color:'brown' }, ] -export default cardsData \ No newline at end of file +//export default cardsData +export {cardsData} \ No newline at end of file diff --git a/data/mythicCards/green/index.js b/data/mythicCards/green/index.js index cca6e9df..bb0a5d45 100644 --- a/data/mythicCards/green/index.js +++ b/data/mythicCards/green/index.js @@ -1,114 +1,133 @@ -import greenCardsAssets from '../../../assets/MythicCards/green'; +//import greenCardsAssets from '../../../assets/MythicCards/green'; const cardsData = [ { id: 'green1', - cardFace: greenCardsAssets.green1, + //cardFace: greenCardsAssets.green1, + cardFace: "../../../assets/MythicCards/green/green1.png", difficulty: 'easy', color:'green' }, { id: 'green2', - cardFace: greenCardsAssets.green2, + //cardFace: greenCardsAssets.green2, + cardFace: "../../../assets/MythicCards/green/green2.png", difficulty: 'hard', color:'green' }, { id: 'green3', - cardFace: greenCardsAssets.green3, + //cardFace: greenCardsAssets.green3, + cardFace: "../../../assets/MythicCards/green/green3.png", difficulty: 'hard', color:'green' }, { id: 'green4', - cardFace: greenCardsAssets.green4, + //cardFace: greenCardsAssets.green4, + cardFace: "../../../assets/MythicCards/green/green4.png", difficulty: 'hard', color:'green' }, { id: 'green5', - cardFace: greenCardsAssets.green5, + //cardFace: greenCardsAssets.green5, + cardFace: "../../../assets/MythicCards/green/green5.png", difficulty: 'hard', color:'green' }, { id: 'green6', - cardFace: greenCardsAssets.green6, + //cardFace: greenCardsAssets.green6, + cardFace: "../../../assets/MythicCards/green/green6.png", difficulty: 'hard', color:'green' }, { id: 'green7', - cardFace: greenCardsAssets.green7, + //cardFace: greenCardsAssets.green7, + cardFace: "../../../assets/MythicCards/green/green7.png", difficulty: 'normal', color:'green' }, { id: 'green8', - cardFace: greenCardsAssets.green8, + //cardFace: greenCardsAssets.green8, + cardFace: "../../../assets/MythicCards/green/green8.png", difficulty: 'normal', color:'green' }, { id: 'green9', - cardFace: greenCardsAssets.green9, + //cardFace: greenCardsAssets.green9, + cardFace: "../../../assets/MythicCards/green/green9.png", difficulty: 'normal', color:'green' }, { id: 'green10', - cardFace: greenCardsAssets.green10, + //cardFace: greenCardsAssets.green10, + cardFace: "../../../assets/MythicCards/green/green10.png", difficulty: 'normal', color:'green' }, { id: 'green11', - cardFace: greenCardsAssets.green11, + //cardFace: greenCardsAssets.green11, + cardFace: "../../../assets/MythicCards/green/green11.png", difficulty: 'normal', color:'green' }, { id: 'green12', - cardFace: greenCardsAssets.green12, + //cardFace: greenCardsAssets.green12, + cardFace: "../../../assets/MythicCards/green/green12.png", difficulty: 'easy', color:'green' }, { id: 'green13', - cardFace: greenCardsAssets.green13, + //cardFace: greenCardsAssets.green13, + cardFace: "../../../assets/MythicCards/green/green13.png", difficulty: 'normal', color:'green' }, { id: 'green14', - cardFace: greenCardsAssets.green14, + //cardFace: greenCardsAssets.green14, + cardFace: "../../../assets/MythicCards/green/green14.png", difficulty: 'normal', color:'green' }, { id: 'green15', - cardFace: greenCardsAssets.green15, + //cardFace: greenCardsAssets.green15, + cardFace: "../../../assets/MythicCards/green/green15.png", difficulty: 'normal', color:'green' }, { id: 'green16', - cardFace: greenCardsAssets.green16, + //cardFace: greenCardsAssets.green16, + cardFace: "../../../assets/MythicCards/green/green16.png", difficulty: 'easy', color:'green' }, { id: 'green17', - cardFace: greenCardsAssets.green17, + //cardFace: greenCardsAssets.green17, + cardFace: "../../../assets/MythicCards/green/green17.png", difficulty: 'easy', color:'green' }, { id: 'green18', - cardFace: greenCardsAssets.green18, + //cardFace: greenCardsAssets.green18, + cardFace: "../../../assets/MythicCards/green/green18.png", difficulty: 'easy', color:'green' }, ] -export default cardsData \ No newline at end of file +//export default cardsData +export {cardsData} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..625bf76b --- /dev/null +++ b/index.html @@ -0,0 +1,63 @@ + + + + + + + Codejam + + + + +
+
+
+
+
+
+
+
New Game
+
+
+
Just Chill
+
Easy
+
Normal
+
Hard
+
Hell
+ Shuffle deck +
+
+
+
Первая стадия +
+
+
+
+
+
+
Вторая стадия +
+
+
+
+
+
+
Третья стадия +
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/main.js b/main.js new file mode 100644 index 00000000..55c39e54 --- /dev/null +++ b/main.js @@ -0,0 +1,483 @@ +import * as Ancients from "./data/ancients.js"; +import * as Green from "./data/mythicCards/green/index.js"; +import * as Brown from "./data/mythicCards/brown/index.js"; +import * as Blue from "./data/mythicCards/blue/index.js"; + + +const targetAncient = document.querySelector('.ancient-card'); +//const difficulty = document.querySelector('.difficulty'); +const difficultyContainer = document.querySelector('.difficulty-container'); +const shuffleBtn = document.querySelector('.shuffle-button'); +const currentState = document.querySelector('.current-state'); +const deck = document.querySelector('.deck'); +const lastCard = document.querySelector('.last-card'); +const newgame = document.querySelector('.new-game'); +const s1g = document.querySelector('.s1g'); +const s1br = document.querySelector('.s1br'); +const s1b = document.querySelector('.s1b'); +const s2g = document.querySelector('.s2g'); +const s2br = document.querySelector('.s2br'); +const s2b = document.querySelector('.s2b'); +const s3g = document.querySelector('.s3g'); +const s3br = document.querySelector('.s3br'); +const s3b = document.querySelector('.s3b'); +const s1 = document.querySelector('#s1'); +const s2 = document.querySelector('#s2'); +const s3 = document.querySelector('#s3'); +const normalGame = document.querySelector('.normal'); +const chillGame = document.querySelector('.just-chill'); +const easyGame = document.querySelector('.easy'); +const hardGame = document.querySelector('.hard'); +const hellGame = document.querySelector('.hell'); +const aza = document.querySelector('.aza'); +const cthul = document.querySelector('.cthul'); +const iog = document.querySelector('.iog'); +const shub = document.querySelector('.shub'); + +let difficultyGame; + +let deckStack = []; +/* +let deckStackGreen = []; +let deckStackBrown = []; +let deckStackBlue = []; +*/ + +//количество карт по стадиям +let colGreenCardS1; +let colGreenCardS2; +let colGreenCardS3; + +let colBrownCardS1; +let colBrownCardS2; +let colBrownCardS3; + +let colBlueCardS1; +let colBlueCardS2; +let colBlueCardS3; + + + +/* +function addActiveAncient() { + targetAncient.classList.add('active'); + targetAncient.style.width = '80%'; + targetAncient.style.height = '55%'; + //difficulty.style.visibility = "visible"; + difficultyContainer.style.visibility = "visible"; +}*/ + + +//выделение древнего, скрыть лишних, видимый блок сложности, +//увеличение древнего, подготовка трекера +aza.addEventListener('click', function() { + aza.classList.add('active'); + aza.style.width = '80%'; + aza.style.height = '55%'; + cthul.style.display = 'none'; + iog.style.display = 'none'; + shub.style.display = 'none'; + difficultyContainer.style.visibility = "visible"; + + colGreenCardS1 = Ancients.ancientsData[0].firstStage.greenCards; + colGreenCardS2 = Ancients.ancientsData[0].secondStage.greenCards; + colGreenCardS3 = Ancients.ancientsData[0].thirdStage.greenCards; + + colBrownCardS1 = Ancients.ancientsData[0].firstStage.brownCards; + colBrownCardS2 = Ancients.ancientsData[0].secondStage.brownCards; + colBrownCardS3 = Ancients.ancientsData[0].thirdStage.brownCards; + + colBlueCardS1 = Ancients.ancientsData[0].firstStage.blueCards; + colBlueCardS2 = Ancients.ancientsData[0].secondStage.blueCards; + colBlueCardS3 = Ancients.ancientsData[0].thirdStage.blueCards; +}); +cthul.addEventListener('click', function() { + cthul.classList.add('active'); + cthul.style.width = '80%'; + cthul.style.height = '55%'; + aza.style.display = 'none'; + iog.style.display = 'none'; + shub.style.display = 'none'; + difficultyContainer.style.visibility = "visible"; + + colGreenCardS1 = Ancients.ancientsData[1].firstStage.greenCards; + colGreenCardS2 = Ancients.ancientsData[1].secondStage.greenCards; + colGreenCardS3 = Ancients.ancientsData[1].thirdStage.greenCards; + + colBrownCardS1 = Ancients.ancientsData[1].firstStage.brownCards; + colBrownCardS2 = Ancients.ancientsData[1].secondStage.brownCards; + colBrownCardS3 = Ancients.ancientsData[1].thirdStage.brownCards; + + colBlueCardS1 = Ancients.ancientsData[1].firstStage.blueCards; + colBlueCardS2 = Ancients.ancientsData[1].secondStage.blueCards; + colBlueCardS3 = Ancients.ancientsData[1].thirdStage.blueCards; +}); +iog.addEventListener('click', function() { + iog.classList.add('active'); + iog.style.width = '80%'; + iog.style.height = '55%'; + aza.style.display = 'none'; + cthul.style.display = 'none'; + shub.style.display = 'none'; + difficultyContainer.style.visibility = "visible"; + + colGreenCardS1 = Ancients.ancientsData[2].firstStage.greenCards; + colGreenCardS2 = Ancients.ancientsData[2].secondStage.greenCards; + colGreenCardS3 = Ancients.ancientsData[2].thirdStage.greenCards; + + colBrownCardS1 = Ancients.ancientsData[2].firstStage.brownCards; + colBrownCardS2 = Ancients.ancientsData[2].secondStage.brownCards; + colBrownCardS3 = Ancients.ancientsData[2].thirdStage.brownCards; + + colBlueCardS1 = Ancients.ancientsData[2].firstStage.blueCards; + colBlueCardS2 = Ancients.ancientsData[2].secondStage.blueCards; + colBlueCardS3 = Ancients.ancientsData[2].thirdStage.blueCards; +}); +shub.addEventListener('click', function() { + shub.classList.add('active'); + shub.style.width = '80%'; + shub.style.height = '55%'; + aza.style.display = 'none'; + cthul.style.display = 'none'; + iog.style.display = 'none'; + difficultyContainer.style.visibility = "visible"; + + colGreenCardS1 = Ancients.ancientsData[3].firstStage.greenCards; + colGreenCardS2 = Ancients.ancientsData[3].secondStage.greenCards; + colGreenCardS3 = Ancients.ancientsData[3].thirdStage.greenCards; + + colBrownCardS1 = Ancients.ancientsData[3].firstStage.brownCards; + colBrownCardS2 = Ancients.ancientsData[3].secondStage.brownCards; + colBrownCardS3 = Ancients.ancientsData[3].thirdStage.brownCards; + + colBlueCardS1 = Ancients.ancientsData[3].firstStage.blueCards; + colBlueCardS2 = Ancients.ancientsData[3].secondStage.blueCards; + colBlueCardS3 = Ancients.ancientsData[3].thirdStage.blueCards; +}); + + +//клик по кнопке сложн и создание замеса колоды, +//задать уровень сложности, скрыть лишние уровни, выделить текущий +document.addEventListener('click', function(e) { + if(e.target.className === 'just-chill') { + e.target.classList.add('active'); + easyGame.style.visibility = 'hidden'; + normalGame.style.visibility = 'hidden'; + hardGame.style.visibility = 'hidden'; + hellGame.style.visibility = 'hidden'; + difficultyGame = 'just-chill'; + shuffleBtn.style.visibility = "visible"; + } + if(e.target.className === 'easy') { + e.target.classList.add('active'); + chillGame.style.visibility = 'hidden'; + normalGame.style.visibility = 'hidden'; + hardGame.style.visibility = 'hidden'; + hellGame.style.visibility = 'hidden'; + difficultyGame = 'easy'; + shuffleBtn.style.visibility = "visible"; + } + else if(e.target.className === 'normal') { + e.target.classList.add('active'); + chillGame.style.visibility = 'hidden'; + easyGame.style.visibility = 'hidden'; + hardGame.style.visibility = 'hidden'; + hellGame.style.visibility = 'hidden'; + difficultyGame = 'normal'; + shuffleBtn.style.visibility = "visible"; + } + else if(e.target.className === 'hard') { + e.target.classList.add('active'); + chillGame.style.visibility = 'hidden'; + normalGame.style.visibility = 'hidden'; + easyGame.style.visibility = 'hidden'; + hellGame.style.visibility = 'hidden'; + difficultyGame = 'hard'; + shuffleBtn.style.visibility = "visible"; + } + else if(e.target.className === 'hell') { + e.target.classList.add('active'); + chillGame.style.visibility = 'hidden'; + hardGame.style.visibility = 'hidden'; + normalGame.style.visibility = 'hidden'; + easyGame.style.visibility = 'hidden'; + difficultyGame = 'hell'; + shuffleBtn.style.visibility = "visible"; + } +}); + + +//количество карт для стадий, подготовка к игре +function colStage() { + s1g.textContent = colGreenCardS1; + s1br.textContent = colBrownCardS1; + s1b.textContent = colBlueCardS1; + s2g.textContent = colGreenCardS2; + s2br.textContent = colBrownCardS2; + s2b.textContent = colBlueCardS2; + s3g.textContent = colGreenCardS3; + s3br.textContent = colBrownCardS3; + s3b.textContent = colBlueCardS3; + countGreenCardS1 = colGreenCardS1; + countBrownCardS1 = colBrownCardS1; + countBlueCardS1 = colBlueCardS1; + countGreenCardS2 = colGreenCardS2; + countBrownCardS2 = colBrownCardS2; + countBlueCardS2 = colBlueCardS2; + countGreenCardS3 = colGreenCardS3; + countBrownCardS3 = colBrownCardS3; + countBlueCardS3 = colBlueCardS3; +} + +//клик по замесу колоды, сброс кнопки, видимые карты и трекер +//создание и рандомный замес карт +document.addEventListener('click', function(e) { + if(e.target.className === 'shuffle-button') { + shuffleBtn.style.visibility = "hidden"; + currentState.style.visibility = "visible"; + deck.style.visibility = "visible"; + lastCard.style.visibility = "visible"; + newgame.style.visibility = "visible"; + colStage(); + deckStack = shuffle(createDeckStack(Green, Brown, Blue)); + /* + deckStackGreen = shuffle(createDeckStack(Green)); + deckStackBrown = shuffle(createDeckStack(Brown)); + deckStackBlue = shuffle(createDeckStack(Blue)); + */ + } +}); + +//создание колоды +function createDeckStack() { + let allCards = [...Green.cardsData, ...Brown.cardsData, ...Blue.cardsData]; + /* + let allCardsGreen = [...Green.cardsData]; + let allCardsBrown = [...Brown.cardsData]; + let allCardsBlue = [...Blue.cardsData]; + */ + //console.log(allCardsGreen) + let nomralCards = []; + /* + let nomralCardsGreen = []; + let nomralCardsBrown = []; + let nomralCardsBlue = []; +*/ + if(difficultyGame === 'just-chill') { + allCards.forEach(e => { + if(e.difficulty === 'easy' || e.difficulty === 'normal') { + nomralCards.push(e); + } + }); + } + if(difficultyGame === 'easy') { + allCards.forEach(e => { + if(e.difficulty === 'easy' || e.difficulty === 'normal') { + nomralCards.push(e); + } + }); + } + if(difficultyGame === 'normal') { + allCards.forEach(e => { + if(e.difficulty === 'normal' || e.difficulty === 'hard') { + nomralCards.push(e); + } + }); + } + if(difficultyGame === 'hard') { + allCards.forEach(e => { + if(e.difficulty === 'hard' || e.difficulty === 'normal') { + nomralCards.push(e); + } + }); + } + if(difficultyGame === 'hell') { + allCards.forEach(e => { + if(e.difficulty === 'hard' || e.difficulty === 'normal') { + nomralCards.push(e); + } + }); + } + return nomralCards; + //return nomralCardsGreen, nomralCardsBrown, nomralCardsBlue; +} + +//рандомайзер тосовки +function shuffle(array) { + for(let i = array.length - 1; i > 0; i--) { + let rand = Math.floor(Math.random() * (i + 1)); + [array[i], array[rand]] = [array[rand], array[i]]; + } + return array; +} + +//трекер стадий +let countGreenCardS1; +let countBrownCardS1; +let countBlueCardS1; +let countGreenCardS2; +let countBrownCardS2; +let countBlueCardS2; +let countGreenCardS3; +let countBrownCardS3; +let countBlueCardS3; + + +//условия стадий и конца игры +let stageGame = 1; +function trackStage() { + if(stageGame === 1 && countGreenCardS1 === 0 && countBrownCardS1 === 0 && countBlueCardS1 === 0) { + stageGame = 2; + s1.classList.add('done'); + console.log(`stage ${stageGame}`); + } + else if(stageGame === 2 && countGreenCardS2 === 0 && countBrownCardS2 === 0 && countBlueCardS2 === 0) { + stageGame = 3; + s2.classList.add('done'); + console.log(`stage ${stageGame}`); + } + else if(stageGame === 3 && countGreenCardS3 === 0 && countBrownCardS3 === 0 && countBlueCardS3 === 0) { + lastCard.style.background = 'none'; + lastCard.textContent = 'The end of the game. Click "New Game" to try again'; + lastCard.style.color = 'white'; + lastCard.style.fontSize = '25px'; + s3.classList.add('done'); + } +} +console.log(`stage ${stageGame}`); + + +//клик по закрытой колоде и открытие карты через проверку условий и смена стадий +function takeCard() { + trackStage(); + trackCard(); +} + +deck.addEventListener('click', takeCard); + +//проверка карты в руке: цвет, счетчикигры, если подходит - забор с колоды +//если нет - тосую карты и достаю снова +function trackCard() { + if(stageGame === 1 && deckStack[deckStack.length - 1].color === 'green') { + if(countGreenCardS1 > 0) { + let currentCard = deckStack[deckStack.length - 1].cardFace; + deckStack.pop(); + countGreenCardS1--; + s1g.textContent = countGreenCardS1; + lastCard.style.background = `url(${currentCard})`; + lastCard.style.backgroundSize = 'contain'; + } else if(countGreenCardS1 === 0) { + shuffle(deckStack); + takeCard(); + } + } + else if(stageGame === 1 && deckStack[deckStack.length - 1].color === 'brown') { + if(countBrownCardS1 > 0) { + let currentCard = deckStack[deckStack.length - 1].cardFace; + deckStack.pop(); + countBrownCardS1--; + s1br.textContent = countBrownCardS1; + lastCard.style.background = `url(${currentCard})`; + lastCard.style.backgroundSize = 'contain'; + } else if(countBrownCardS1 === 0) { + shuffle(deckStack); + takeCard(); + } + } + else if(stageGame === 1 && deckStack[deckStack.length - 1].color === 'blue') { + if(countBlueCardS1 > 0) { + let currentCard = deckStack[deckStack.length - 1].cardFace; + deckStack.pop(); + countBlueCardS1--; + s1b.textContent = countBlueCardS1; + lastCard.style.background = `url(${currentCard})`; + lastCard.style.backgroundSize = 'contain'; + } else if(countBlueCardS1 === 0) { + shuffle(deckStack); + takeCard(); + } + } + else if(stageGame === 2 && deckStack[deckStack.length - 1].color === 'green') { + if(countGreenCardS2 > 0) { + let currentCard = deckStack[deckStack.length - 1].cardFace; + deckStack.pop(); + countGreenCardS2--; + s2g.textContent = countGreenCardS2; + lastCard.style.background = `url(${currentCard})`; + lastCard.style.backgroundSize = 'contain'; + } else if(countGreenCardS2 === 0) { + shuffle(deckStack); + takeCard(); + } + } + else if(stageGame === 2 && deckStack[deckStack.length - 1].color === 'brown') { + if(countBrownCardS2 > 0) { + let currentCard = deckStack[deckStack.length - 1].cardFace; + deckStack.pop(); + countBrownCardS2--; + s2br.textContent = countBrownCardS2; + lastCard.style.background = `url(${currentCard})`; + lastCard.style.backgroundSize = 'contain'; + } else if(countBrownCardS2 === 0) { + shuffle(deckStack); + takeCard(); + } + } + else if(stageGame === 2 && deckStack[deckStack.length - 1].color === 'blue') { + if(countBlueCardS2 > 0) { + let currentCard = deckStack[deckStack.length - 1].cardFace; + deckStack.pop(); + countBlueCardS2--; + s2b.textContent = countBlueCardS2; + lastCard.style.background = `url(${currentCard})`; + lastCard.style.backgroundSize = 'contain'; + } else if(countBlueCardS2 === 0) { + shuffle(deckStack); + takeCard(); + } + } + else if(stageGame === 3 && deckStack[deckStack.length - 1].color === 'green') { + if(countGreenCardS3 > 0) { + let currentCard = deckStack[deckStack.length - 1].cardFace; + deckStack.pop(); + countGreenCardS3--; + s3g.textContent = countGreenCardS3; + lastCard.style.background = `url(${currentCard})`; + lastCard.style.backgroundSize = 'contain'; + } else if(countGreenCardS3 === 0) { + shuffle(deckStack); + takeCard(); + } + } + else if(stageGame === 3 && deckStack[deckStack.length - 1].color === 'brown') { + if(countBrownCardS3 > 0) { + let currentCard = deckStack[deckStack.length - 1].cardFace; + deckStack.pop(); + countBrownCardS3--; + s3br.textContent = countBrownCardS3 + lastCard.style.background = `url(${currentCard})`; + lastCard.style.backgroundSize = 'contain'; + } else if(countBrownCardS3 === 0) { + shuffle(deckStack); + takeCard(); + } + } + else if(stageGame === 3 && deckStack[deckStack.length - 1].color === 'blue') { + if(countBlueCardS3 > 0) { + let currentCard = deckStack[deckStack.length - 1].cardFace; + deckStack.pop(); + countBlueCardS3--; + s3b.textContent = countBlueCardS3; + lastCard.style.background = `url(${currentCard})`; + lastCard.style.backgroundSize = 'contain'; + } else if(countBlueCardS3 === 0) { + shuffle(deckStack); + takeCard(); + } + } +} + + +//костыль - новая игра +newgame.addEventListener('click', () => window.location.reload()) + diff --git a/style.css b/style.css new file mode 100644 index 00000000..059aa4df --- /dev/null +++ b/style.css @@ -0,0 +1,252 @@ +body { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif; + margin: 0 +} + +code { + font-family: source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace +} + +.ancients-container { + display: flex; + flex-direction: column; + flex-wrap: wrap; + gap: 10px; + min-width: 40%; + padding: 20px +} +/* +.ancients-container .ancient-card { + background-position: 50%; + background-repeat: no-repeat; + background-size: contain; + box-sizing: border-box; + cursor: pointer; + height: 260px; + width: 200px +}*/ +.ancients-container .aza, +.ancients-container .cthul, +.ancients-container .iog, +.ancients-container .shub { + background-position: 50%; + background-repeat: no-repeat; + background-size: contain; + box-sizing: border-box; + cursor: pointer; + height: 260px; + width: 200px +} + +.new-game { + width: max-content; + padding: 10px; + border: solid 1px white; + color: white; + cursor: pointer; + visibility: hidden; +} + +/* +.ancients-container .ancient-card.active { + border: 2px solid white +}*/ +.ancients-container .aza.active, +.ancients-container .cthul.active, +.ancients-container .iog.active, +.ancients-container .shub.active { + border: 2px solid white +} + +.difficulty-container { + display: flex; + flex-direction: column; + gap: 20px; + height: 100vh; + justify-content: center; + visibility: hidden; +} +/* +.difficulty-container .difficulty { + border: 2px solid white; + box-sizing: border-box; + color: white; + cursor: pointer; + padding: 5px; + text-align: center; + /*visibility: hidden; +}*/ +.difficulty-container .just-chill { + border: 2px solid white; + box-sizing: border-box; + color: white; + cursor: pointer; + padding: 5px; + text-align: center; + background-color: rgba(238, 180, 235, 0.644); + /*visibility: hidden;*/ +} +.difficulty-container .easy { + border: 2px solid white; + box-sizing: border-box; + color: white; + cursor: pointer; + padding: 5px; + text-align: center; + background-color: rgba(0, 128, 0, 0.6); + /*visibility: hidden;*/ +} +.difficulty-container .normal { + border: 2px solid white; + box-sizing: border-box; + color: white; + cursor: pointer; + padding: 5px; + text-align: center; + background-color: rgba(255, 166, 0, 0.6); + /*visibility: hidden;*/ +} +.difficulty-container .hard { + border: 2px solid white; + box-sizing: border-box; + color: white; + cursor: pointer; + padding: 5px; + text-align: center; + background-color: rgba(255, 0, 0, 0.6); + /*visibility: hidden;*/ +} +.difficulty-container .hell { + border: 2px solid white; + box-sizing: border-box; + color: white; + cursor: pointer; + padding: 5px; + text-align: center; + background-color: rgba(20, 19, 19, 0.9); + /*visibility: hidden;*/ +} + +/* +#easy { + background-color: rgba(0, 128, 0, 0.493); + opacity: 0.8; +} +#normal { + background-color: rgba(255, 166, 0, 0.418); + opacity: 0.8; +} +#hard { + background-color: rgba(255, 0, 0, 0.425); + opacity: 0.8; +} +*/ +/* +.difficulty-container .difficulty.active { + /*background-color: red + border: 5px solid white; +}*/ +.difficulty-container .just-chill.active, +.difficulty-container .easy.active, +.difficulty-container .normal.active, +.difficulty-container .hard.active, +.difficulty-container .hell.active { + border: 5px solid white; +} + +.deck-container { + align-items: center; + display: flex; + flex-direction: column; + gap: 20px; + justify-content: center; + min-width: 30%; +} + +.difficulty-container .shuffle-button { + background-color: gray; + border: 2px solid white; + color: white; + cursor: pointer; + padding: 5px; + visibility: hidden; +} + +.deck-container .current-state { + display: flex; + flex-direction: column; + gap: 10px; + min-height: 20%; + visibility: hidden; +} + +.deck-container .current-state .stage-container { + align-items: center; + display: flex; + flex-direction: column; + gap: 5px +} + +.deck-container .current-state .stage-container .stage-text { + color: white +} + +.deck-container .current-state .stage-container .stage-text.done { + color: red; + text-decoration: line-through; +} + +.deck-container .current-state .stage-container .dots-container { + align-items: center; + display: flex; + gap: 20px; + justify-content: center +} + +.deck-container .current-state .stage-container .dot { + align-items: center; + border-radius: 50%; + display: flex; + height: 30px; + justify-content: center; + width: 30px; + color: white; +} + +.deck-container .current-state .stage-container .dot.green { + background-color: green +} + +.deck-container .current-state .stage-container .dot.brown { + background-color: rgb(128, 121, 24) +} + +.deck-container .current-state .stage-container .dot.blue { + background-color: blue +} + +.deck-container .deck { + cursor: pointer; + visibility: hidden; +} + +.deck-container .deck,.deck-container .last-card { + background-size: cover; + height: 290px; + width: 190px; + visibility: hidden; +} + +.App { + background-position: 50%; + background-repeat: no-repeat; + background-size: cover; + display: flex; + gap: 20px; + height: 100vh; + justify-content: space-between; + width: 100vw; + background-image: url(/assets/home.png); +} \ No newline at end of file