このページでは、基本の動きがわかった後に、より強い動きを考えるためのチャレンジ問題を紹介しています。1つずつ問題を解きながら独自の動きを考えてみましょう!
1. ターン数をコマンドプロンプトに表示する
サンプルコード
turn = 0
while True:
client.get_ready()
client.walk_down()
turn += 1
print(f"Turn: {turn}")
ヒント
- コマンドプロンプトに文字列を表示するPythonの関数は
print
です - ゲーム開始時に変数
turn
を初期化し、ターンが終わるごとに +1 しましょう。
2. スタート時の座標を調べてみよう
サンプルコード
x = y = 1
# ターン1では search_left してX座標を求める
client.get_ready()
value = client.search_left()
for i, cell in enumerate(value, 1):
if cell != BLOCK:
x = i + 1
# 同様に Y 座標も求める
# X, Y 座標がわかったらコマンドプロンプトに表示する
print(x, y)
# 行動開始
while True:
client_get_ready()
ヒント
- enumerate は要素と要素の場所(何番目か)を返すPythonの関数です。
search
命令を上手に使ってX座標とY座標を考えてみましょう。- まずはマップにアイテムやブロックを置かずにCoolの正しい座標が表示されるか確かめてみましょう。うまくいったらCoolのまわりにアイテムやブロックや置いて確認してみましょう。
- Hot の場合でも正しく座標がとれるかチャレンジしてみましょう。
3. ターンのたびに自分の座標を表示してみよう
サンプルコード
while True:
value = client.get_ready()
if value[DOWN] != BLOCK:
client.walk_down()
y += 1
else:
client.walk_right()
x += 1
print(x, y)
ヒント
walk
命令を実行したら x, y の値を変えます。walk_down
,walk_up
,walk_left
,walk_right
すると x, y の値はどのように変化しますか?
4. マップを壁に沿って2周してみよう
サンプルコード
サンプルコードは省略です
ヒント
- ステップアップヒント を参考に mode を使った動きを作ってみましょう。
- 2周しつつ、自分の現在の座標も表示してみましょう。