teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2019/02/10 02:56

投稿

katoy
katoy

スコア22328

answer CHANGED
@@ -10,4 +10,72 @@
10
10
  if p==3:color="blue"
11
11
  ```
12
12
 
13
- 現象を再現できるコード、データが不足しているので、これで解決できるかは確認をしていませんが。
13
+ 現象を再現できるコード、データが不足しているので、これで解決できるかは確認をしていませんが。
14
+
15
+ データ読み取り部を コメントで提示されたデータでおきかえてみました。
16
+ また、 for x in range(cols): 以下のインデントが https://teratail.com/questions/152316 のプログラムとは異なっていたので、そちらと合わせました。
17
+ すると、迷路らしきものは表示されました。
18
+ ```python3
19
+ from tkinter import *
20
+
21
+ tile_size = 20
22
+
23
+ def load_map_data():
24
+ # from maze_data import data
25
+ data = [
26
+ [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
27
+ [1,2,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1],
28
+ [1,0,1,0,1,1,1,0,0,0,0,0,0,1,0,0,0,1,1],
29
+ [1,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,1],
30
+ [1,0,1,0,0,0,1,0,0,0,0,1,0,1,0,1,0,0,1],
31
+ [1,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,1,1,1],
32
+ [1,0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,1],
33
+ [1,0,1,0,0,1,1,1,0,1,0,1,0,1,1,0,1,1,1],
34
+ [1,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,3,1],
35
+ [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
36
+ ]
37
+ return data
38
+
39
+ def draw_map(cv, data):
40
+ rows = len(data)
41
+ cols = len(data[0])
42
+ for y in range(rows):
43
+ y1 = y * tile_size
44
+ y2 = y1 + tile_size
45
+ for x in range(cols):
46
+ x1 = x * tile_size
47
+ x2 = x1 + tile_size
48
+
49
+ p = data[y][x]
50
+ color = "yellow"
51
+ if p == 0: color = "white"
52
+ if p == 1: color = "#404040"
53
+ if p == 2: color = "red"
54
+ if p == 3: color = "blue"
55
+
56
+ cv.create_rectangle(
57
+ x1, y1, x2, y2,
58
+ fill=color,
59
+ outline="black", width=2)
60
+
61
+ def create_window(map_data, events = []):
62
+ win = Tk()
63
+ win.title("迷路")
64
+ rows = len(map_data)
65
+ cols = len(map_data[0])
66
+ cv = Canvas(win,
67
+ width=(cols * tile_size),
68
+ height=(rows * tile_size))
69
+ cv.pack()
70
+ draw_map(cv, map_data)
71
+
72
+ for func in events: func(cv, map_data)
73
+ win.mainloop()
74
+
75
+ if __name__ == "__main__":
76
+ map_data = load_map_data()
77
+ create_window(map_data)
78
+
79
+ ```
80
+
81
+ ![イメージ説明](d3c3d917550e6ca854888b3042b6f2da.png)

1

誤字

2019/02/10 02:56

投稿

katoy
katoy

スコア22328

answer CHANGED
@@ -10,4 +10,4 @@
10
10
  if p==3:color="blue"
11
11
  ```
12
12
 
13
- 現象を再現できるコード、データが不足しているので、これで解決できかは確認をしていませんが。
13
+ 現象を再現できるコード、データが不足しているので、これで解決できかは確認をしていませんが。