【PCゲーム】Screeps: Arenaの遊び方(チュートリアル「First attack」)を日本語に!和訳して解説!(その3)

Screeps:Arena開始画面JavaScript

前回はmoveTo()メソッドの使い方のチュートリアルを紹介しました。過去の記事は下記になりますので参考にしてみてください。

それでは3番目のチュートリアル「First attack」を日本語にしていきましょう。

各チュートリアルは別途記事にしてありますので、他のチュートリアルは下記を参考にしてください。

  1. Loop and import(ループとインポート)
  2. Simple move(単純な移動)
  3. First attack(初めての攻撃)
  4. Creeps bodies(クリープの各パーツ)
  5. Store and transfer(エネルギーのストアと転送)
  6. Terrain(地形)
  7. Spawn creeps(クリープを生成)
  8. Harvest energy(エネルギーの採取)
  9. Construction(工事・建築)
  10. Final test(最終試験)

First attack ーはじめての攻撃ー

ScreepsArenaはマルチプレイヤーPvP(著者注:Player versus playerの略)です。自機は対戦相手のクリープと戦うのでそれを学びましょう。

どのクリープがあなたのものであるかを判断する方法は? 指定された条件の配列の要素を返す標準のJavaScriptのArray.filterまたはArray.findメソッドを使用します。Creepオブジェクトのmyプロパティに基づいて判断します。

import { getObjectsByPrototype } from '/game/utils';
import { Creep } from '/game/prototypes';

export function loop() {
    var myCreep = getObjectsByPrototype(Creep).find(creep => creep.my);
    var enemyCreep = getObjectsByPrototype(Creep).find(creep => !creep.my);
}
著者
著者

Creepオブジェクト(配列)をfindで回して、自機はcreep.myで、敵は!creep.myで表すんですね。「!」は否定なんで、自機以外という意味です。

これで、攻撃方法を使用して敵を倒すことができます。 ターゲットに到達できないときに戻るため、最初にmoveToを使用する必要があります。

if(myCreep.attack(enemyCreep) == ERR_NOT_IN_RANGE) {
    myCreep.moveTo(enemyCreep);
}

目的:敵のクリープを倒します。

サンプルコード

import { getObjectsByPrototype } from '/game/utils';
import { Creep } from '/game/prototypes';
import { ERR_NOT_IN_RANGE } from '/game/constants';

export function loop() {
    var myCreep = getObjectsByPrototype(Creep).find(creep => creep.my);
    var enemyCreep = getObjectsByPrototype(Creep).find(creep => !creep.my);
    if(myCreep.attack(enemyCreep) == ERR_NOT_IN_RANGE) {
        myCreep.moveTo(enemyCreep);
    }
}

まとめ

  • 自機はgetObjectsByPrototype(Creep).find(creep => creep.my)のようにmyプロパティで判定
  • 敵は!creep.myで判定
  • attack(ターゲット)で敵を攻撃。範囲外かの判定は定数ERR_NOT_IN_RANGEで測定
  • ERR_NOT_IN_RANGEは/game/constantsからimportする必要あり
タイトルとURLをコピーしました