【ライフゲーム】lifegame-coreの紹介
はじめに
この記事はGlobal Day of Coderetreat 2019 in Shizuokaに参加し、ライフゲームライブラリを作るに至るまでの話です。
Global Day of Coderetreat 2019 in Shizuoka
今年(2019年)の11/9にGlobal Day of Coderetreat 2019 in Shizuokaというイベントに参加してきました。
イベントの内容をざっと箇条書すると以下のとおりです。
- 数十分でペアプログラミングをし、お題に沿った作品を開発する
- 今年のお題は「ライフゲーム」
参加した感想としては、コミュニケーションを取りながらプログラミングすることが楽しいと思いました。
こういうハッカソンっぽいイベントはもっと欲しいと思いました。
このイベントをきっかけに「ライフゲームのライブラリを作ってみたいな」と思ったのでJavaScript/TypeScript向けにライフゲームのライブラリを作りました。
lifegame-core
リポジトリ:hota1024/lifegame-core
npm:lifegame-core
使用言語:TypeScript
実装の話→https://speakerdeck.com/hota1024/typescriptderaihugemuwozuo-tutemita
デモ
game.ts
import { LifeGame, ArrayWorld, BasicEnvironment, Cell, ConsoleWorldRenderer, CellState } from 'lifegame-core'
const game = new LifeGame(new ArrayWorld(20, 20, Cell), new BasicEnvironment()) // Create 20 x 20 world.
const renderer = new ConsoleWorldRenderer() // Create console world renderer.
// Random generate.
game.setEach(() => {
return Math.random() > 0.5 ? CellState.Dead : CellState.Living
})
// Tick function.
const tick = () => {
console.clear() // Clear console.
renderer.draw(game.world) // Draw.
game.forward() // Forward.
setTimeout(tick, 500)
}
// Start
tick()
最後に
import { LifeGame, ArrayWorld, BasicEnvironment, Cell, ConsoleWorldRenderer, CellState } from 'lifegame-core'
const game = new LifeGame(new ArrayWorld(20, 20, Cell), new BasicEnvironment()) // Create 20 x 20 world.
const renderer = new ConsoleWorldRenderer() // Create console world renderer.
// Random generate.
game.setEach(() => {
return Math.random() > 0.5 ? CellState.Dead : CellState.Living
})
// Tick function.
const tick = () => {
console.clear() // Clear console.
renderer.draw(game.world) // Draw.
game.forward() // Forward.
setTimeout(tick, 500)
}
// Start
tick()
こういうイベントに行くと何かを作りたくなるのでどんどんイベントに参加していきたいと思います。
Author And Source
この問題について(【ライフゲーム】lifegame-coreの紹介), 我々は、より多くの情報をここで見つけました https://qiita.com/hota1024/items/23ea0775d56deeb61d0e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .