上越妙高 CHaserチャレンジ

このページでは、基本の動きがわかった後に、より強い動きを考えるためのチャレンジ問題を紹介しています。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周しつつ、自分の現在の座標も表示してみましょう。
U-16プログラミングコンテスト上越妙高
タイトルとURLをコピーしました