tkinterを使って迷路を表示してみよう
今回はtkinterを使って、2次元リストを元に迷路を描画するプログラムを作ります。
黒は壁で通れない場所、灰色は通れる場所、緑色はゴールをイメージしています。
このマップは、以下の記事で使ったものを流用しています。
Pythonスクリプト
今回のスクリプトは、以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
### インポート import tkinter ### 定数 WIDTH = 320 # 画面横サイズ HEIGHT = 320 # 画面縦サイズ B_SIZE = 40 # 辺長 ### 変数 x = 0 # X座標 y = 0 # Y座標 ### マップ ####### 0 1 2 3 4 5 6 7 ##### MAP = [[1,0,0,0,0,0,0,0], # 0 [1,0,0,1,1,1,1,0], # 1 [1,1,1,1,0,0,1,0], # 2 [0,0,0,0,1,1,1,0], # 3 [0,0,0,0,1,0,0,0], # 4 [0,0,0,0,1,1,1,0], # 5 [0,0,0,0,0,0,1,1], # 6 [0,0,0,0,0,0,0,2]] # 7 ### キャンバス作成 canvas = tkinter.Canvas(width=WIDTH, height=HEIGHT) ### キャンバス表示 canvas.pack() ### 縦座標 for b1 in MAP: ### 横座標 for b2 in b1: if b2 == 0: # 壁描画 canvas.create_rectangle(x*B_SIZE, y*B_SIZE, x*B_SIZE+B_SIZE, y*B_SIZE+B_SIZE, fill="#484848", outline="#484848") elif b2 == 1: # 通路描画 canvas.create_rectangle(x*B_SIZE, y*B_SIZE, x*B_SIZE+B_SIZE, y*B_SIZE+B_SIZE, fill="#E0E0E0", outline="#E0E0E0") elif b2 == 2: # ゴール描画 canvas.create_rectangle(x*B_SIZE, y*B_SIZE, x*B_SIZE+B_SIZE, y*B_SIZE+B_SIZE, fill="#48B060", outline="#48B060") x += 1 ### 座標更新 else: x = 0 y += 1 ### イベントループ canvas.mainloop() |
スクリプト解説
5~7行目
ひとつの辺の長さを40ドットの正方形を 8 x 8 個並べるために、今回は画面サイズを 320 x 320 にしています。
15~22行目
8 x 8 の2次元リストを定義します。
0は壁、1は通路、2はゴールとしています。
31~46行目
2次元リストなので、二重ループでリストの値を取得します。
値により描画する正方形の色を変えています。
36、38、40行目
create_rectangle()メソッドは、矩形を描画します。
引数の意味は、以下の通りです。
1番目:矩形の左上のX座標
2番目:矩形の左上のY座標
3番目:矩形の右下のX座標
4番目:矩形の右下のY座標
5番目:(fill=)塗りつぶす色
6番目:(outline=)線の色