Python3.6.3を使っています
pythonの本に載っていたスクリプトで迷路を作ろうというものが出てきたのですが
どうもうまくいきません
python
1data=[ 2 [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1], 3 [1,2,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1], 4 [1,0,1,0,1,1,1,0,0,0,0,0,0,1,0,0,0,1,1], 5 [1,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,1], 6 [1,0,1,0,0,0,1,0,0,0,0,1,0,1,0,1,0,0,1], 7 [1,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,1,1,1], 8 [1,0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,1], 9 [1,0,1,0,0,1,1,1,0,1,0,1,0,1,1,0,1,1,1], 10 [1,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,3,1], 11 [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] 12] 13
まずこれをmaze_dataという名前で保存した後
python
1from tkinter import * 2 3tile_size=20 4 5def load_map_data(): 6 from maze_data import data 7 return data 8 9 10def draw_map(cv,data): 11 rows=len(data) 12 cols=len(data[0]) 13 for y in range(rows): 14 y1=y*tile_size 15 y2=y1+tile_size 16 17 for x in range(cols): 18 x1=x*tile_size 19 x2=x1+tile_size 20 21 p=data[y][x] 22 23 if p==0:color="white" 24 if p==1:color="#404040" 25 if p==2:color="red" 26 if p==3:color="blue" 27 28 cv.create_rectangle( 29 x1,y1,x2,y2, 30 fill=color, 31 outline="black",width=2) 32 33def create_window(map_data,events=[]): 34 win=Tk() 35 win.title("迷路") 36 rows=len(map_data) 37 cols=len(map_data[0]) 38 cv=Canvas(win, 39 width=(cols*tile_size), 40 height=(rows*tile_size)) 41 cv.pack() 42 draw_map(cv.map_data) 43 44 for func in events: func(cv.map_data) 45 win.mainloop() 46 47if __name__=="__main__": 48 map_data=load_map_data() 49 create_window(map_data) 50
をIDLE(シェル?)で実行しました
その結果
RESTART: C:\Users\user\AppData\Local\Programs\Python\Python36-32\maze_show.py
Traceback (most recent call last):
File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\maze_show.py", line 49, in <module>
create_window(map_data)
File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\maze_show.py", line 42, in create_window
draw_map(cv.map_data)
AttributeError: 'Canvas' object has no attribute 'map_data'
この様なエラーが出てきました。
ちなみに「迷路」というタイトルが付いたウィンドウだけは表示されましたが、
迷路の部分は灰色状態で何も表示されませんでした。
一応何度もスクリプトを見直したり打ち直したりしましたが同じエラーばかりでます
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。