JavaScriptを書いて遊ぶストラテジーゲーム【yare.io】
画像はyare.ioのスタート画面 ©yare.io
はじめに
ゲームはキーボードやジョイスティックだけで操作するものではありません。プログラミングをしてキャラクタを動かすゲームも存在します。もちろん当教室でやっている「マインクラフトプログラミング」もそうですが、今日はプログラムでキャラクタを操作し遊べるゲームを紹介したいと思います。使用する言語はJavaScriptというwebで使われることの多い言語です。
yare.io
ゲーム内容
このゲームはJavaScriptでユニットを制御するリアルタイム2人用リアルタイム戦略ゲームです。相手の基地を破壊すれば勝ちです。

チュートリアル

最初にホームページを下にスクロールし、
「Lean the basics of the game in an interactive tutorial」をクリックします。

最初に左下に
s1.move(star_zxq.position)
と打ち込み、「UPDATE CODE」をおします。最初に「start_zxq」に移動するという意味ですね。星はエネルギー源なので必ず最初に星に移動する必要があるみたいです。
s1.energize(s1)
次にこのコードを入れて「UPDATE CODE」を押します。
s1にエネルギーをためるという意味です。
if (s1.energy == s1.energy_capacity) {
s1.move(base.position)
s1.energize(base)
}
次にこのコードを入れて保存です。
エネルギーをためて、もしエネルギーがまんたんになればベースポジションに移動して、ベースにエネルギーを入れるという意味です。
でもこの方法だと、うまくいかないので、コードを以下のように修正します。
if (s1.energy == s1.energy_capacity){
s1.set_mark("charging")
} else if (s1.energy == 0){
s1.set_mark("harvesting")
}
if (s1.mark == "charging"){
s1.move(base.position)
s1.energize(base)
} else {
s1.move(star_zxq.position)
s1.energize(s1)
}
これで効率よくエネルギーをためることができます。
エネルギーを蓄えると新しいスピリットができます。それを操作するために効率的な方法に変えましょう。今まではspiritが1つだったので、S1で命令していましたが、今回はforですべてのスピリットに命令を出しています。
for (spirit of my_spirits){
if (spirit.energy == spirit.energy_capacity){
spirit.set_mark("charging")
} else if (spirit.energy == 0){
spirit.set_mark("harvesting")
}
if (spirit.mark == "charging"){
spirit.move(base.position)
spirit.energize(base)
} else if (spirit.mark == "harvesting"){
spirit.move(star_zxq.position)
spirit.energize(spirit)
}
}

ここで敵が出てくるので、敵をやっつけるコードを書きましょう
if (base.sight.enemies.length > 0){
var invader = spirits[base.sight.enemies[0]]
if (s1.energy > 25) s1.set_mark("attacker")
if (s1.mark == "attacker") {
s1.move(invader.position)
s1.energize(invader)
}
}
最後は全部的に向かって攻撃に行きます。
for (spirit of my_spirits) {
spirit.move(enemy_base.position)
spirit.energize(enemy_base)
}
これでチュートリアルは終了です。
こちらにドキュメントがありますので、これから先はこのドキュメントを見て自分なりのプログラムを考えましょう。
まとめ
いかがだったでしょうか。ゲームをしながらプログラミングを楽しめたのではないでしょうか。
対人戦もあるので自分の戦略をプログラミングにする方法を学んでみてください。
またこれ以外にもプログラミングしながら楽しめるゲームはあるので、機会があれば紹介したいと思います。