çŸåšã®ããŒãžã§ã³ã§ã¯ããã¬ã€ã€ãŒã¯æ žæŠäºåŸã«éœåžéã移åãããã£ã©ãã³ãå¶åŸ¡ããŸãã ã»ããã®ããºãã¯é£æãçã¿ãæŸå°æ§ã€ã¢ãªã¯ãã©ããã³ã殺ããŸãã æ³¥æ£ã¯ãã£ã©ãã³ã远跡ãããéã®äžéšãçãããšãã§ããŸããç æŒ ã§ã¯ãæŸå°æ§ã®æªé¬Œã襲æè ããã®ä»ã®çè³ãæ»æã§ããŸãã
èšå®å šäœãäžçãããžãã¯ã¯èªç±ã«å€æŽã§ããŸãããœãŒã¹ã³ãŒããšã°ã©ãã£ãã¯ã¹ã¯ãããªãã¯ãã¡ã€ã³ãšããŠãã€ãŸããã³ããŒãšäœ¿çšã«å¶éãªãé åžãããŸãã
![](https://habrastorage.org/web/8dd/ea5/636/8ddea563615c4a37b96e68f6cd43094e.jpg)
ã²ãŒã æ©èœ
ã¬ã³ãžã£ãŒã¯ãé£çšãµããã³ãæŠåã®çŒ¶è©°ãèŠã€ãããããããŸããã ç æŒ ã§ã¯ãä»ã®æ è¡è ã®æ»äœãèŠã€ããããšãã§ããããããå°ãã®ãéãéããããšãã§ããŸãã è¿ã¥ããŠãããã£ã©ãã³ããé£ã¹ç©ããã©ã¢ã³ãè³Œå ¥ãããã人ãéã£ããããããšãã§ããŸãã ãããŠãããªãã¯ã«ãªã¹ãã§ããããæã£ãå Žåãè¿ã¥ããŠãããã©ã³ããæã«ã¯çè³ã«ããåå ããããšãã§ããŸãã åè«ã å®éãã²ãŒã ã«ã¯ãŸã ã«ãªã¹ãæ§ã¯ãªããã©ã³ãã ãªå®¶ã«ãã£ãŠãšãã¥ã¬ãŒããããŠããŸãã
å®éããã®ã²ãŒã ã¯ããã¹ãã²ãŒã ã®é²åã®æ¬¡ã®æ®µéã§ãããäžçå°å³äžã®åããã©ã³ãã ãªåºäŒããJavaScriptã«ã¢ãžã¥ãŒã«ãè¿œå ããæ©èœãè¿œå ããŸããã
æ©èœã¯ç°¡åã«æ¡åŒµã§ããã«ãªã¹ãæ§ããã®ä»ã®å®éã®åœ¹å²èŠå ã¯èªåã§è¿œå ã§ããŸãã ããã°ã©ãã³ã°ããããªãå Žåã§ããã¡ã¢åž³ã§äžé£ã®ã€ãã³ãã䜿çšããŠãã¡ã€ã«ãéããæ°ããã€ãã³ããè¿œå ãããããã©ã³ã¹ãå€æŽããããäžçãšè³éŒ»åœåç§ãå®å šã«æžãçŽãããããããšãã§ããŸãã ãŸãã¯ãç°ãªãææç³»ã®éã§å®å®è¹ãããŸãããªããïŒãã ããéè·¯ã暪åãå¯é£æ§ãµããã³ãæšãŠãå¿ èŠããããŸãïŒã
ãã®ã²ãŒã ã®ä»çµã¿ã¯éåžžã«ã·ã³ãã«ã§ããã®ã°ã©ãã£ã«ã«æ©èœã¯ãã€ã¢ãã°ãã€ã³ãžã±ãŒã¿ãŒãäžçå°å³äžã®åãã§ãã 圌女ã®åŒ·ã¿ã¯ãæãä¿¡ããããªãã»ã©ã®åéºãèšèã§è¡šçŸã§ããããã¹ãã²ãŒã ã®éæ³ã«ãããŸãã
ããã°ã©ã ã®äž»ãªã¢ã€ãã¢ãšããžãã¯
ã²ãŒã ã®åºæ¬çãªèãæ¹ã¯éåžžã«åçŽã§ã-ç¡éã«ãŒããéå§ãããã®å éšã§4ã€ã®åºæ¬æäœãå®è¡ãããŸãã
- ç¹å®ã®ãã€ã³ããžã®ç§»å
- æ¥ã®ã«ãŠã³ãããŠã³
- é£ç©æå
- èãå°ã§ç§ãã¡ãåŸ ã£ãŠããã€ãã³ãã®ç¢ºçãã§ãã¯
æåŸã®æäœã¯éåžžã«å ããããç®±ã§ããããããå°çãçè³ãæªé¬Œãæ»ãã æ è¡è ãšã®åºäŒããé£ã³åºãã§æãã€ãä»ã®ãã¹ãŠã®åéºããããŸãã
ããã¯ã©ãã§ããïŒ éåžžã«ã·ã³ãã«-åã€ãã³ãã¯ãã£ã©ãã³ãŸãã¯äžçã®æ°å€ãã©ã¡ãŒã¿ãŒãå€æŽãããã°ã«å ±åããã ãã§ãã ããã«éæ³ããããŸã-ãã©ã¡ãŒã¿ãŒã¯åãã§ãããŸããŸãããããŸã£ããç°ãªãçç±ãå ±åã§ããŸãã é£ã¹ç©ã®æ°åäœãæžãããŸããïŒ ãããã¯ãã©ããã®æ»æãæŸå°æ§éäžç©ããŸãã¯ç©ºè ¹ã®ãããŒã«ãŒã§ãã ãã©ã¹æ°åã®é£ç©ïŒ ããã§ãããªãã®äººã ã¯é£çšã®ãµããã³ãé端ã®éºè·¡ã§çºæãããæŠåã®çŒ¶è©°ããŸãã¯éã«æãããéŽåºã®çŽ æŽãããé©ã®ããŒããèŠã€ããŸããã
ç§ãå®éšãå§ããæåã®ããŒãžã§ã³ã¯ã説æããã¢ã«ãŽãªãºã ã®ããããããå³ã®ããã«èŠããŸããã
![](https://habrastorage.org/web/2b3/1e4/af7/2b31e4af719d48aa8ffa7c86c4c279f8.png)
ãã®ãããã¿ã€ããããªã¬ãŽã³ãã£ã©ãã³ã²ãŒã ã®ãªã¡ã€ã¯ãšããŠãã®ãããã¿ã€ããäœããŸããã
äžæ¬¡å ã®ãããã¿ã€ã-js13kGamesã®ãã£ã©ãã³
ç§ãèŠã€ãããã¥ãŒããªã¢ã«ã®ã²ãŒã ã¯1次å ã§ããããã£ã©ãã³ã¯1ã€ã®ãã€ã³ããé¢ããŠå¥ã®ãã€ã³ãã«ç§»åããŸããã éäžãã©ã³ãã ãªã€ãã³ããçè³ãå人ãšã®äŒåããããŸããã
![](https://habrastorage.org/web/959/64c/a93/95964ca934264198ae436b78493ad350.png)
ãã®ããŒãžã§ã³ã®ãã¬ãŒã€ãŒã¯éåžžã«éãããŠããã åºæ¬çã«ã圌ã¯ã€ãã³ããã°ãè³è³ããªããã°ãªããŸããã§ããã ã€ã³ã¿ã©ã¯ã·ã§ã³ã¯ãåºãå±±è³ãç»å Žãããšãã«ã®ã¿çºçããŸããã ããã«ããã¹ãŠã®ã€ãã³ãã®ç¢ºçã¯çããã1ã€ã®é åã«æ ŒçŽãããŠããŸããã
çµæãèŠããšãã²ãŒã ãå®éã®ãµã³ãããã¯ã¹ã«æ¡åŒµã§ããããšã«æ°ä»ããŸããã å¿ èŠãªããšã¯ãèªç±ãè¿œå ããã³ãŒããã¢ãžã¥ãŒã«åããã€ãã³ããç°ãªãã¢ãžã¥ãŒã«ã«é åžããããšã ãã§ããã ã³ãŒããã»ãŒå®å šã«äœãçŽãå¿ èŠããããŸããã
å€æŽå±¥æŽ
- åå©çšå¯èœãªæ -ã²ãŒã ã¯ç®æšã®éæã§æ¢ãŸããªã
- äžçãšéœåžã®2次å å°å³
- äžçã®ããäžã€ã®èšå®ã§ãããèµ€ç¢ã¯ãããŸãã
- çè³ã¯äº€æžãšé¢äžãã§ãã
- éœåžã«å°çãããšèªåçã«å£²è²·ãããè¿œå 補å
- ã¢ãžã¥ã©ãŒã·ã¹ãã -ãã©ã°ã€ã³ããŒã¹ã®ããžãã¯ãšäžé£ã®ã€ãã³ããå¥ã ã®ãã¡ã€ã«ã«
ãã£ã©ãã³ãšã³ãžã³ãšã¢ãŒããã¯ãã£
æ¢ã«è¿°ã¹ãããã«ããã®ã²ãŒã ã¯ãµãŒãããŒãã£ã®ã©ã€ãã©ãªã䜿çšããã«çŽç²ãªJavaScriptã§äœæãããŠããŸãïŒå¿ èŠã«å¿ããŠèªåã§è¿œå ã§ããŸãïŒã éåžžã®HTMLãšCSSã䜿çšããŠãäžçå°å³ãšã€ã³ã¿ãŒãã§ã€ã¹ã衚瀺ããŸãã ããããå€æŽããã«ã¯ãåºæ¬çãªDOMæäœãšåŸæ¥ã®document.getElementByIdæäœã䜿çšãããŸãã
ãã£ã©ãã³ã®ãã¬ã€ã€ãŒæ°ã衚瀺ããäŸ
this.view = {}; // DOM this.view.crew = document.getElementById('game-stat-crew'); // // ... this.view.crew.innerHTML = world.crew; // html
WorldState-äžçã®ã¢ãã«
ã²ãŒã ã®äžçã¯WorldStateã¯ã©ã¹ã§ãã ãã¹ãŠã®éèŠãªãã©ã¡ãŒã¿ãä¿åãããããžãã¯ã¯å«ãŸããŠããŸããã ãã©ã°ã€ã³ã®ãããããžãã¯ãåŸã§çµã³ãŸãã
function WorldState(stats) { this.day = 0; // , this.crew = stats.crew; // this.oxen = stats.oxen; // this.food = stats.food; // this.firepower = stats.firepower; // this.cargo = stats.cargo; // this.money = stats.money; // // , , // { day: 1, message: " ", goodness: Goodness.positive} this.log = []; // , this.caravan = { x: 0, y: 0}; this.from = {x: 0, y: 0}; this.to = {x: 0, y: 0}; this.distance = 0; // this.gameover = false; // gameover this.stop = false; // , this.uiLock = false; // }
ã²ãŒã -äžçã®åµé ãšã²ãŒã ãµã€ã¯ã«
ã²ãŒã ã«ãŒãã¯ãGameãªããžã§ã¯ãã«ãã£ãŠéå§ããã³å¶åŸ¡ãããŸãã åããªããžã§ã¯ããäžçãäœæããŸãã ãã©ã°ã€ã³ãã£ãŒã«ãã«æ³šæããŠãã ãã-ããã©ã«ãã§ã¯ç©ºã®é åã§ãã ã²ãŒã ã¯ãã©ã°ã€ã³ã«ã€ããŠäœãç¥ããŸãããã2ã€ã®ããšãé€ããŠ-åæåïŒäžçïŒåæåé¢æ°ãšæŽæ°æŽæ°é¢æ°ãå¿ èŠã§ãã
Game = { plugins: [], // , }; Game.init = function () { // // StartWorldState data this.world = new WorldState(StartWorldState); var i; for (i = 0; i < this.plugins.length; i++) { this.plugins[i].init(this.world); } }; // Game.addPlugin = function (plugin) { this.plugins.push(plugin); }; // Game.update = function () { if (this.world.gameover) return; // var i; for (i = 0; i < this.plugins.length; i++) { this.plugins[i].update(); } }; Game.resume = function () { this.interval = setInterval(this.update.bind(this), GameConstants.STEP_IN_MS); }; Game.stop = function () { clearInterval(this.interval); }; Game.restart = function () { this.init(); this.resume(); };
æ°ããã²ãŒã ãéå§ããã«ã¯ãGame.restarté¢æ°ãåŒã³åºãå¿ èŠããããŸãã ãã ãããããçºçããåã«ãäœããã®ãã©ã°ã€ã³ãè¿œå ããå¿ èŠããããŸããè¿œå ããªããšãã²ãŒã ãµã€ã¯ã«ãã¢ã€ãã«ç¶æ ã§ãã¬ã€ããå¿ èŠããããŸãã
é£ã¹ããçããã移åãã-CorePlugin
ãã£ã©ãã³ã®æãåºæ¬çãªã¢ã¯ã·ã§ã³-移åãæéã®ã«ãŠã³ããé£ã¹ç©ã®æå-ã¯ãCorePluginãªããžã§ã¯ãã«å®è£ ãããŠããŸãã
CorePluginãœãŒã¹ã³ãŒã
CorePlugin = {}; CorePlugin.init = function (world) { this.world = world; // world this.time = 0; // , this.dayDelta = GameConstants.STEP_IN_MS / GameConstants.DAY_IN_MS; // this.lastDay = -1; // this.speedDelta = Caravan.FULL_SPEED - Caravan.SLOW_SPEED; // }; CorePlugin.update = function () { if (this.world.stop) return; // - this.time += GameConstants.STEP_IN_MS; // this.world.day = Math.ceil(this.time / GameConstants.DAY_IN_MS); // , // , this.updateDistance(this.dayDelta, this.world); // if (this.lastDay < this.world.day) { this.consumeFood(this.world); this.lastDay = this.world.day; } }; // CorePlugin.consumeFood = function (world) { world.food -= world.crew * Caravan.FOOD_PER_PERSON; if (world.food < 0) { world.food = 0; } }; // CorePlugin.updateDistance = function (dayDelta, world) { var maxWeight = getCaravanMaxWeight(world); var weight = getCaravanWeight(world); // - Caravan.SLOW_SPEED // 0 - Caravan.FULL_SPEED var speed = Caravan.SLOW_SPEED + (this.speedDelta) * Math.max(0, 1 - weight/maxWeight); // , var distanceDelta = speed * dayDelta; // var dx = world.to.x - world.caravan.x; var dy = world.to.y - world.caravan.y; // - if(areNearPoints(world.caravan, world.to, Caravan.TOUCH_DISTANCE)){ world.stop = true; return; } // - // var angle = Math.atan2(dy, dx); world.caravan.x += Math.cos(angle) * distanceDelta; world.caravan.y += Math.sin(angle) * distanceDelta; world.distance += distanceDelta; }; // Game.addPlugin(CorePlugin);
ããã§ã¯ãã¹ãŠãåºæ¬ã§ãã ãŸããã²ãŒã ãéå§ããããšãinitãåŒã³åºãããŸããããã«ãããäžçã®ã¢ãã«ãžã®ãªã³ã¯ãä¿åã§ããŸãã 次ã«ãã²ãŒã ã«ãŒãã§updateãåŒã³åºããŸããããã¯ãã·ãªãŒãºãã·ãªã³ã³ãã¬ãŒãã®ãã£ã©ã¯ã¿ãŒã奜ãã§èšãããã«ãäžçãããè¯ãå€ããã§ãããã ããã¯åè«ã§ã-äžçã¯ããããæ¹åã«å€åããŸãã
åºæ¬çãªãã©ã°ã€ã³ã¯ãããªç§åäœã§æéãã«ãŠã³ãããããããæ¥æ°ã«å€æããŠãããè·é¢ãšé£ç³§åèãæŽæ°ããŸãã ååãšããŠããã©ã°ã€ã³ãªããžã§ã¯ãã«ã¯initïŒworldïŒããã³updateïŒïŒé¢æ°ãå«ããã ãã§ãäœã§ãã§ããŸãã ä»ã®HTML5ã²ãŒã ãåŒã³åºããããã€ã¢ãã°ããã¯ã¹ãäœæããããšãã§ããŸãã
ãã©ã°ã€ã³ãæ¥ç¶ããã«ã¯ãGameãªããžã§ã¯ãã®å®çŸ©ãšGame.restartïŒïŒã®æåã®åŒã³åºãã®éã«ãã®ã³ãŒããè¿œå ããå¿ èŠããããŸãã çŸåšindex.htmlã§è¡ãããŠããæ¹æ³ã«ã€ããŠïŒ
<script src="js/Game.js"></script> <!-- --> <script src="js/plugins/CorePlugin.js"></script> <!-- --> <script> Game.restart(); </script>
ãã£ã©ãã³ã²ãŒã ã®äœãæ¹
ããªããçµéšè±å¯ãªããã°ã©ããŒãªãããã€ãã³ãã®é åããã®åããšã©ã³ãã ãªéžæãååšãããµã€ã¯ã«ããšããã¢ã€ãã¢ããå§ããŠãã©ããªèšèªãã°ã©ãã£ãã¯ã¬ãã«ã§ããã®ââãããªããã¡ãã確å®ã«å®è£ ã§ããŸãã ç¹ã«æè¿ã®åºçç©ã«ã¯éåžžã«èå³æ·±ãã°ã©ãã£ã«ã«æ©èœãããããšã瀺ãããŠãããããbashã®ã²ãŒã ã§ããå®å šã«æ©èœãããšæããŸãã
JavaScriptã«ç²ŸéããŠããå Žåãåºæ¬çãªã¬ãã«ã§ãã£ãŠãããã®èšèªã§äœæããã²ãŒã ã®ãœãŒã¹ãããŠã³ããŒãããŠãèªç±ã«å€æŽããã³æ¹åã§ããŸãã é»æµãèªåã«åããªãå Žåã¯ãä»»æã®ã¢ãŒããã¯ãã£ã䜿çšã§ããŸãã ããããæãç°¡åãªãªãã·ã§ã³ã¯ãäžèšã®ååã«åŸã£ãŠå®è£ ããããã©ã°ã€ã³ãåã«è¿œå ããããšã§ãã
æ¢åã®ãã©ã°ã€ã³ã¯ãindex.htmlãããœãŒã¹ã³ãŒããåé€ããããã³ãŒãã®æåŸã«ããGame.addPluginïŒSomePluginïŒã§è¡ãã³ã¡ã³ãã¢ãŠãããããšã§ç¡å¹ã«ã§ããŸãã 圌ãã¯ãäºãã«ã€ããŠäœãç¥ãããåã«äžçã®ã¢ãã«ãŸãã¯ã²ãŒã ã®ã€ã³ã¿ãŒãã§ãŒã¹ãå€æŽããŸãã
ããŠãã©ã€ã¿ãŒã®æåŸã®ãªãã·ã§ã³-ããŒã¿ãã£ã¬ã¯ããªã®ãã¡ã€ã«ãéããã€ãã³ããšå®æ°ã®èª¬æãç·šéããã ãã§ãã ãããã¯åãJavaScriptãœãŒã¹ã§ãããç°¡åã«å€æŽã§ããŸãã ç¹ã«ããã¹ãã ããã蚌æããããã«ãçŸåšã®ããŒãžã§ã³ã§ä»ã®ãã©ã°ã€ã³ãã©ã®ããã«é 眮ãããŠããããç°¡åã«èª¬æããŸãã
ã©ã³ãã ã€ãã³ã
ãã¹ãŠã®ããªããã£ãã©ã³ãã ã€ãã³ãã¯ã次ã®åœ¢åŒã®å€æ°RandomEventsã®data / RandomEvents.jsãã¡ã€ã«ã«ãããŸãã
var RandomEvents = [ { goodness: Goodness.negative, stat: 'crew', value: -4, text: ' ! : -$1' }, { goodness: Goodness.negative, stat: 'food', value: -10, text: ' . : -$1' }, { goodness: Goodness.positive, stat: 'money', value: 15, text: ' . . : +$1' }, { goodness: Goodness.positive, stat: 'crew', value: 2, text: ' , . : +$1' },
ã©ã³ãã ã€ãã³ããªããžã§ã¯ãã¯äžæ¬åŒ§ã§å²ãŸããŠããŸãã ãã®äŸã§ã¯ã4ã€ã®ãªããžã§ã¯ãã®ã¿ãåŒçšããŸããããäžè¬çã«ã¯ãã®æ°ã¯äœã§ãããŸããŸããã ã€ãã³ãã®æ°ãå¢ãããšãç¹å®ã®ã€ãã³ããèœã¡ãå¯èœæ§ãäœããªãããšã«æ³šæããŠãã ããã
æåã®ãã£ãŒã«ã-è¯ã-ã¯ããã°å ã®ã¡ãã»ãŒãžã®ããžãã£ãããã¬ãã£ããããã³ãã¥ãŒãã©ã«ã«ã©ãŒãæå³ããŸãã 2çªç®ã®ãã£ãŒã«ãstatã«ã¯ãå€æŽããå¿ èŠãããWorldStateãã©ã¡ãŒã¿ãŒã®ååãå«ãŸããŠããŸãã å€ã¯ããã®ãã©ã¡ãŒã¿ãŒãå€æŽããå¹³åå€ã§ãã æåŸã®ãã£ãŒã«ã-äœãèµ·ãã£ããã説æããä»»æã®ããã¹ããå«ãå¿ èŠããããŸãã $ 1èšå·ã®ä»£ããã«ãããã¹ãã¯ã²ãŒã ã«è¡šç€ºããããã©ã¡ãŒã¿ãŒã®å®éã®å€æŽã«çœ®ãæããããŸãã
RandomEventPluginãªããžã§ã¯ãã§ã©ã³ãã ã€ãã³ãã®çºçããã§ãã¯ããããã°ã®ãã¬ãŒã€ãŒã®å€èŠ³ãåã°ããŸãã
![](https://habrastorage.org/web/97a/8b2/826/97a8b28265474f41a6a073a24b0826c8.png)
æåŸã®æ³šæïŒRandomEvents.jsã«ã¯ãã©ã³ãã ã€ãã³ãã®çºçã®ç¢ºçå®æ°ãæã€å€æ°ããããŸãã ããã¯ããã£ã©ãã³ã®1è©Šåãããã®å¹³åã€ãã³ãæ°ãšããŠå®çŸ©ãããŸãã ããŸããŸãªå€ãè©ŠããŠã¿ããšãããã©ã®ãããªæ¹æ³ã§ã圱é¿ãåããªãã©ã³ãã ãªã€ãã³ããå€ãããŠãéåžžã«ã€ã©ã€ã©ããããšãããããŸããã 察話æ§ã®æ¬ åŠã¯ããããã®åçŽãªã€ãã³ãã®äž»ãªæ¬ ç¹ã§ãã ã ãããããç§ã¯é ãæ»ããä»ã®ãã©ã°ã€ã³ããåŒã³åºãããšãã§ãããŠãããŒãµã«ãã€ã¢ãã°ã¢ãžã¥ãŒã«ãäœæããããšã«ããŸããã
ãã€ã¢ãã°ã®äœæãŸãã¯ç·šéæ¹æ³
DialogWindowãªããžã§ã¯ãã¯ããã€ã¢ãã°ã·ã¹ãã ãæ åœããŸãã ãœãŒã¹ã³ãŒããèŠããšãHTMLã³ãŒãå ã§å¿ èŠãªdivèŠçŽ ãèŠã€ããäžè¬çãªããŠã¹ã¯ãªãã¯ãã³ãã©ãŒããã€ã³ããããã¥ãŒã¿ã³ãã衚瀺ãããŸãã ãã®ãªããžã§ã¯ãã«æ°ãããã€ã¢ãã°ã衚瀺ããããã«äŸé Œãããšããã€ã¢ãã°ã®é åãæž¡ãããŸãã ãŸããç¹å®ã®éžæè¢ãã¯ãªãã¯ããããã®ãã³ãã©ãŒã¯ã次ã®åœ¢åŒã®ç¹å®ã®ãã€ã¢ãã°ã§èª¬æãããŠããŸãã
var DeathDialogs = { "start": { icon: "images/pic_death.jpg", // url title: " ", // desc: "", // desc_action: function (world, rule) { // var desc = " : "+rule.text+". "+Math.floor(world.distance) + " "+Math.floor(world.money) + " "; desc += " , ?" return desc; }, choices:[ // { text: ' ', // action: function () { return "stop"; } // , } ] }, };
æ»ã®ãã€ã¢ãã°ã«ã¯ããéå§ããã£ãŒã«ããšåŒã°ãããªãã·ã§ã³ã1ã€ãããããŸããã ãããããã®ãããªãªãã·ã§ã³ã¯ç¡éã«ãããŸãã ããšãã°ãçè³ã®å¯Ÿè©±ã§ã¯ã12ã®ãã©ãŒã¯ãå®è£ ããŸããã ãããã®éã®ç§»è¡ã¯ã©ãã§ããïŒ showé¢æ°ãåŒã³åºããšããŠãããŒãµã«DialogWindowãªããžã§ã¯ãã¯è»¢éããããã€ã¢ãã°ã®ãªã¹ããä¿åãããéå§ããã£ãŒã«ãã§å®çŸ©ããããã€ã¢ãã°ã衚瀺ããŸãã
次ã®ãã€ã¢ãã°ã衚瀺ãããšãããã®éžæè¢é åã¯ãéžæçªå·ãæžã蟌ãŸããå±æ§ã«ãã¿ã³ã®ã»ãããšããŠè¡šç€ºãããŸãã ãŸããéžæè¢ããã®ãã¹ãŠã®ã¢ã¯ã·ã§ã³é¢æ°ã¯ãdialogActionsã®å éšé åã«æžã蟌ãŸããŸãã éžæãã¿ã³ãã¯ãªãã¯ãããšããŠãããŒãµã«ãã³ãã©ãŒã¯dialogActionsã®é¢æ°ã®æ°ã決å®ããŠåŒã³åºãããã®ãã€ã¢ãã°ã§äœ¿çšããããšã«ãã2ã€ã®åŒæ°ãéäžã§æž¡ããŸãã ãããã£ãŠãå±±è³ãšã®å¯Ÿè©±ã§ã¯ãç¹å®ã®éžæè¢ã®ã¢ã¯ã·ã§ã³é¢æ°ã¯ãäžçã®ç¶æ ïŒäžçïŒãšçŸåšã®å±±è³ã®èª¬æïŒå±±è³ïŒãåãå ¥ããããšãã§ããŸãã ãããŠãä»ã®ãã©ã°ã€ã³ãžã®ãã€ã¢ãã°ã§-ä»ã®ãã©ã¡ãŒã¿ãŒã ã¯ããç¹ã«éžæã®æå³ãã²ãŒã ãŠã£ã¶ãŒãã®ããã«åã«å¯Ÿè©±ãçµäºããããšã§ããå Žåãããããªãã§ãå¯èœã§ãã
![](https://habrastorage.org/web/754/640/18a/75464018ac404455bc0382355253a79b.png)
ãã€ã¢ãã°ãçµäºãããã¬ã€ã€ãŒãäžçå°å³ã«æ»ãã«ã¯ãchoiceãªããžã§ã¯ãã®ã¢ã¯ã·ã§ã³é¢æ°ãäºçŽæžã¿ã®ã¿ã°ãfinishãããexitãããstopãã®ãããããè¿ãå¿ èŠããããŸãã äžè¬ã«ããã®é¢æ°ã®æå³ã¯ã次ã®ãã©ãŒã¯ã®ååãè¿ãããšã§ãã ãããããã®å€§äºãªåž°éã®åã«ãããžãã¯ã次ã®åå²ãéžæã§ããèšç®ããå®è¡ãããæŠããããããã¯ãæããããæ¿å ¥ããããšãã§ããŸãã
ãã©ã°ã€ã³ãããã€ã¢ãã°ãåŒã³åºãæ¹æ³
åäœäžã®ãã©ã°ã€ã³ã®æŽæ°ã®ä»»æã®æç¹ã§ã次ã®ããã«ãã€ã¢ãã°ãåŒã³åºãããšãã§ããŸãã
// ... - update - // , world.stop = true; // DeathDialogs // world rule DialogWindow.show(DeathDialogs, world, rule, this);
ãŸããonDialogCloseé¢æ°ã¯ãã©ã°ã€ã³ã«å®è£ ããå¿ èŠããããŸã-ãã®ã³ãŒã«ããã¯ã¯ãã€ã¢ãã°ãéããåŸã«åŒã³åºãããŸãã æ»ã®å§ãŸãã決å®ãããã©ã°ã€ã³ã®äŸïŒ
DeathCheck.onDialogClose = function () { Game.restart(); };
æ¢åã®ãã©ã°ã€ã³ã®ç°¡åãªèª¬æ
ã²ãŒã ã®çŸåšã®ããŒãžã§ã³ã§ã¯ã次ã®ãã©ã°ã€ã³ã䜿çšãããŠããŸãã
Map2DPlugin-ãããäžã§ãã£ã©ãã³ã移åããŸãã index.htmlã§topãã©ã¡ãŒã¿ãŒãšleftãã©ã¡ãŒã¿ãŒãæã€éåžžã®divãšããŠæå®ãããŠããéœåžãæ€çŽ¢ããŸãã ããã§ãéœåžãžã®å°çã決å®ãããèªåååŒãè¡ãããŸãã
ShopPlugin-ã©ã³ãã ã«æ¥è¿ãããã£ã©ãã³ãŸãã¯ä»ã®å人ãçæããŸãã é£æããã©ããã³ãè³Œå ¥ããmercå µãéãããšãã§ããŸãã ãŸãã¯äœãè²·ããã«æ¬¡ã«é²ã¿ãŸãã
BanditPlugin-å±±è³ãšã®äŒè°ãšå¯Ÿè©±ã ãã®ãã©ã°ã€ã³ã®éäžã§ãç°¡åãªãã¥ãŒããªã¢ã«ãäœæãããšããã¢ã€ãã¢ã«è奮ããŸããã ã·ã³ãã«ã§ããŸããããŸããã§ãããããããªããã çè³ã¯ããªãã«éãããšãã§ããŸãããããŠåœŒããæ»ã«é£¢ããŠãããªãã°ãããªãããéã®ããã«éãããšãæåŠãããªãã°ã圌ãã¯ç¡æã§åœŒããåãå ¥ããããããªãã«é Œã¿ãŸãã
DropPlugin-ãªãŒããŒããŒããã©ã°ã€ã³ã ãªã¬ãŽã³ã®ãã£ã©ãã³ã«é¢ãããã¥ãŒããªã¢ã«ã®ãããã¿ã€ãã§ã¯ãã²ãŒã èªäœãèªåçã«ç©ãèœãšããŸããããŸãæŠåšã次ã«é£ã¹ç©ã§ãã ããã¯éåžžã«å¿«é©ã§äžå¯è§£ã§ã¯ãããŸããã§ãã-ã©ã®ããã«ããã§ããïŒ çµå±ãæŠåšã§é£ã¹ç©ãæã«å ¥ããããšãã§ãããæãèã§æµã殺ãããšã¯ã§ããŸãããïŒcïŒFallout 4ããã®æåãªã¹ããªãŒã ã®1ã€ã§ããã ããç§ã¯ãåã«äœãåãé€ãããéžæãã察話ãããããšã«ããŸããã
DeathCheckã¯ãã¹ãã§ãã¯ãã©ã°ã€ã³ã§ãã ããã¯ãŸã éåžžã«ã·ã³ãã«ãªãã©ã°ã€ã³ã§ããã確ãã«è³ªåããããããããŸããã ããšãã°ããªãé£ã¹ç©ãçµãããšããã«æ»ã¬ã®ã§ããïŒ ããŠãç§ã¯ãã®è³ªåã«èªåã§çããããšãææ¡ããŸã-ãã¹ãŠãããŸãããã°æ¬¡ã®ããŒãžã§ã³ãåŸ ã¡ãŸãã
WorldViewPluginã¯ã€ã³ã¿ãŒãã§ã€ã¹ãã©ã°ã€ã³ã§ãã ã€ã³ã¿ãŒãã§ã€ã¹ãæŽæ°ããã ãã§ãäžçã®çŸåšã®ãã©ã¡ãŒã¿ãŒã衚瀺ãããŸãã ããããããã®èãã¯èª°ãã«ãšã£ãŠå¥åŠã«æããŸã-æŽæ°ãµã€ã¯ã«ã®å€æ°ã®å€åãç£èŠããç¬ç«ããã€ã³ã¿ãŒãã§ã€ã¹ãªããžã§ã¯ãã ãããããã®å¥åŠãªã¢ã€ãã¢ã®ãããã§ãå€æ°ã®updateUiãåãé€ããç°ãªãããžãã¯ã®ãããã¯éã®ç¬ç«æ§ãç²åŸããŸããã
çŸåšã®ã²ãŒã ãšãã©ã³ã¹ã«é¢ããããã€ãã®ãã³ã
çŸåšãéèŠãªãã©ã¡ãŒã¿ã¯é£ç©ã®éã§ãã ä»ã®ãã£ã©ãã³ãšã®äŒè°ã§è£å ããããšãã§ããŸã-çºçããå Žåãæ倧éã«è³Œå ¥ããå¿ èŠããããŸãã ãã¡ãããéœåžã§è³Œå ¥ãè¿œå ããã®ãè³¢æã§ããããããããŸã§ã®ãšããã圌ãã¯çãé£æã®äžè¶³ã«èŠããã§ãããšä»®å®ããŸãã
2çªç®ã®éèŠãªãã©ã¡ãŒã¿ãŒã¯ããã£ã©ãã³ã®äººæ°ã§ãã 圌ãã¯ããããã¹ãã§ãã ãã¹ãŠã®äººãããã¯ã¢ãŠããããå Žå-ã²ãŒã ã¯çµäºããŸãã
ãã©ã³ã¹ã®ãã¹ãŠã®å€åã¯ãé£ç©ãžã®ãã¡ãŒãžãšäººæ°ãå¢å ãããã²ãŒã ã®è€éããåçã«å¢å ãããŸãã
ãªã³ã¯ãšé åž
pixabay.orgãšopengameart.orgã®Creative Common 0ã©ã€ã»ã³ã¹ã§ã°ã©ãã£ãã¯ã¹ã䜿çšãããããã°ã©ãã£ãã¯ã¹ãšã³ãŒãã®äž¡æ¹ããããã®æ¡ä»¶äžã§é åžãããŸã-ã³ããŒãšäœ¿çšã¯ç¡æã§ã矩åã¯ãããŸããã
GitHubãããœãŒã¹ã³ãŒããååŸãããããã¡ããã zipã¢ãŒã«ã€ããããŠã³ããŒãã§ããŸã ã ããé »ç¹ã«æŽæ°ããããããæåã®ãªãã·ã§ã³ãæãŸããã§ãã
ãã¹ãã«ã¯ãããŒã«ã«ã³ã³ãã¥ãŒã¿ãŒäžã§ãããã©ãŠã¶ãŒã§index.htmlãéãã ãã§ååã§ãããµãŒããŒãå¿ èŠãšããæ©èœã¯ããã§äœ¿çšãããŸããã
ã©ã€ããã«ãã²ãŒã ã¯ããã§ãã¹ãã§ããŸã ã ã¬ã€ã¢ãŠãã¯ãã¢ãã€ã«ç»é¢çšã§ã¯ãªããéåžžã®ã¢ãã¿ãŒçšã«èšèšãããŠããŸãã