Долго, сложно и невыносимо интересно.
Долго, сложно и невыносимо интересно.
Но никто из них не доделывает до конца и не стремится объединяться
const me = {name: 'Alex', left: 0}
...
setInterval(() => update(), 1000)
...
window.addEventListener('keyup', () => me.left++)
...
requestAnimationFrame(() => draw())
const me = {name: 'Alex', left: 0}
...
setInterval(() => update(), 1000)
...
window.addEventListener('keyup', () => me.left++)
...
requestAnimationFrame(() => draw())
const me = {name: 'Alex', left: 0}
...
setInterval(() => update(), 1000)
...
window.addEventListener('keyup', () => me.left++)
...
requestAnimationFrame(() => draw())
const me = {name: 'Alex', left: 0}
...
setInterval(() => update(), 1000)
...
window.addEventListener('keyup', () => me.left++)
...
requestAnimationFrame(() => draw())
const me = {name: 'Alex', left: 0}
...
setInterval(() => update(), 1000)
...
window.addEventListener('keyup', () => me.left++)
...
requestAnimationFrame(() => draw())
Карты, персонажи, навыки, умения...
Это набор библиотек и утилит, для работы с картами
* а точнее — тайлы
const map = [
[{...}, {...}, {...}, {...}, {...}, {...}],
[{...}, {...}, {...}, {...}, {...}, {...}],
[{...}, {...}, {...}, {...}, {...}, {...}],
...
]
const tile = map[1][3]
Подробнее об этом в книге Game Programming Patterns
for (let i = 0; i < 9000; i++) {
result.push(items[i])
}
for (let y = 0; y < 9000; y++) {
for (let x = 0; x < 9000; x++) {
result.push(items[x][y])
}
}
mapGrid.forEach((x, y) => {
result.push(itemsGrid.get(x, y))
}
например в плоском массиве
[123, 343, 35, 0, 391 ... ]
или вообще в ArrayBuffer
[01001101010100110001010101010]
new Promise(resolve => {
setTimeout(() => {
// расчеты для анимации
requestAnimationFrame(() => /* рисование */)
resolve()
})
})
startAnimation()
.then(step)
.then(step)
.then(step)
.then(step)
.then(doAction)
.then(endAnimation)
AsyncSequence([
startAnimation, [
step
step
...
doAction],
endAnimation
])
Они позволяют мыслить на новом уровне, решать все более сложные задачи, в коде читается бизнес-логика
const mapGrid = MapModel.grid
const activeHero = player.getSelectedHero()
const mainTown = player.getMainTown()
const path = AStar.getPath(mapGrid, activeHero, mainTown)
Лишь бы работало
// TODO: переписать на графы, когда будет время
while (hasChunks) { ... }
// TODO: создать отдельные классы для этого
function Knight(id, name) { ... }
// TODO: тут почему-то тормозит
var f = getFactorial(23423423)
const okButton = new Buttton(0, 10, 'Ok')
okButton.addEventListener('click', () => { ... })
const cancellButton = new Buttton(0, 10, 'Cancel')
cancellButton.addEventListener('click', () => { ... })
const okButton = new Buttton({
left: 0,
top: 10,
onClick: () => { ... }
})
const cancellButton = new Buttton({...})
[
{
id: 'okButton',
options: {
left: 0,
top: 10,
onClick: () => { ... }
},
},
...
]
<button id="okButton"
left="0"
top="10"
onClick="{doSomething()}"
/>
При сборке он собирается в JSON с предыдущего слайда
<group id="main" ... >
<group id="header" ... >
<text-block ... />
<button ... />
</group>
<group id="footer" ... >
<any-component ... />
<button ... />
</group>
</group>
При сборке он собирается в JSON с предыдущего слайда