関数を作成する (Python)

関数を作成する

> チュートリアル

関数を作る

ここまでに、いくつかの関数やメソッド(setWeapon、moveToward など)を使ってきました。次の書き方で、自分だけの関数 を作ることもできます:

return キーワードは省略可能で、関数に値を返させます。前の例では、関数はパラメータ x と y を受け取り、その合計 x + y を返します。

Python では、関数は 使う前に定義しておく 必要があります。そのため、関数はファイルの先頭、メインのコードより前に書きます。

canFinish(enemy) 関数を作る

前に書いた、敵に「とどめ」を刺せるかどうかの条件のコードはかなり長く、再利用しにくいので、関数にまとめましょう。

敵を受け取り、とどめを刺せるかどうかをブール値で返す、自分だけの関数 canFinish(enemy) を作ります。

とどめのコードを関数の中にコピーして、次のように書きます:

これで、メインのコードで canFinish 関数を使えるようになり、ずっとシンプルに書けます:

知っていましたか? 何度も出てくるコードを 1 つの関数にまとめることを、共通化(ファクタリング)と呼びます。

getClosestCellToUseWeapon(enemy) 関数を作る

お気づきかもしれませんが、機関銃や、のちに手に入るレーザーを使うには、敵と一直線上に並ぶ必要があります。

つまり、拳銃のときのように敵に向かって移動するだけではなく、武器を使えるマスまで行かなければなりません。

そこで、me.weaponCells(enemy) メソッドを使います。このメソッドは、対象に武器を使えるマスをすべて返します。その中から 1 つ、一番近いマスを選びましょう!

getClosestCellToUseWeapon 関数を作り、for in ループで自分からの距離が一番短いマスを探します:

これを使って、移動の部分を置き換えます:

地形やマスを見やすくするには、戦闘中に T キーを押して戦術モードを使ってみましょう。

次の章からはもっと難しい内容に取り組むので、ここまでに学んだ関数や概念をじっくり試してみてください。これだけでも、ランキングを駆け上がるには十分です!

❓ クイズ

数値の 2 乗を正しく返す関数はどれですか?

def square(x): return x * x def square(x): x * x def square(): return x * x function square(x): return x * x

リストの最大値を求める関数はどれですか?

def maximum(my_list): maxi = -99999 for e in my_list: if e > maxi: maxi = e return maxi def maximum(my_list): maxi = 99999 for e in my_list: if e < maxi: maxi = e return maxi def maximum(my_list): maxi = 99999 for e in my_list: if e > maxi: maxi = e return maxi def maximum(my_list): maxi = -99999 for e in my_list: if e < maxi: maxi = e return maxi

完成した AI