回答編集履歴

2

追記

2019/02/10 02:56

投稿

katoy
katoy

スコア22324

test CHANGED
@@ -23,3 +23,139 @@
23
23
 
24
24
 
25
25
  現象を再現できるコード、データが不足しているので、これで解決できるかは確認をしていませんが。
26
+
27
+
28
+
29
+ データ読み取り部を コメントで提示されたデータでおきかえてみました。
30
+
31
+ また、 for x in range(cols): 以下のインデントが https://teratail.com/questions/152316 のプログラムとは異なっていたので、そちらと合わせました。
32
+
33
+ すると、迷路らしきものは表示されました。
34
+
35
+ ```python3
36
+
37
+ from tkinter import *
38
+
39
+
40
+
41
+ tile_size = 20
42
+
43
+
44
+
45
+ def load_map_data():
46
+
47
+ # from maze_data import data
48
+
49
+ data = [
50
+
51
+ [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
52
+
53
+ [1,2,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1],
54
+
55
+ [1,0,1,0,1,1,1,0,0,0,0,0,0,1,0,0,0,1,1],
56
+
57
+ [1,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,1],
58
+
59
+ [1,0,1,0,0,0,1,0,0,0,0,1,0,1,0,1,0,0,1],
60
+
61
+ [1,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,1,1,1],
62
+
63
+ [1,0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,1],
64
+
65
+ [1,0,1,0,0,1,1,1,0,1,0,1,0,1,1,0,1,1,1],
66
+
67
+ [1,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,3,1],
68
+
69
+ [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
70
+
71
+ ]
72
+
73
+ return data
74
+
75
+
76
+
77
+ def draw_map(cv, data):
78
+
79
+ rows = len(data)
80
+
81
+ cols = len(data[0])
82
+
83
+ for y in range(rows):
84
+
85
+ y1 = y * tile_size
86
+
87
+ y2 = y1 + tile_size
88
+
89
+ for x in range(cols):
90
+
91
+ x1 = x * tile_size
92
+
93
+ x2 = x1 + tile_size
94
+
95
+
96
+
97
+ p = data[y][x]
98
+
99
+ color = "yellow"
100
+
101
+ if p == 0: color = "white"
102
+
103
+ if p == 1: color = "#404040"
104
+
105
+ if p == 2: color = "red"
106
+
107
+ if p == 3: color = "blue"
108
+
109
+
110
+
111
+ cv.create_rectangle(
112
+
113
+ x1, y1, x2, y2,
114
+
115
+ fill=color,
116
+
117
+ outline="black", width=2)
118
+
119
+
120
+
121
+ def create_window(map_data, events = []):
122
+
123
+ win = Tk()
124
+
125
+ win.title("迷路")
126
+
127
+ rows = len(map_data)
128
+
129
+ cols = len(map_data[0])
130
+
131
+ cv = Canvas(win,
132
+
133
+ width=(cols * tile_size),
134
+
135
+ height=(rows * tile_size))
136
+
137
+ cv.pack()
138
+
139
+ draw_map(cv, map_data)
140
+
141
+
142
+
143
+ for func in events: func(cv, map_data)
144
+
145
+ win.mainloop()
146
+
147
+
148
+
149
+ if __name__ == "__main__":
150
+
151
+ map_data = load_map_data()
152
+
153
+ create_window(map_data)
154
+
155
+
156
+
157
+ ```
158
+
159
+
160
+
161
+ ![イメージ説明](d3c3d917550e6ca854888b3042b6f2da.png)

1

誤字

2019/02/10 02:56

投稿

katoy
katoy

スコア22324

test CHANGED
@@ -22,4 +22,4 @@
22
22
 
23
23
 
24
24
 
25
- 現象を再現できるコード、データが不足しているので、これで解決できかは確認をしていませんが。
25
+ 現象を再現できるコード、データが不足しているので、これで解決できかは確認をしていませんが。