Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   ревью крестики- нолики (https://javascript.ru/forum/project/81949-revyu-krestiki-noliki.html)

arthas 19.02.2021 15:01

ревью крестики- нолики
 
Всем привет!:thanks:

Недавно начал изучать js и программирование в целом.
Написал свою первую программу, крестики и нолики в стиле ООП
Если у кого то есть желание или возможность, просьба указать на ошибки

Ссылка на код на Гитхабе

Заранее спасибо за помощь

рони 19.02.2021 15:15

arthas,
просто для примера ...
крестики нолики на поле любой величины

https://javascript.ru/forum/misc/812...tml#post530163

voraa 19.02.2021 15:32

Что бы уж было совсем ООП panel тоже надо бы как объект со своим классом.
Какой смысл циклов в функции checkDiagonals?
Зачем в player нужны makeX() и makeO()? Почему нельзя через конструктор?

Ну и лучше сначала заполнить board ячейками, а потом уже засовывать board в dody.

arthas 19.02.2021 15:51

Цитата:

Сообщение от voraa (Сообщение 533898)
Что бы уж было совсем ООП panel тоже надо бы как объект со своим классом.
Какой смысл циклов в функции checkDiagonals?
Зачем в player нужны makeX() и makeO()? Почему нельзя через конструктор?

Ну и лучше сначала заполнить board ячейками, а потом уже засовывать board в dody.

Про панель согласен вынесу в отдельный класс, циклы уберу

В классе Player можно и через конструктор, но как тогда ограничить количество возможных игроков( что было только X И O)?

Последнее поправил, спасибо за советы!

Rise 19.02.2021 17:44

arthas,
1. Имена классов принято писать с большой буквы.
2. Нет смысла оборачивать свойства в методы getProp1() { return this.prop1 } setProp1(value) { this.prop1 = value }.

voraa 19.02.2021 19:28

Цитата:

Сообщение от arthas
но как тогда ограничить количество возможных игроков( что было только X И O)?

Да так же, как и сейчас.
Только вместо
let onePlayer = new player();
onePlayer.makeX();
let twoPlayer = new player();
twoPlayer.makeO();
let b = new board(onePlayer, twoPlayer);

Писать что то вроде
let b = new board(new Player('X'), new Player('O'));

Vlasenko Fedor 19.02.2021 22:23

магический квадрат и крестики нолики на основе собственного велосипедостроения
:lol:
https://jsfiddle.net/vlasenkofedor/5ad26zc7/

arthas 20.02.2021 15:39

Всем спасибо за советы!
Код поправил.


Часовой пояс GMT +3, время: 15:21.