Доброго времени суток, ув. гуру, и новички, и просто интересующиеся JS. Посоветуйте, как быть. Хочу написать несколько приложений на JS. Но практически никогда не доводилось с этим сталкиваться. Поэтому даже не представляю толком, как это может выглядеть.
Хотелось бы написать приложения и разместить их на своем сайте + возможно что-то закинуть в ВК и на ФБ и т.д. Может даже Google.Play и тому подобное. То есть хотелось бы распространять код, совершенствовать и дорабатывать.
Я видел - такие вещи часто делают на классах и прототипах, но не понял, как это применить. Еще слышал что-то про MVC, но не осилил пока что.
В связи с этим набросал примерный план приложения, на примере наверное всем знакомой игры "Дурак", как я себе это представляю
Ну, на самом деле не суть, что за приложение. Самое главное - что вы можете сказать об этом в целом?
Я просто использовал объекты, чтобы разделить на смысловые части методы и функции. Это вряд ли можно назвать ООП
Но все-таки:
- Это нормальный рабочий подход?
- В принципе можно и так?
- Это бред и надо все делать по другому?
Если все плохо, то где можно увидеть нормальный пример, как надо? Может, посоветуете книгу или курс какой-то или еще что-то? Или может, есть у кого ссылка на не очень сложный готовый пример? Может, есть шаблоны какие-то для таких целей?
Короче, что можете сказать и посоветовать такому нубу как я?))
/* ======================================== */
/* ========== Глобальный объект =========== */
/* ======================================== */
var game = {};
/* ======================================== */
/* ================ Колоды карт =============== */
/* ======================================== */
game.deck = {};
game.deck.bot = [];
game.deck.user = [];
game.deck.desk = [];
game.deck.out = [];
game.deck.all = [
[1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9],
[2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9],
[3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9],
[4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9]
];
/* ======================================== */
/* ============== Методы колоды =============== */
/* ======================================== */
game.cards = {};
// Создать новую колоду
game.cards.create = function(){};
// Перетасовать колоду
game.cards.shuffle = function(){};
// Выбрать случайный козырь
game.cards.trump = function(){};
// Добавить карту в колоду
game.cards.add = function(card, to){};
// Удалить карту из колоды
game.cards.del = function(card, from){};
// Переместить карту из одной колоды в другую
game.cards.move = function(card, from, to){};
// Найти наименьшую карту из колоды
game.cards.min = function(from){};
// Отсортировать карты по масти и достоинству
game.cards.sort = function(){};
// Положить карты в аут
game.cards.out = function(){};
/* ======================================== */
/* ================ Методы игрока ============== */
/* ======================================== */
game.user = {};
// Ход игрока
game.user.go = function(e){};
// Подкинуть карту
game.user.next = function(){};
// Ответить
game.user.ansver = function(){};
// Бито
game.user.out = function(){};
// Предложить боту ничью
game.user.draw = function(){};
// Сдаться
game.user.giveUp = function(){};
/* ======================================== */
/* ================ Методы бота =============== */
/* ======================================== */
game.bot = {};
// Ход бота
game.bot.go = function(){};
// Бот подбрасывает карту
game.bot.next = function(){};
// Бот отвечает
game.bot.answer = function(){};
// Бито
game.bot.out = function(){};
// Бот предлагает ничью
game.bot.draw = function(){};
/* ======================================= */
/* =============== Рендер =================== */
/* ======================================= */
game.render = {};
// Отобразить изменения
game.render.cards = function(){};
// Анимация передвижения карты
game.render.animation = function(){};
// Обновить игровой счет
game.render.score = function(){};
// Вывести актуальные сообщения
game.render.message = function(){};
// Отобразить актуальные кнопки ('Взять', 'Бито', 'Сдаться' и т.д.)
game.render.ui = function(){};
/* =================================== */
/* ============ Состояние игры ============ */
/* =================================== */
game.state = {
trump : undefined,
score : 0,
}
game.state.checkWin = function(){};
game.state.win = function(){};
game.state.loose = function(){};
/* ======================================= */
/* ========== DOM элементы (интерфейс) ========== */
/* ======================================= */
game.dom = {
'wrapper': undefined,
'trump': undefined,
'user': undefined,
'bot': undefined,
'out': undefined
}
// Получить DOM-элементы в переменные
game.dom.query = function(){};
/* ===================================== */
/* =============== Настройки ============== */
/* ===================================== */
game.setting = {
shirt: 'grey',
music: 'play',
musicVolume: 0.5,
animation: true
};
game.setting.load = function(){};
game.setting.display = function(){};
game.setting.apply = function(){};
game.setting.save = function(){};
/* ===================================== */
/* ============== Сохранение ============== */
/* ===================================== */
game.save = function(){};
game.list = function(){};
game.load = function(){};
/* ==================================== */
/* ============ Инициализация++ =========== */
/* ==================================== */
game.app = {};
game.app.start = function(){};
game.app.preloader = function(){};
game.app.init = function(){
game.app.preloader();
game.dom.query();
game.cards.trump();
game.cards.shuffle();
game.app.start();
}
game.app.replay = function(){};
game.app.pausePlay = function(){};
game.app.exit = function(){};
/* ====================================== */
/* ================ Старт ================= */
/* ====================================== */
window.onload = function() {
game.app.init();
}
/* =================================== */
/* ======== Вспомогательные функции ======== */
/* =================================== */
function genRnd(min, max) {
var rand = Math.floor(Math.random() * max - min + 1) + min;
return rand;
}