Показать сообщение отдельно
  #1 (permalink)  
Старый 09.01.2019, 15:15
Аватар для VооDоо
Интересующийся
Отправить личное сообщение для VооDоо Посмотреть профиль Найти все сообщения от VооDоо
 
Регистрация: 09.01.2019
Сообщений: 14

Дурак Навсегда!
Доброго времени суток, ув. гуру, и новички, и просто интересующиеся 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;
}
Ответить с цитированием