13.01.2019, 15:18
|
|
Интересующийся
|
|
Регистрация: 09.01.2019
Сообщений: 14
|
|
RX200,
Спасибо за подробные подсказки! Наконец-то, до меня начинает доходить, что MVC - это не паттерн как таковой, а абстрактная "идеологическая" структура и каждый ее реализует как-то по своему. Обидно, конечно... Создавая эту тему, я надеялся, что существует какой-то паттерн или подход универсальный на все случаи жизни. Чтобы изучив его структуру, можно было спокойно писать любые приложения. Похоже, что структуру программы приходится каждый раз строить с нуля используя какие-то абстрактные подходы типа MVC и более мелкие уже паттерны проектирования.
Как я понял MVC, это что-то вроде такого:
var game = {};
/* MODEL */
game.model = {
// хранилище данных
cards: ['card1', 'card2', 'card3'],
// извлечь данные из хранилища
go: function() {
return game.model.cards[0];
},
// записать данные в хранилище
save: function(card) {
game.model.cards.push(card);
}
}
/* VIEW */
game.view = {
// отобразить данные в интерфейсе
show: function(card) {
desk.innerHTML = card;
},
// забрать данные из интерфейса
get: function() {
return desk.innerHTML;
}
}
/* CONTROLLER */
game.controller = {
// взять данные у VIEW и отправить в MODEL
add: function() {
game.model.save(game.view.get());
},
// взять данные у MODEL и отправить VIEW
show: function() {
game.view.show(game.model.go());
}
}
Лично мне в этой структуре не хватает еще блока с логикой. Похоже, MVC об этом ничего не говорит и оставляет на откуп программиста. Изобразил, в чем суть конечного автомата (за каждой стрелкой еще стоит условие перехода из одного состояния в другое):
К сожалению, бот и юзер слишком разные сущности, чтобы делать их одним классом... не смотря на кажущуюся одинаковость.
Последний раз редактировалось VооDоо, 13.01.2019 в 15:41.
|
|
14.01.2019, 03:06
|
Аспирант
|
|
Регистрация: 06.02.2011
Сообщений: 54
|
|
Сообщение от VооDоо
|
К сожалению, бот и юзер слишком разные сущности, чтобы делать их одним классом...
|
У вас как я понял, сам бот является игроком-ботом, я бы так не стал делать, как мне кажется это сложно, если например игроков 4 или 6, по этому я бы сделал, игроки это игроки, а бот всегда один, это бот, создаем класс Player на основании его создаем например четыре игрока, игрок хранит в себе свои карты, и например имя, простенький такой объект, программа знает что если например ход первого игрока, который пусть будет пользователь, то тут визуализируем ситуацию, а пользователь пусть думает, далее если ход например игрока 2,3,4 то мы сообщаем боту, ситуацию а он оценивает ситуацию со стороны игрока которого мы ему указали и возвращает оптимальное действие, причем он может и со стороны игрока пользователя(человека) оценивать но в таком случае ответы бота мы можем использовать например как подсказки реальному игроку. Так же мы можем обойтись вообще без бота если игра например между людьми в сети. Так что то что вы сказали, "К сожалению, бот и юзер слишком разные сущности" наоборот это хорошо что разные они совсем разные, даже и близко не наследуются от одного класса, задача объекта игрока хранить его карты и имя может ещё какие параметры, а задача бота думать, При таком разделении бота и игроков, на совсем разные сущности проще написать код, можно сначала написать игру вообще без бота, просто переключая пользователя с одного игрока на другого, как бы игра с самим собой, а уже потом отдельно написать бота, который по сути будет переключатся между игроками и сообщать оптимальный ход, только в отличие от пользователя человека он не будет запоминать карты игрока за которого принимал решение на предыдущем ходу.
Последний раз редактировалось RX200, 14.01.2019 в 03:09.
|
|
14.01.2019, 12:53
|
|
Профессор
|
|
Регистрация: 11.08.2017
Сообщений: 208
|
|
Бот вообще может и не нужен даже в этой игре.
|
|
14.01.2019, 13:19
|
|
Интересующийся
|
|
Регистрация: 09.01.2019
Сообщений: 14
|
|
Сообщение от RX200
|
можно сначала написать игру вообще без бота, просто переключая пользователя с одного игрока на другого, как бы игра с самим собой
|
Да, это очень хорошая мысль, спасибо! От простого к сложному проще писать. Так наверно и буду делать.
Но вообще, дело не в том - сложно или просто. "Дурака" можно написать в виде бета-версии за несколько часов... Вопрос в том, как писать правильно приложение. Ибо если я сейчас сяду и напишу "как знаю", получится наверно не оч. круто - типа спагетти код. Ну, представьте, как на jQuery пишут. Вот типа того.
А как правильно, вот только решил разобраться. Я реально не понимаю этого... Чувствую, надо почитать какие-то умные книжки по архитектуре. Ибо сейчас пытаюсь дойти своим умом до каких-то вещей, а это тяжко и возможно даже не эффективно.
Кто какие книги может посоветовать для моего случая?
Последний раз редактировалось VооDоо, 14.01.2019 в 14:03.
|
|
14.01.2019, 13:50
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 641
|
|
|
|
14.01.2019, 14:02
|
|
Интересующийся
|
|
Регистрация: 09.01.2019
Сообщений: 14
|
|
SuperZen,
Спасибо! Буду читать, ибо другого выхода не вижу)
|
|
18.05.2019, 15:49
|
Новичок на форуме
|
|
Регистрация: 18.05.2019
Сообщений: 2
|
|
Подход хороший. На мой взгляд, использовать глобальные переменные и работать с ними разными функциями очень выгодно.
|
|
23.07.2019, 21:05
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 641
|
|
Сообщение от Русский
|
Порядочные мужики пишут на чистом JS.
|
Риальные пацаны пищют ) на ассемблере
|
|
24.07.2019, 08:25
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 641
|
|
Сообщение от Русский
|
Вот, допустим, такой, более приближенный к реальному положению вещей образ.
|
Если что-то допускать, то можно стать хозяином вселенной, причем, сразу )
очевидно, что не все с тобой согласны )... какова, вообще, цель твоих высеров))?
|
|
24.07.2019, 12:53
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 641
|
|
Сообщение от Русский
|
Конечно, хреньворкщики не согласны, не каждому хочется ассоциировать себя с этой обезьяной, увязшей в болоте по своей природной тупости.
|
велкам: https://javascript.ru/forum/project/...i-kritiku.html
|
|
|
|