Учим JavaScript 31. Крестики-нолики

  Рет қаралды 56,246

WebDev с нуля. Канал Алекса Лущенко

WebDev с нуля. Канал Алекса Лущенко

Күн бұрын

Пікірлер: 138
@DavitAve
@DavitAve 3 жыл бұрын
Вот зачем я люблю ваши уроки все понятно,кратко и доходчиво! Огромное спасибо за вашу работу))
@natalia_2427
@natalia_2427 3 жыл бұрын
С удовольствием просмотрела видео, и вспомнились слова Эйнштейна: "Если вы что-то не можете объяснить 6-летнему ребёнку, вы сами этого не понимаете". Спасибо Вам огромное за проделанную работу :)
@andrewgrechukh3139
@andrewgrechukh3139 Жыл бұрын
Чтобы при повторном щелчке не менялся знак с Х на О или наоборот: нужно на 10 сроке добавить проверку && event.target.innerHTML == '' потом после єтого if на 19 строке написать else return;
@disenk_
@disenk_ Жыл бұрын
Спасибо
@ruthplett4976
@ruthplett4976 Жыл бұрын
Спасибо большое!
@ivand7299
@ivand7299 6 жыл бұрын
Спасибо из 2к18! Не понимаю почему у такого преподавателя так мало просмотров...
@vitaliypodolyak3247
@vitaliypodolyak3247 2 жыл бұрын
Отлично, столкнулся с похожей задачей, просто для себя мини страничку делаю и тут нашел решение и моей проблемы )
@kiminomeha
@kiminomeha 4 жыл бұрын
Мне кажется, в вашей игре есть баг: можно нажать два раза по одной клетке и нолик можно будет заменить крестиком
@NanoSlime-v3h
@NanoSlime-v3h 4 жыл бұрын
Так и есть
@itgid
@itgid 7 жыл бұрын
Файлы урока: w3.org.ua/bez-rubriki/videouroki-js-31-krestiki-noliki/ Facebook: facebook.com/w3.org.ua/ Крестики-
@yaokouassijean-claude1499
@yaokouassijean-claude1499 7 жыл бұрын
спасибо огромное!) реально круто !.. и очень хороший педагог!!
@abuz1r
@abuz1r Жыл бұрын
спасибо самый годный туториал
@motivatorden8997
@motivatorden8997 3 жыл бұрын
Отлично объясняете !!!Благодарю
@waldo_
@waldo_ 7 жыл бұрын
Думал,как можно этот код сократить.Пока что придумал тольк одно. Мы пишем функцию,которая принимает параметр(x или 0) и проверяет горизонтали,вертикали и диагонали,а затем в том месте,где мы рисуем крестик или нолик,вызываем эту функцию с нужным параметром.И вроде как не нужно для крестика и нолика отдельные условия писать) Больше пока что ничего умного в голову не пришло) Ну правда,какой то огромный код получился,хоть это и игра с такой хорошей логикой) Так же не нужно забывать о таком исходе,как ничья.Но даже без учета этого информативный урок получился.
@englishtogether6506
@englishtogether6506 3 жыл бұрын
Thanks for the explanation, although the game doesn't work properly,what about the draw ? And while clicking at the same cell twice it's changing from 0-X or vise versa instead of writing an error.
@runcode.ru.
@runcode.ru. 6 жыл бұрын
Отличные уроки , с удовольствием смотрю и вникаю в js. Удачи Вам и по больше подписчиков++; Спасибо!
@ТарасМильченко
@ТарасМильченко 6 жыл бұрын
Здравствуйте, ладно с повторным кликом на одну и ту же ячейку это уже нюанс, но почему нету исхода для ничьи это ведь обязательное условие для игры!? и нужно учитывать тот нюанс что ничья может наступить раньше чем будут заполнены все ячейки!
@Детишки-з2н
@Детишки-з2н 5 жыл бұрын
спасибо Вам за видео урок. Все понятно и очень просто.
@Детишки-з2н
@Детишки-з2н 5 жыл бұрын
Недавно добавила в Ваш код условия когда "Ничья", сделала кнопку перезагрузки. Чтоб можно было в конце обновить и играть заново и немного сократила Ваш код, как-то вот так: if (allblock[3].innerHTML=='x' && allblock[4].innerHTML=='x' && allblock[5].innerHTML=='x'|| allblock[3].innerHTML=='x' && allblock[4].innerHTML=='x' && allblock[5].innerHTML=='x'|| allblock[6].innerHTML=='x' && allblock[7].innerHTML=='x' && allblock[8].innerHTML=='x'|| allblock[0].innerHTML=='x' && allblock[3].innerHTML=='x' && allblock[6].innerHTML=='x'|| allblock[1].innerHTML=='x' && allblock[4].innerHTML=='x' && allblock[7].innerHTML=='x'|| allblock[2].innerHTML=='x' && allblock[5].innerHTML=='x' && allblock[8].innerHTML=='x'|| allblock[0].innerHTML=='x' && allblock[4].innerHTML=='x' && allblock[8].innerHTML=='x'|| allblock[2].innerHTML=='x' && allblock[4].innerHTML=='x' && allblock[6].innerHTML=='x') alert('Победили крестики'); P.S. Это конечно не большое сокращение, но мне кажется, что его еще можно сократить. Но я покамись новичок только недавно изучаю JS . Если придумаю как и оно будет работать без ошибок может быть поделюсь.
@anixi85
@anixi85 7 жыл бұрын
не хило конечно. код понятен, но самому до такого дойти крайне трудно
@itgid
@itgid 7 жыл бұрын
Ну поэтому и видео выкладываю.
@anixi85
@anixi85 7 жыл бұрын
Front-End разработка с нуля. HTML, CSS, jQuery спасибо! Больше всего интересуют практические задачи как этот урок
@ukraine_on_fire526
@ukraine_on_fire526 6 жыл бұрын
Отличная игра! Хотелось бы ещё "Сапера" в очень упрощенном варианте. Спасибо.
@theroga6948
@theroga6948 4 жыл бұрын
Привет не знаю ответишь ты или нет, но у меня вопрос нельзя ли все то "function checkWinner" не записывать как ты а засунуть все в циклы ?. Просто я сейчас делаю тоже самое и хочется засунуть в циклы этот момент
@vladdd2164
@vladdd2164 6 жыл бұрын
Код на jquery c проверкой на ничью, запрещением нажатия на одно поле несколько раз и отсрочкой результата, т.к. последний крестик или нолик в коде автора не успевают появится $(document).ready(function(){ var hod = 0; $('.block').click( function(){ if(hod % 2 == 0){ $(this).html('X'); hod++; $(this).css("pointer-events", "none"); } else{ $(this).html('0'); hod++ $(this).css("pointer-events", "none"); } checkWinner(); checkDraw(); }); function checkWinner(){ var allblock = $('.block'); if ($(allblock[0]).text()=='X' && $(allblock[1]).text()=='X' && $(allblock[2]).text()=='X') {setTimeout (function(){alert('Победили крестики'); $('.block').html('').css("pointer-events", "auto");}, 300);} if ($(allblock[3]).text()=='X' && $(allblock[4]).text()=='X' && $(allblock[5]).text()=='X') {setTimeout (function(){alert('Победили крестики'); $('.block').html('').css("pointer-events", "auto");}, 300);} if ($(allblock[6]).text()=='X' && $(allblock[7]).text()=='X' && $(allblock[8]).text()=='X') {setTimeout (function(){alert('Победили крестики'); $('.block').html('').css("pointer-events", "auto");}, 300);} if ($(allblock[0]).text()=='X' && $(allblock[3]).text()=='X' && $(allblock[6]).text()=='X') {setTimeout (function(){alert('Победили крестики'); $('.block').html('').css("pointer-events", "auto");}, 300);} if ($(allblock[1]).text()=='X' && $(allblock[4]).text()=='X' && $(allblock[7]).text()=='X') {setTimeout (function(){alert('Победили крестики'); $('.block').html('').css("pointer-events", "auto");}, 300);} if ($(allblock[2]).text()=='X' && $(allblock[5]).text()=='X' && $(allblock[8]).text()=='X') {setTimeout (function(){alert('Победили крестики'); $('.block').html('').css("pointer-events", "auto");}, 300);} if ($(allblock[0]).text()=='X' && $(allblock[4]).text()=='X' && $(allblock[8]).text()=='X') {setTimeout (function(){alert('Победили крестики'); $('.block').html('').css("pointer-events", "auto");}, 300);} if ($(allblock[2]).text()=='X' && $(allblock[4]).text()=='X' && $(allblock[6]).text()=='X') {setTimeout (function(){alert('Победили крестики'); $('.block').html('').css("pointer-events", "auto");}, 300);} //нолики if ($(allblock[0]).text()=='0' && $(allblock[1]).text()=='0' && $(allblock[2]).text()=='0') {setTimeout (function(){alert('Победили нолики'); $('.block').html('').css("pointer-events", "auto");}, 300);} if ($(allblock[3]).text()=='0' && $(allblock[4]).text()=='0' && $(allblock[5]).text()=='0') {setTimeout (function(){alert('Победили нолики'); $('.block').html('').css("pointer-events", "auto");}, 300);} if ($(allblock[6]).text()=='0' && $(allblock[7]).text()=='0' && $(allblock[8]).text()=='0') {setTimeout (function(){alert('Победили нолики'); $('.block').html('').css("pointer-events", "auto");}, 300);} if ($(allblock[0]).text()=='0' && $(allblock[3]).text()=='0' && $(allblock[6]).text()=='0') {setTimeout (function(){alert('Победили нолики'); $('.block').html('').css("pointer-events", "auto");}, 300);} if ($(allblock[1]).text()=='0' && $(allblock[4]).text()=='0' && $(allblock[7]).text()=='0') {setTimeout (function(){alert('Победили нолики'); $('.block').html('').css("pointer-events", "auto");}, 300);} if ($(allblock[2]).text()=='0' && $(allblock[5]).text()=='0' && $(allblock[8]).text()=='0') {setTimeout (function(){alert('Победили нолики'); $('.block').html('').css("pointer-events", "auto");}, 300);} if ($(allblock[0]).text()=='0' && $(allblock[4]).text()=='0' && $(allblock[8]).text()=='0') {setTimeout (function(){alert('Победили нолики'); $('.block').html('').css("pointer-events", "auto");}, 300);} if ($(allblock[2]).text()=='0' && $(allblock[4]).text()=='0' && $(allblock[6]).text()=='0') {setTimeout (function(){alert('Победили нолики'); $('.block').html('').css("pointer-events", "auto");}, 300);} } function checkDraw(){ var heights = []; $(".block").each(function(indx){heights.push($(this).text());}); //console.log(heights); if (heights[8]!='' && heights[7]!='' && heights[6]!='' && heights[5]!='' && heights[4]!='' && heights[3]!='' && heights[2]!='' && heights[1]!='' && heights[0]!=''){ setTimeout (function(){alert('Ничья'); $('.block').html('').css("pointer-events", "auto");}, 500); } } });
@olegonkos
@olegonkos 5 жыл бұрын
ваш вариант не работает у меня. Я тупо скопировал ваш код и вставил в новый документ 2.js и подключил в html (jquery подключен)
@holdongang6262
@holdongang6262 6 жыл бұрын
После этого урока закипел мозг =) очень круто, спасибо за труд!
@АрманТуреханов-й3с
@АрманТуреханов-й3с 2 жыл бұрын
Подскажите пожалуйста, как можно сделать вместо even.target.innerHTML = 'x' либо = 'y'; можно было поставить div со своими данными;
@Nadezhda-we2bc
@Nadezhda-we2bc Жыл бұрын
Хороший урок
@NamelessG0D
@NamelessG0D 6 жыл бұрын
Доброго времени суток. Отличный урок для начала изучения, все доступно. Но есть 1 вопрос как прикрутить вместо Х и О к примеру картинки var ximg = new Image(); var oimg = new Image(); ximg.src = "x.png"; oimg.src = "o.png"; так сказать для красоты P.S. Возможно так не есть хорошо но для перезапуска alert('Победили крестики', location.reload()); вроде работает
@alexandralexandrovich733
@alexandralexandrovich733 7 жыл бұрын
Если хотите потренировать умения, то напишите элементарный ИИ для этой игры. Например, чтобы ИИ не делал ошибочных ходов. Почитайте Вики по поводу игры. Очень помогает размять мозг и закрепить знания.
@artavazdyeghiazaryan7134
@artavazdyeghiazaryan7134 6 жыл бұрын
что такое Вики ?
@ivanz9169
@ivanz9169 6 жыл бұрын
вика
@gigman
@gigman 6 жыл бұрын
Wikipedia : wiki
@tolmach_y
@tolmach_y 5 жыл бұрын
Спасибо огромное за урок! Все супер, объясняете понятно. У меня такой вопрос, вот я смотрю уже много ваших видел вы подключаете js либо с помощью defer, либо с помощью window.onload, но при этом все время подключаете js в html только в head. В большинстве своем другие спикеры советуют подключать script внизу страницы. Я лазила по сайтам в инете, смотрела их код, там тоже script подключен внизу. Есть принципиальные отличия? Плюсы, минусы этих способов?
@qwerty6509
@qwerty6509 4 жыл бұрын
А повторный клики?
@ІгорОлександровичКропивний
@ІгорОлександровичКропивний 2 жыл бұрын
Спасибо большое)))))))))))))))))
@midnightstar_zoriana
@midnightstar_zoriana Жыл бұрын
мне при выполнении домашних работ в скиллбоксе на вопросы по модулям джс отвечали в чате общем по верстке.. а в чате по джс или тишина, или ответ на том уровне, на котором я его еще не могу понять без словаря.. при прохождении верстки хоть ответы в телеге реально было дождаться.. случайно нашла из каких-то ютубовских видео чат для учеников (не скиллбокса, а кого-то другого) -- учиться я к ним не пошла, но в чат вступила, а вот вопросы со криншотами или архивами кидаю - там отвечают почти СРАЗУ!!!!!!!!!!!! БЕСПЛАТНО!!!!!!!!!!! почему в моем родном оплаченном скиллбоксе этого НЕТ????!!!!!!
@dimageorgiev5798
@dimageorgiev5798 7 жыл бұрын
Спасибо :) !
@itgid
@itgid 7 жыл бұрын
Пожалуйста.
@welasco2287
@welasco2287 2 жыл бұрын
Есть идеи как оптимизировать логику проверки победителя?
@arthurpetrosyan6323
@arthurpetrosyan6323 3 жыл бұрын
все круто огромное спасибо объяснил все понятно но у меня только один вопрос как объявить ни чью?
@СергейФомин-ъ5ж
@СергейФомин-ъ5ж 6 жыл бұрын
Спасибо . Все круто.
@KosTHB1
@KosTHB1 3 жыл бұрын
Гениально
@artavazdyeghiazaryan7134
@artavazdyeghiazaryan7134 6 жыл бұрын
Спасибо
@Game-oz6gg
@Game-oz6gg 3 жыл бұрын
Надо такую игру написать, чтобы второй ход делал компьютер.. Автоматически А то получается, что сам с собой играешь
@axpers99
@axpers99 6 жыл бұрын
Реализация данного кода без массивов за 13 строк js (вместо дивов использованы таблицы) var a = "X", win = false, td = document.querySelectorAll("td"); document.onclick = function(e) { if (win == true || event.target.innerText !== "") return; event.target.innerText = a; if (td[0].innerText == a && td[1].innerText == a && td[2].innerText == a || td[3].innerText == a && td[4].innerText == a && td[5].innerText == a || td[6].innerText == a && td[7].innerText == a && td[8].innerText == a || td[0].innerText == a && td[3].innerText == a && td[6].innerText == a || td[1].innerText == a && td[4].innerText == a && td[7].innerText == a || td[2].innerText == a && td[5].innerText == a && td[8].innerText == a || td[0].innerText == a && td[4].innerText == a && td[8].innerText == a || td[6].innerText == a && td[4].innerText == a && td[2].innerText == a) return alert(a + " Win's!!!"), win = true; (a == "X") ? a = "0" : a = "X"; } В основном сэкономлено на переменных, { } и на if else.
@__hovhannisyan__2230
@__hovhannisyan__2230 7 жыл бұрын
а как ты сделаешь так какую клавиш нажимаешь что из например #game сделает div c ид game?
@itgid
@itgid 7 жыл бұрын
Уточни?
@xvivs
@xvivs 7 жыл бұрын
это плагин Emmet для редактора кода, нажимает клавишу Tab :)
@alsagir87
@alsagir87 6 жыл бұрын
У меня новичковые вопросы. Я заметил в роликах на ютубе везде используют var. Хотя давно уже есть let и const. Это дело в привычке или же есть какие то подводные камни у let и const? Я понимаю ,что в конкретном в примере в принципе не важно будут здесь var или let.
@itgid
@itgid 6 жыл бұрын
Это старые ролики, здесь используется синтаксисл ES5. В новых роликах - практически везде ES6. let и var отличаются областями видимости.
@alsagir87
@alsagir87 6 жыл бұрын
Большое спасибо! Базово я понимаю чем они отличаются. Я недавно начал изучать JS и в частности программирование. Просто меня смутило, что в роликах(не только у вас, а практически везде на ютубе) используют var, вот и подумал, что может есть какой подвох и что лучше использовать var. В общем спасибо за разьяснение :)
@webdev5107
@webdev5107 6 жыл бұрын
Aleksandr Kostromskiy, у дмитрия лаврика(надеюсь не сочтут за рекламу) есть вебинар на тему ес6 где описывает камни и плюшки) пару часиков под чаёк или перед сном норм посмотреть. а так.. уроки в основном старые на ютубе, как и код с которым работают фронты. не всегда пишут новый, часто это переделки старого. а там сплошные var'ы полюбому) да даже флексы не все пользуют, хотя, казалось бы, поддерживается уже год точно везде.. но эти уроки пока самые свежие и лучшие на рутубе точно, на зарубежном хз. не хватает английского ибо понимать нужно прям 100% текста)
@itgid
@itgid 6 жыл бұрын
И привычки, меняться тяжело, хотя и нужно и то что чаще всего старый код поддерживаешь. А так - это видео изначально делалось для студентов, которым нужно было просто основы js дать максимально просто. Поэтому здесь упор на понимание логики.
@anonymoustv1630
@anonymoustv1630 5 жыл бұрын
А у вас есть уроки по gamedev-у то есть по таким элементам как canvas и.т.д буду ждать ответа
@itgid
@itgid 5 жыл бұрын
нет, мне эта тема не очень интересна!
@anonymoustv1630
@anonymoustv1630 5 жыл бұрын
@@itgid жалко конечно ну хотя-бы за ответ спасибо
@anonymoustv1630
@anonymoustv1630 5 жыл бұрын
@@itgid неужели хотя-бы по основам работы по canvas нету
@itgid
@itgid 5 жыл бұрын
@@anonymoustv1630 По канвасу есть - смотрите javascript.kiev.ua/
@ВаганВосканчн
@ВаганВосканчн 6 жыл бұрын
А как можно делать динамический кристик нолик? К примеру 100×100 , и чтоб играли user и computer .
@maxgold1539
@maxgold1539 5 жыл бұрын
от души бро
@SashaPleshevich
@SashaPleshevich 7 жыл бұрын
спасибо!
@ВасилийВихляев-р4р
@ВасилийВихляев-р4р 7 жыл бұрын
Подскажите пожалуйста как реализовать проверку на занятость блока?
@itgid
@itgid 7 жыл бұрын
Первый вариант - что-то в него записать, второй вариант добавить ему атрибут и читать атрибут.
@АндрейКонончук-н2ц
@АндрейКонончук-н2ц 7 жыл бұрын
if (event.target.className == 'block' && event.target.textContent == "") И так можно!
@ukraine_on_fire526
@ukraine_on_fire526 6 жыл бұрын
var allblock = document.getElementsByClassName("block"); allblock[4].innerHTML = "O"; for(var i = 0; i < 9; i++){ document.getElementById("game").innerHTML += ''; } document.getElementById("game").onclick = function(event){ if(event.target.className =="block") { event.target.innerHTML = "X"; } var i = Math.floor(Math.random() * 9); if(allblock[i].innerHTML !== "X" && allblock[i].innerHTML !== "O" ) { allblock[i].innerHTML = "O"; }else { var i = Math.floor(Math.random() * 9); if(allblock[i].innerHTML !== "X" && allblock[i].innerHTML !== "O") { allblock[i].innerHTML = "O"; }else{ var i = Math.floor(Math.random() * 9); if(allblock[i].innerHTML !== "X" && allblock[i].innerHTML !== "O") { allblock[i].innerHTML = "O"; } else { var i = Math.floor(Math.random() * 9); if(allblock[i].innerHTML !== "X" && allblock[i].innerHTML !== "O"){ allblock[i].innerHTML = "O"; } else { var i = Math.floor(Math.random() * 9); if(allblock[i].innerHTML !== "X" && allblock[i].innerHTML !== "O"){ allblock[i].innerHTML = "O"; } else { var i = Math.floor(Math.random() * 9); if(allblock[i].innerHTML !== "X" && allblock[i].innerHTML !== "O"){ allblock[i].innerHTML = "O"; } } } } if(allblock[0].innerHTML == 'O' && allblock[1].innerHTML == 'O' && allblock[2].innerHTML == 'O') alert('Победил комп'); if(allblock[3].innerHTML == 'O' && allblock[4].innerHTML == 'O' && allblock[5].innerHTML == 'O') alert('Победил комп'); if(allblock[6].innerHTML == 'O' && allblock[7].innerHTML == 'O' && allblock[8].innerHTML == 'O') alert('Победил комп'); if(allblock[0].innerHTML == 'O' && allblock[3].innerHTML == 'O' && allblock[6].innerHTML == 'O') alert('Победил комп'); if(allblock[1].innerHTML == 'O' && allblock[4].innerHTML == 'O' && allblock[7].innerHTML == 'O') alert('Победил комп'); if(allblock[2].innerHTML == 'O' && allblock[5].innerHTML == 'O' && allblock[8].innerHTML == 'O') alert('Победил комп'); if(allblock[0].innerHTML == 'O' && allblock[4].innerHTML == 'O' && allblock[8].innerHTML == 'O') alert('Победил комп'); if(allblock[2].innerHTML == 'O' && allblock[4].innerHTML == 'O' && allblock[6].innerHTML == 'O') alert('Победил комп'); if(allblock[0].innerHTML == 'X' && allblock[1].innerHTML == 'X' && allblock[2].innerHTML == 'X') alert('Победил человек'); if(allblock[3].innerHTML == 'X' && allblock[4].innerHTML == 'X' && allblock[5].innerHTML == 'X') alert('Победил человек'); if(allblock[6].innerHTML == 'X' && allblock[7].innerHTML == 'X' && allblock[8].innerHTML == 'X') alert('Победил человек'); if(allblock[0].innerHTML == 'X' && allblock[3].innerHTML == 'X' && allblock[6].innerHTML == 'X') alert('Победил человек'); if(allblock[1].innerHTML == 'X' && allblock[4].innerHTML == 'X' && allblock[7].innerHTML == 'X') alert('Победил человек'); if(allblock[2].innerHTML == 'X' && allblock[5].innerHTML == 'X' && allblock[8].innerHTML == 'X') alert('Победил человек'); if(allblock[0].innerHTML == 'X' && allblock[4].innerHTML == 'X' && allblock[8].innerHTML == 'X') alert('Победил человек'); if(allblock[2].innerHTML == 'X' && allblock[4].innerHTML == 'X' && allblock[6].innerHTML == 'X') alert('Победил человек'); } } }
@igortaran18
@igortaran18 7 жыл бұрын
Подскажите как привязать например кнопку "Restart", чтоб при клике все вернулось в начальную позицию. Спасибо
@sergionazarov814
@sergionazarov814 6 жыл бұрын
Просто создай новую кнопку, в js получи эту кнопку и создай функцию при клике на кнопку, чтобы оно например перезаписывало во все блоки пустую строку
@arqikari2684
@arqikari2684 4 жыл бұрын
@@sergionazarov814 или что бы просто пере запускала страницу
@ВячеславИванов-в8г
@ВячеславИванов-в8г 6 жыл бұрын
получается что при победе последний выбранный крестик или нолик не отрисовывается, а вместо этого выскакивает сообщение и только потом при нажатии ок отрисовывается последний выбранный в клетке нолик(крестик). Как сделать чтобы вначале отрисовывался последний выбранный элемент а потом уже выскакивало сообшение о победе?
@itgid
@itgid 6 жыл бұрын
Изменить порядок проверки. Вначале отрисовка, затем проверка.
@ВсеволодПротопопов
@ВсеволодПротопопов 6 жыл бұрын
можете объяснить по подробнее?
@voltamper96
@voltamper96 6 жыл бұрын
Я использовал setTimeout что бы запустит функцию проверки с опаданием.. 1-ms и больше. Я не мог добиться по другому. Не успевает записать Х задержка 1ms хватило что бы успеет.
@ИгорьГроховский-и9с
@ИгорьГроховский-и9с 5 жыл бұрын
Ну, сократил хоть и не сильно, но пару строк точно) for(var i = 0; i < 8; i++){ if(blocks[i].innerHTML == "x" && blocks[i+1].innerHTML == "x" && blocks[i+2].innerHTML == "x") alert("Выиграли крестики"); if(blocks[i].innerHTML == "x" && blocks[i+3].innerHTML == "x" && blocks[i+6].innerHTML == "x") alert("Выиграли крестики"); if(blocks[i].innerHTML == "x" && blocks[4].innerHTML == "x" && blocks[i+8].innerHTML == "x" || blocks[i+2].innerHTML == "x" && blocks[4].innerHTML == "x" && blocks[i+6].innerHTML == "x" ) alert('Выиграли крестики'); if(blocks[i].innerHTML == "0" && blocks[i+1].innerHTML == "0" && blocks[i+2].innerHTML == "0") alert("Выиграли нолики"); if(blocks[i].innerHTML == "0" && blocks[i+3].innerHTML == "0" && blocks[i+6].innerHTML == "0") alert("Выиграли нолики"); if(blocks[i].innerHTML == "0" && blocks[4].innerHTML == "0" && blocks[i+8].innerHTML == "0" || blocks[i+2].innerHTML == "0" && blocks[4].innerHTML == "0" && blocks[i+6].innerHTML == "0" ) alert('Выиграли нолики); }
@itgid
@itgid 5 жыл бұрын
Круто, если не сложно - выложите на codepen - и дайте ссылку, будет удобнее!
@watchbotzz
@watchbotzz 7 жыл бұрын
Лайк + подписка! Будут ли еще уроки по ДжС?
@itgid
@itgid 7 жыл бұрын
Да будут. Сейчас планирую войти в русло Вторник - Четверг - Суббота. ПО уроку.
@andrujjjkeee
@andrujjjkeee 5 жыл бұрын
Я понимаю что звук пишешь на мак, но блин, часы убрать надо было...тикают так громко))))
@pavlodovbush2340
@pavlodovbush2340 7 жыл бұрын
я думаю штоби не писать два раза условия просто передайом аргумент функциє например єсли добавляєм х передайом функциї аргумент х а єсло 0 то 0. (9 строк сокращаєт) Сорі за плохой руский я просто с Украини. Спасибо за уроки!
@sergionazarov814
@sergionazarov814 6 жыл бұрын
То что ты с Украины не оправдывает твой язык, к сожалению.
@ukraine_on_fire526
@ukraine_on_fire526 6 жыл бұрын
Я не поняла. Напечатайте код . А шутка"
@ukraine_on_fire526
@ukraine_on_fire526 6 жыл бұрын
А шутка"Я с Украины" мне понравилась
@ukraine_on_fire526
@ukraine_on_fire526 6 жыл бұрын
Вы не правы. Посмотрите-- 6 пальцев вверх.
@ukraine_on_fire526
@ukraine_on_fire526 6 жыл бұрын
Это Сергею Назарову.
@МихаилБуинцев-щ4в
@МихаилБуинцев-щ4в 6 жыл бұрын
еще есть момент, нет победы когда 2 по углам и 1 в центре)
@non_traditional_gardening
@non_traditional_gardening Жыл бұрын
А комьпьютер?
@KirillKlimov_lds
@KirillKlimov_lds 7 жыл бұрын
Как увеличить размер игрового поля, "крестика" и "нолика", я догадался. Как выровнять игру по центру?
@itgid
@itgid 7 жыл бұрын
Все поле? Margin: 50px auto.
@YauhenRomeiko
@YauhenRomeiko 5 жыл бұрын
магия margin: 0 auto; (и ширину не забываем указать самого блока)
@MrSaintSaturday
@MrSaintSaturday 7 жыл бұрын
Спасибо хороший урок, однако если клацать на одну и ту же ячейку ноль будет менятся на крестик и наоборот...
@itgid
@itgid 7 жыл бұрын
Да, к сожалению иногда уроки пишу на ходу и тестирования не делаю, а оно необходимо.
@ericraudy
@ericraudy 7 жыл бұрын
посмотри в моем решении есть запрет на повторный клик
@MrSaintSaturday
@MrSaintSaturday 7 жыл бұрын
ericraudy на канале?
@ericraudy
@ericraudy 7 жыл бұрын
да вот здесь же, чуть ниже
@MrSaintSaturday
@MrSaintSaturday 7 жыл бұрын
ericraudy спасибо
@maranatabhk7354
@maranatabhk7354 6 жыл бұрын
a kak mojna sdelat chtobi posli najate knopki alerta perezagruzilas stranica avtamatichski
@YoumoraNetFM
@YoumoraNetFM 6 жыл бұрын
maranata bhk Window.location. reload();
@maranatabhk7354
@maranatabhk7354 6 жыл бұрын
sposibo!!!!
@artavazdyeghiazaryan7134
@artavazdyeghiazaryan7134 6 жыл бұрын
а еслы ничья ? ничего ответить не будет
@ДмитроКухар-е1и
@ДмитроКухар-е1и 5 жыл бұрын
Допиши ти вже знаєш як!
@kellkomby86
@kellkomby86 7 жыл бұрын
window.onload = function() { for (var i = 0; i < 9; i++) { document.getElementById('game').innerHTML+='' } var hor = 0; document.getElementById('game').onclick = function(event) { //console.log(event); if (event.target.className == 'block') { if (hor % 2 == 0) { event.target.innerHTML = 'X'; } else { event.target.innerHTML = 'O'; } hor++; checkWin(); } } function checkWin() { var allblock = document.getElementByClassName("block"); } } В конце выбивает ошибку и говорит что document.getElementByClassName is not a function. Почему оно считает его функцией? Подскажите пожалуйста, вроде бы все как и у Вас.
@itgid
@itgid 7 жыл бұрын
getElements - добавьте s в конце.
@kaaqwerty
@kaaqwerty 5 жыл бұрын
Эх, мне бы спеца по JS. Единорога бы забацали.
@Астролит
@Астролит 6 жыл бұрын
Эхх самая интрига была как компьютер будет играть с тобой в крестики нолики но она так и не раскрылась =(
@sciences6705
@sciences6705 4 жыл бұрын
window.onload не помогло...
@gurudk3378
@gurudk3378 6 жыл бұрын
Интересно, если б мне дали такое задание, и сказали делай. Как я должен бьіл бьі догадаться, что нужно делать именно так, что нужно брать именно те свойство єлемента, а не другие и тд. :)
@itgid
@itgid 6 жыл бұрын
А как бы вы решали?
@gurudk3378
@gurudk3378 6 жыл бұрын
Хз, если честно:) Я не знаю всех свойств и не умею их использовать. Кажеться, что никогда не научусь:(
@aspirinalekseevich9314
@aspirinalekseevich9314 4 жыл бұрын
ммм асмрчик
@kimblinov1594
@kimblinov1594 7 жыл бұрын
ты ахуенен, все рассказываешь, спасибо!
@itgid
@itgid 7 жыл бұрын
Спасибо!
@kimblinov1594
@kimblinov1594 7 жыл бұрын
за мат извиняюсь) на эмоциях был:D
@ИяИя-п2к
@ИяИя-п2к 5 жыл бұрын
Сама бы не одолела))
@alexandrnikienko8181
@alexandrnikienko8181 4 жыл бұрын
ужас, ну и решение...
@postrockmore1306
@postrockmore1306 7 жыл бұрын
Неееет... Только не "Фанкшн"
@ВячеславСергеевич-у1н
@ВячеславСергеевич-у1н 6 жыл бұрын
Не смотрите вы эти уроки, это не уроки, а не пойми что, от них толку 0, это все равно, что обучать вождению автомобиля в поле, полный бред, полезной информации 0.
@ДмитроКухар-е1и
@ДмитроКухар-е1и 5 жыл бұрын
не пиши ці коментарі, це не коментарі, а не пойми що, від них толку 0, це все одно що дивитись відео уроки для новачків і писати тупі коменти)
@angrycatstudio2816
@angrycatstudio2816 5 жыл бұрын
а ты смешной
Учим JavaScript 26. Поле ввода пароля
18:37
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 23 М.
Учим JavaScript 34. Адаптивное меню
14:50
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 31 М.
Чистка воды совком от денег
00:32
FD Vasya
Рет қаралды 4,9 МЛН
小路飞和小丑也太帅了#家庭#搞笑 #funny #小丑 #cosplay
00:13
家庭搞笑日记
Рет қаралды 10 МЛН
Tuna 🍣 ​⁠@patrickzeinali ​⁠@ChefRush
00:48
albert_cancook
Рет қаралды 18 МЛН
Lazy days…
00:24
Anwar Jibawi
Рет қаралды 8 МЛН
Учим JavaScript 21. События мыши
21:56
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 48 М.
Налог на незнание JavaScript - [Hamster Kombat]
50:20
Учим JavaScript 32. LocalStorage
15:24
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 42 М.
Практика на JavaScript: Создаем крестики-нолики с нуля.
18:51
Учим JavaScript 36. Вкладки
27:41
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 25 М.
Игра крестики-нолики vs. Компьютер на JavaScript (Часть 1)
26:57
Для чайников на пальцах
Рет қаралды 3,6 М.
Учим Java Script 12. Создаем слайдер
19:50
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 110 М.
Чистка воды совком от денег
00:32
FD Vasya
Рет қаралды 4,9 МЛН