From 156e647f9ab14126fb95881ab03d2b40a5b02d4c Mon Sep 17 00:00:00 2001 From: RenatZubakin Date: Thu, 30 Sep 2021 21:41:23 +0500 Subject: [PATCH 1/3] =?UTF-8?q?1-8=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 16 +++++----- index.js | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 94 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 884044a..ed9fd65 100644 --- a/README.md +++ b/README.md @@ -3,14 +3,14 @@ Сейчас в коде описаны функции для рисования поля любого размера и рисования любого символа в клетке этого поля. Твоя задача дописать код, чтобы это стало полноценной игрой в Крестики-нолики. -1. Реши, как будешь хранить поле. Тебе нужна будет такая структура, в которой удобно понимать есть ли победитель: три клетки по горизонтали, вертикали или диагонали, заполненные одинаковыми символами. -2. Допиши функцию cellClickHandler, чтобы после клика ставился крестик или нолик в соответствующее поле. -3. Если поле, по которому кликнули, не пустое, символ ставиться не должен. -4. Если кончились ходы, выведи alert с текстом "Победила дружба". -5. Напиши функцию, которая считает: есть ли уже победитель. Если есть победитель, выведи alert с названием победителя. -6. Если есть победитель, покрась победные значения в клетках в красный. -7. После победы, клик по полю больше не должен ставить крестик или нолик. -8. Обрабатывай клик по кнопке "Сначала": допиши метод resetClickHandler, чтобы поле очищалось. +-1. Реши, как будешь хранить поле. Тебе нужна будет такая структура, в которой удобно понимать есть ли победитель: три клетки по горизонтали, вертикали или диагонали, заполненные одинаковыми символами. +-2. Допиши функцию cellClickHandler, чтобы после клика ставился крестик или нолик в соответствующее поле. +-3. Если поле, по которому кликнули, не пустое, символ ставиться не должен. +-4. Если кончились ходы, выведи alert с текстом "Победила дружба". +-5. Напиши функцию, которая считает: есть ли уже победитель. Если есть победитель, выведи alert с названием победителя. +-6. Если есть победитель, покрась победные значения в клетках в красный. +-7. После победы, клик по полю больше не должен ставить крестик или нолик. +-8. Обрабатывай клик по кнопке "Сначала": допиши метод resetClickHandler, чтобы поле очищалось. 9. \* Сделай так, чтобы можно было в начале игры задавать поле произвольного размера. 10. \* Напиши "искусственный интеллект" — функцию, которая будет ставить нолики с случайное пустое поле. 11. \* Напиши чуть более умный искусственный интеллект — функция, ставящая нолики в случайном месте обязана поставить нолик в такое поле, нолик в котором приведет к выигрышу "ИИ". diff --git a/index.js b/index.js index 7553909..c1053fb 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,9 @@ const CROSS = 'X'; const ZERO = 'O'; const EMPTY = ' '; +let isZero = false; +let GridArray = [ [], [], []]; +let IsWin= false; const container = document.getElementById('fieldWrapper'); @@ -26,11 +29,91 @@ function renderGrid (dimension) { } } +function isDraw(){ + let isFull=true; + for(let i=0; i Date: Thu, 30 Sep 2021 23:01:48 +0500 Subject: [PATCH 2/3] 1-8 exercise --- index.js | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/index.js b/index.js index c1053fb..67bd2f2 100644 --- a/index.js +++ b/index.js @@ -1,8 +1,9 @@ const CROSS = 'X'; const ZERO = 'O'; const EMPTY = ' '; +let usedCells=0; let isZero = false; -let GridArray = [ [], [], []]; +let GridArray = [ [EMPTY, EMPTY, EMPTY], [EMPTY, EMPTY, EMPTY], [EMPTY, EMPTY, EMPTY]]; let IsWin= false; const container = document.getElementById('fieldWrapper'); @@ -29,24 +30,11 @@ function renderGrid (dimension) { } } -function isDraw(){ - let isFull=true; - for(let i=0; i Date: Sun, 3 Oct 2021 00:12:23 +0500 Subject: [PATCH 3/3] finish MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1-9 задание --- README.md | 2 +- index.js | 46 ++++++++++++++++++++++++++++++++-------------- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index ed9fd65..c350022 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ -6. Если есть победитель, покрась победные значения в клетках в красный. -7. После победы, клик по полю больше не должен ставить крестик или нолик. -8. Обрабатывай клик по кнопке "Сначала": допиши метод resetClickHandler, чтобы поле очищалось. -9. \* Сделай так, чтобы можно было в начале игры задавать поле произвольного размера. +-9. \* Сделай так, чтобы можно было в начале игры задавать поле произвольного размера. 10. \* Напиши "искусственный интеллект" — функцию, которая будет ставить нолики с случайное пустое поле. 11. \* Напиши чуть более умный искусственный интеллект — функция, ставящая нолики в случайном месте обязана поставить нолик в такое поле, нолик в котором приведет к выигрышу "ИИ". 12. \* Сделай так, чтобы при заполнении больше половины клеток на поле, оно бы расширялось: добавлялось бы по одному ряду с каждой стороны. diff --git a/index.js b/index.js index 67bd2f2..d3d30ec 100644 --- a/index.js +++ b/index.js @@ -1,18 +1,18 @@ const CROSS = 'X'; const ZERO = 'O'; const EMPTY = ' '; +let arrsize = prompt("Введите размерность масссива", 3); let usedCells=0; let isZero = false; -let GridArray = [ [EMPTY, EMPTY, EMPTY], [EMPTY, EMPTY, EMPTY], [EMPTY, EMPTY, EMPTY]]; +let GridArray =createArray(); let IsWin= false; - const container = document.getElementById('fieldWrapper'); startGame(); addResetListener(); function startGame () { - renderGrid(3); + renderGrid(arrsize); } function renderGrid (dimension) { @@ -30,8 +30,21 @@ function renderGrid (dimension) { } } +function createArray(){ + let arr=[]; + let arr2=[]; + for(let i=0;i