Если уж делать таблицу через display: flex - то флоу должен быть по столбцам. Т.е. столбец для первой колонки стоблец для второй и для третьей. Тогда получится то, что вы хотите сделать.
На скидку:
файл password.js
1. low, medium, high стоит оформить в виде enum'а.
2. методы класса перенести в прототип.
файл questions.js:
1. так же методы - в прототип
файл page.js
1. я бы разбил на два компонента - собственно форма придумывания пароля и и форма попыток ввода. Это два независимых блока ну и файликов к ним тоже 2.
2. не использовать id и поиск по id.
3. Прямая работа с DOM в реалиях 2016 года - это не очень хорошо. Хотелось бы какой-то data-binding видеть(тут уже что вам больше нравится).
По поводу функционала:
Стоит добавить какую-то случайность в процесс генерации пароля(те же большие/маленькие буквы неапример).
зависит от последовательности контента, но вообще на флексе такое сделать довольно несложно. Покажите,что у вас вызвало проблемы при использовании этого инструмента?
Перетаскивание проще всего будет самому написать используя эвенты mouseover и drag-евенты,
смысл в том, что при mouseover на ячейке карты проверять, можно ли расположить корабль и как-то подкрашивать ячейки, которые будут заполнены. Чтобы не париться с поворотом - можно предложить сразу выбрать, вертикальный или горизонтальный корабль хочется воткнуть. Т.е. в контейнере с выбором кораблей сделать оба варианта для каждого размера.
Что касается хранилища. Тут надо подумать, какие данные нужно хранить. Это очевидно координаты всех кораблей, текущая игровая ситуация, состояние полей противника для каждого игрока. Как хранить - вроде всё более-менее очевидно. Для noSQL я бы взял mongoDB, просто как самый простой и известный вариант. Можно хоть всю игровую сессию сваливать в один документ, и не особо заморачиваться с этим.
Свойство аргет как раз и вешается на элемент, хеш фрагмент которого присутствует в текущем URL.
Вашу задачу нужно решить через добавление своего класса при клике.
То есть - при клике снимаем класс со всех элементов, затем вешаем класс на нажатый элемент.
1. Не надо сжимать уже сжатые (.min) файлы.
2. Сжимайте вендоров отдельно от своих файлов, т.к. эти файлы будут меняться намного реже и как следствие будут браться из кеша браузера.
3. У вас jQuery 2 раза написан:
Немного не по теме, т.к. тяжелый, тянет с собой bootstrap и moment.js, но я в него влюбился с первого взгляда. Плюсы: momentjs имеет локализации из коробки, и кучу удобных функций для работы с датами. От бутстрапа можно попробовать избавиться выдрав нужные стили. Минусы очевидны: очень тяжелый. https://eonasdan.github.io/bootstrap-datetimepicker/ p.s. Если надумаете использовать - для moment js локали вручную нужные добавляйте, а не берите уже собранный со всеми локалями вариант, т.к. он оооочень тяжелый.
В наше время без нормального фронта ни одна идея не нужна, поищите друга какого-нибудь, если у вас лично такая неприязнь. А так вообще - большинство фркймворков для бэка имеют какие-то шаблонизаторы при себе, ими можно пользоваться, хотя возможности ваши будут ограничены в этом случае.