CHaser解説(Python編)

資料

用語集

本書に登場する用語を、カテゴリごとにまとめました。「初出」には、その用語が最初に詳しく説明されている部と章を示しています。

CHaserのルール用語

  • CHaser(チェイサー):対戦型のゲームプラットフォーム上で動作する自律型プログラムによる競技(第1部1章)。
  • フィールド:対戦が行われるマス目(グリッド)状の盤面(第1部2章)。
  • Cool・Hot:先攻・後攻を担当する2人のプレイヤーの呼び名(第1部2章)。
  • アイテム(Item):取得するとスコアが上がるマス。取得した瞬間にブロックへ変わる(第1部2章・4章)。
  • ブロック(Block):通り抜けができないマス。攻撃や妨害にも使える(第1部2章)。
  • Floor:何もない空きマス(第2部2章)。
  • Enemy:相手プレイヤーを表す値(第2部2章)。
  • アタック勝ち:相手のいるマスにブロックを設置して勝利すること(第1部5章)。
  • 衝突:自分がブロックのマスに移動しようとして負けること(第1部5章)。
  • 閉じ込め勝ち:相手を上下左右すべてブロックで囲んで勝利すること(第1部5章)。
  • 自縛(じばく):自分自身がブロックに囲まれて身動きが取れなくなり負けること(第1部5章)。
  • ターン:CoolとHotが交互に1手ずつ行動する対戦の基本単位。1回の番で行動できるのは1回だけ(第2部4章)。
  • 距離の偶奇:自分と相手の距離(縦のずれ+横のずれ)が、偶数か奇数か。お互いに毎ターン1マス動くと変わらないので、初めの距離が偶数で相手が動き回るときは、putを1回入れて、偶奇をずらす必要がある(第2部4章)。
  • 合言葉:同じ対戦ルームに入るための合図(第3部2章)。
  • ルーム:対戦を行う場所の単位(第3部2章)。

プログラミングの基本用語

  • 変数:値に名前を付けて覚えておく仕組み(第2部0章・5章)。
  • 代入:変数に値を入れること。Pythonでは=で表す(第2部0章)。
  • 比較演算子:2つの値が等しいかどうかなどを調べる記号。Pythonでは==・!=・>など(第2部0章・2章)。
  • 条件分岐:「もし〇〇なら」という条件によって、実行する処理を変える仕組み(第2部0章・2章)。
  • 繰り返し:同じ処理を複数回、または条件を満たす間くり返し実行する仕組み(第2部0章・1章)。
  • ネスト(入れ子):繰り返しや条件分岐の中に、さらに別の繰り返しや条件分岐を入れた構造(第2部1章)。
  • インデント(字下げ):Pythonで、ifやwhileなどの内側の処理を示すための字下げ(第2部0章)。
  • コメント:#から行の終わりまでの、プログラムの動作に影響しない、人間が読むためのメモ(第2部0章)。
  • 論理演算(and・or・not):条件を組み合わせたり、反対にしたりする仕組み(第2部3章)。
  • リスト:複数の値を順番に並べてまとめて扱うデータ。番号(0から始まる)で1つずつ取り出せる(第2部0章・3章・5章)。
  • 乱数(ランダム):候補の中から予測できない形で1つを選ぶ仕組み(第2部5章)。
  • 引数(ひきすう):命令や関数を呼び出すときに渡す値(第2部5章)。
  • 戻り値:関数の実行結果として呼び出し元に返される値(第2部5章)。
  • None:「該当なし」を表す、Pythonの特別な値(第2部5章)。
  • 優先順位の連鎖:判断を行う関数を優先したい順に並べ、行動したらそのターンを終えるという形で、プログラムを組み立てる方法(第3部3章)。
  • 辞書:キーを指定して値を取り出すデータ。{キー: 値}の形で書く(第3部3章)。
  • タプル:(x, y)のように、複数の値をかっこで囲んで1組にしたもの。作ったあとで中身を変えられない(第3部3章)。
  • 座標・自己位置:スタート地点を(0, 0)として、マスの位置と自分の位置を(x, y)で表したもの。歩くたびに数えて更新する(第3部3章)。
  • 幅優先探索(BFS):近いマスから順に広げて、目的のマスへの最短の道順を探す方法(第3部3章)。

Pythonの画面の用語

  • チュートリアル(Python):ステージ選択画面の右上の切り替えを「Python」にして開く、Pythonでステージを解く画面。命令をwalk(Up)のように名前だけで書く(第1部6章、第2部0章)。
  • 骨組み:対戦用のPythonの画面を開いたときに、最初から書かれているプログラム。自分で書き換えるのは、while True:の中と、自分で作る関数だけ。命令にはplayer.を付ける(第2部0章)。
  • プレイヤー・対戦AI・マップ(タブ):Pythonの画面のエディタを切り替えるタブ。自分のプログラム、練習相手のプログラム、練習で使うマップを、それぞれ編集する(第3部1章)。
  • 出力欄:print()の出力や、エラーメッセージが表示される場所(第3部1章)。

Pythonの命令・演算子とCHaser専用の関数

  • Client:ゲームに接続して、キャラクターを動かすためのplayerを作る道具。骨組みに書かれている(第2部0章)。
  • map_info:自分を中心とした周囲9マスの情報がまとめて入った変数(第2部2章)。
  • get_ready():自分の番を待ち、最新の周辺情報を取得する命令(第2部4章)。
  • walk(方向):指定した方向に1マス移動する命令。対戦用の画面ではplayer.walk(方向)と書く(第2部1章)。
  • put(方向):指定した方向にブロックを設置する命令(第2部4章)。
  • look(方向):指定した方向の2マス先を中心とした周囲9マスを調べる命令(Blocklyの近隣探査)。結果はlook_info(第2部3章)。
  • search(方向):指定した方向に一直線9マス分の情報を調べる命令(Blocklyの遠方探査)。結果はsearch_info(第2部3章)。
  • first_index(リスト, 値):リストの中で指定した値が最初に見つかった位置を返す関数。Blocklyから変換されたコードに出てくる。チュートリアルのPython画面では使えない。位置は1から数え、見つからなければ0を返す(search_info[番号]が0から数えるのとは数え方が違う)(第2部3章・5章)。
  • in:値がリストの中に含まれているかどうかを調べるPythonの演算子(第2部3章)。
  • and・or・not:条件を組み合わせる、または反対にする論理演算子(第2部3章)。
  • for・range():回数が決まっている繰り返しを書く文と、数字の並びを作る命令(第2部0章・1章)。
  • while True::ずっと繰り返す書き方(第2部1章)。
  • def・return:関数を定義する文と、関数から値を返す命令(第2部5章)。
  • random.choice(リスト):リストの中からランダムに1つを選ぶ命令。チュートリアルの画面では、先頭にimport randomが必要(第2部5章)。
  • global:関数の外にある変数を、関数の中で書き換えるときに、関数の先頭で行う宣言(第2部5章・第3部3章)。
  • print():値を出力欄に表示する命令。プログラムの途中の値を確かめるのに使う(第2部6章)。

Blocklyのブロックと、Pythonの書き方の対応は、第2部6章の「Blockly⇔Python対応表」にまとめています。

用語ではなく「この話題はどこに書いてあったか」を探したいときは、付録4「索引」も利用してください。

YouTubeチャンネル

U-15プロコン舞鶴のYouTubeチャンネルを開設しました。大会の情報などを発信しています。 チャンネルを見る