Pythonで釣りゲームを作ろう 基礎編9 繰り返し文

最終更新日:2024年11月05日(火)

1 もくじ

2 繰り返し文とは

今まで学んだプログラムでは、前から順番にコードが実行され、最後まで処理が終わると終了していました。 しかし、実際のゲームではどうでしょうか?多くの場合、プレイヤーが「終了」を選択するまでゲームは動き続けます。 for文を用いることで、同じ処理を繰り返し行うことができます。

3 for文の構造

for i in range(1,5):
    print(i)

実行結果

1
2
3
4

繰り返し複数の処理を行う場合は、それらすべてをインデントする必要があります。

iは繰り返しに使う変数です。慣例的にi,j,kといった文字がよく用いられます。

range()の部分が変数の範囲です。ただし、初めの数は含まれるが、終わりの数は含まれないことに注意してください。 上のコードではi1から4の範囲で処理が繰り返されます。


変数の範囲ではなく、繰り返し回数を指定することもできます。この場合も、5ではなく4で終わることに注意してください。

for i in range(5):
    print(i)

実行結果

0
1
2
3
4

変数の増加する幅を3つめの引数で指定することもできます。

for i in range(1,11,2):
    print(i)

実行結果

2
4
6
8
10

3.0.1 Challenge9

6の段の九九を出力するプログラムを作成してください。





3.0.2 解答

for i in range(1,10):
    print("6 x "+str(i)+" = "+str(6*i))

4 二重ループ

for文を入れ子構造にすることで、より複雑な処理を行うことができます。 以下のプログラムを実行してください。

for i in range(1,10):
    for j in range(1,10):
        print(str(i)+" x "+str(j)+" = "+str(i*j))

どのように動作するのか、理解するのが難しいかもしれませんが、順を追って考えましょう。

img
  1. 外側の繰り返し文に入ります。i1です。
  2. 内側の繰り返し文に入ります。j1です。
  3. 内側が繰り返されてjが1,2,3,…と増えていきます。つまり、1x1,1x2,1x3と出力されていきます。
  4. jが9までいくと内側の繰り返しから抜けます。
  5. 外側が繰り返され、iが1つ増えて2になります。
  6. 再び内側の繰り返し文に入ります。j1から繰り返されて1,2,3,…と増えていきます。つまり、2x1,2x2,2x3と出力されていきます。
  7. 以上が繰り返され、9の段までいくと終わります。

5 マップを表示してみよう

今までに学んだことを組み合わせると、簡単なマップ表示ができます。

map_data = [
    [1, 1, 1, 1, 1],
    [1, 0, 0, 0, 1],
    [1, 0, 1, 0, 1],
    [1, 0, 1, 0, 0],
    [1, 0, 1, 1, 1],
]

# 配列の数字を記号に変換する関数
def drawmap(n):
    if n == 0:
        return "□"
    elif n == 1:
        return "■"
    else:
        return " "

# 地図を表示する
for i in range(5):
    line = ""  # 各行の文字列を作成
    for j in range(5):
        line += drawmap(map_data[i][j]) # 配列の上からi番目、左からj番目を文字列に加える
    print(line)  # 行ごとに出力

コードを読んで仕組みを理解してみてください。配列、関数、if文、for文と今まで学んだ要素が詰まっています。分からないところがあれば、その解説ページに戻って確認してください。

1行目map_dataはマップのデータを持つ2次元リストです。1は壁や障害物を表し、0は空のスペースを表しています。

10行目drawmap(n)はn が 0 なら「□」、1 なら「■」を返す関数です。0と1以外の値が入った場合はスペースを返すようにしています。

19行目からが今回学習したfor文です。変数lineを使って、各行を作成しています。