[ Русский GameDev ] Пишу Инвентарь для своей игры
Щас я работаю над своей игрой Darkest Age для которой я щас пишу функциональный инвентарь для хранения разного вида лута, расходников и разного вида экипировки персонажа.
Щас я работаю над своей игрой Darkest Age для которой я щас пишу функциональный инвентарь для хранения разного вида лута, расходников и разного вида экипировки персонажа.
1. Напишите функция вычисления последовательности фибоначи
function fib(n) {
// TODO: implement
}
fib(5); // [0, 1, 1, 2, 3]
fib(7); // [0, 1, 1, 2, 3, 5, 8]
fib(11);// [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
2. Напишите функцию, которая будет проверять на “глубокое” равенство 2 входящих параметра
function deepEqual(a, b) {
// TODO: implement
}
const source = {a: 1, b: {c: 1}}
const test1 = {a: 1, b: {c: 1}}
const test2 = {a: 1, b: {c: 2}}
const test3 = {a: 1, c: {b: 1}}
const test4 = {a: 1, c: 2}
const test5 = {c: 2, a: 1}
const test6 = {a: 1, b: {c: {d: 5}}}
console.log(deepEqual(source, test1)) // -> true
console.log(deepEqual(source, test2)) // -> false
console.log(deepEqual(source, test3)) // -> false
console.log(deepEqual(source, test4)) // -> false
console.log(deepEqual(source, test5)) // -> false
console.log(deepEqual(source, test6)) // -> false
3. Напишите функцию, которая принимает два аргумента:
- Массив из ЦЕЛЫХ ПОЛОЖИТЕЛЬНЫХ ЧИСЕЛ и сумму в виде целого числа.
- Функция должна вернуть все ПОДПОСЛЕДОВАТЕЛЬНОСТИ чисел массива из аргумента, сумма которых равна числу, которое приходит вторым аргументом.
- Если решения нет, вернуть пустой массив.
function findSum(array, targetSum) {
//TODO: implement
}
array = [1, 5, 4, 1, 11, 1, 10, 9, 1, 9, 6, 4, 10]
targetSum = 10
findSum(array, targetSum)
// [ [ 1, 5, 4 ], [ 5, 4, 1 ], [ 10 ], [ 9, 1 ], [ 1, 9 ], [ 6, 4 ], [ 10 ]]
Задача
Есть API, который в ответ на запрос отдает json со списком фреймворков и их описанием. Необходимо на его основе отрендерить карточки.
Прототип
Алгоритм
- Получить список;
- Обработать список;
- Отрендерить в HTML.
1. Получить список
Для данной статьи я подготовил тестовые данные, которые можно получить по адресу:
https://private-531a0-vadimfilimonovblog.apiary-mock.com/fra...
Чтобы сделать HTTP запрос — используйте метод fetch:
fetch("https://private-531a0-vadimfilimonovblog.apiary-mock.com/fra...")
2. Обработать список
Вот как выглядит json, который мы получаем:
{
"success": true,
"list": [
{
"title": "React",
"text": "React is an open-source...
Напишем функцию buildHTML, которая на вход будет принимать JSON, а отдавать строку, которую мы в будущем используем как HTML:
// HTTP запрос
fetch("https://private-531a0-vadimfilimonovblog.apiary-mock.com/fra...")
// переводим ответ в json
.then(response => response.json())
// конвертируем в html
.then(buildHTML)
Определение функции:
const buildHTML = ({ list }) =>
list.map(({ title, text }) => (`
<div>
<h2>${title}</h2>
<p>${text}</p>
</div>
`)).join("");
3. Отрендерить в HTML
fetch("https://private-531a0-vadimfilimonovblog.apiary-mock.com/fra...")
.then(response => response.json())
.then(buildHTML)
.then(render); // полученный результат передает в функцию render
В файле HTML создадим пустой контейнер, куда будем вставлять карточки:
<div class="container"></div>
https://developer.mozilla.org/en-US/docs/Web/API/Element/inn... функции render сводится лишь к использованию свойства innerHTML:
const render = (html) => {
const container = document.querySelector('.container');
container.innerHTML = html;
};
Результат
Полную версию кода смотрите на codepen.
Мы постарались сделать каждый город, с которого начинается еженедельный заед в нашей новой игре, по-настоящему уникальным. Оценить можно на странице совместной игры Torero и Пикабу.
Реклама АО «Кордиант», ИНН 7601001509
Давайте представим, что у нас есть компонент card:
// Файл card.scss
.card {
// стили
}
И компонент container:
// Файл container.scss
.container {
// стили
}
Теперь нам нужно написать стили для card, который находится внутри container.
Тезис
Если мы пишем стили для компонента, то они должны находится в файле этого компонента.
В нашем случае это — card.
Пример
Воспользуемся селектором расширения SASS:
// Файл card.scss
.card {
// стили
%container & {
// еще стили
}
}
// Файл container.scss
.container {
@extend %container;
// стили
}
Здесь я для класса container задал одноименный extend.
А потом дописал стили в card.
Это скомпилируется примерно в такой css:
.card {
// стили
}
.container {
// стили
}
.container .card {
// стили
}
@extend я использовал для того чтобы была возможность быстро переименовать класс, но можно и без него.
Альтернативный пример
// Файл card.scss
.card {
// стили
.container & {
// еще стили
}
}
Минус этого подхода в том, что если класс container изменится, то его придется править в нескольких местах.
А плюс — не требуется использовать extend или sass.
Антипример
Иногда можно увидеть как разработчик пишет так:
// Файл container.scss
.container {
// стили
.card {
// еще стили
}
}
Это приводит к тому, что стили для card находятся в разных местах. И это становится большой проблемой, когда таких мест становится несколько:
// Файл container.scss
.container {
// стили
.card {
// еще стили
}
}
// Файл main.scss
.main {
// стили
.card {
// еще стили
}
}
// Файл wrapper.scss
.wrapper {
// стили
.card {
// еще стили
}
}
Еще демо можно посмотреть в кодпене.
Вобщем, хочу создать игру, которая полностью будет 2д, однако по сути это игра чисто из кнопок, где нет персонажей, которыми можно будет управлять, а только лишь кнопки в виде недвижимых обьектов. Обьяснять я умею плохо, но впрочем вот на что это должно быть похоже(хотя может и в пиксельном стиле шибану):