質問編集履歴

2

エラー箇所の画像を追加しました

2020/06/18 01:13

投稿

manabu.h
manabu.h

スコア0

test CHANGED
File without changes
test CHANGED
@@ -80,9 +80,13 @@
80
80
 
81
81
  クリックしたらデフォルトMAPの画面に戻りました。
82
82
 
83
- 「勝った」ボタンのクリックだけで、デフォルトMAP画面に戻りたいです…
83
+ 「勝った」ボタンのクリックだけで、デフォルトMAP画面に戻りたいです…![![イメージ説明](249bc127659519764929a4939602c466.png)](17d005a235f3d879f32071fe196c8e2a.png)
84
+
84
-
85
+ ![イメージ説明](c054f7b9a9f4a0d95c83405e62c2fb55.png)
86
+
85
-
87
+ ![イメージ説明](925b9d9ae857f54daaf63e6dde04be62.png)
88
+
89
+ ![イメージ説明](5ea6cf3290e4565adc2bed7f70782e66.png)
86
90
 
87
91
  ---
88
92
 

1

書籍名、メインのソースコードを追加しました

2020/06/18 01:12

投稿

manabu.h
manabu.h

スコア0

test CHANGED
File without changes
test CHANGED
@@ -18,6 +18,22 @@
18
18
 
19
19
 
20
20
 
21
+ ※該当書籍「12歳からはじめる ゼロからの Pythonゲームプログラミング教室」
22
+
23
+ サンプルコード(http://www.rutles.net/download/463/)
24
+
25
+ →この中の「chap7.py」と「chap7fight.py」のコードを使用します。
26
+
27
+
28
+
29
+ 自分が詰まっているのはその途中過程においてですが、
30
+
31
+ サンプルには完成型のコードしかないためコード比較がしづらい状態です…
32
+
33
+
34
+
35
+
36
+
21
37
  実行したいプログラミングの内容
22
38
 
23
39
  ---
@@ -50,7 +66,21 @@
50
66
 
51
67
  ※メインのコード(デフォルトのマップ画面)に、サブコード(戦闘画面)を読み込ませて制作するものです。
52
68
 
69
+
70
+
71
+  ### 不審な挙動
72
+
73
+ ②実行時、戦闘画面で「勝った」ボタンをクリックしたあとに
74
+
75
+ フリーズしてしまいます。
76
+
77
+ 試しにtabキーを押してみたら
78
+
79
+ 戦闘画面の横に、デフォルトMAP上の移動キーが表示され、
80
+
81
+ クリックしたらデフォルトMAPの画面に戻りました。
82
+
53
-  おそらくサブコード間違えているんじゃないかと思ってるのです
83
+ 「勝った」ボタンのクリックだけで、デフォルトMAP画面に戻りたいです…
54
84
 
55
85
 
56
86
 
@@ -58,7 +88,7 @@
58
88
 
59
89
 
60
90
 
61
- ### 機能させたいコード
91
+ ### 機能して欲しいコード
62
92
 
63
93
 
64
94
 
@@ -82,7 +112,261 @@
82
112
 
83
113
 
84
114
 
115
+
116
+
117
+ ### 呼び出し側のソースコード(デフォルトMAP)
118
+
119
+ ```ここに言語を入力
120
+
121
+ import tkinter
122
+
123
+ import chap7fight
124
+
125
+
126
+
127
+
128
+
129
+ #マップの描画
130
+
131
+ def draw_map():
132
+
133
+ for y in range(0, MAX_HEIGHT):
134
+
135
+ for x in range(0, MAX_WIDTH):
136
+
137
+ p = map_data[y][x]
138
+
139
+ if p >= 5:
140
+
141
+ p =5
142
+
143
+ canvas.create_image(x*62+31, y*62+31, image=images[p])
144
+
145
+ #主人公表示
146
+
147
+ canvas.create_image(brave_x*62+31, brave_y*62+31,image=images[4], tag="brave")
148
+
149
+
150
+
151
+ #移動先のチェック
152
+
153
+ def check_move(x,y):
154
+
155
+ global brave_x, brave_y, flag_key
156
+
157
+ if x >= 0 and x <MAX_WIDTH and y >= 0 and y < MAX_HEIGHT:
158
+
159
+ p = map_data[y][x]
160
+
161
+ if p == 1:
162
+
163
+ return
164
+
165
+ elif p == 3:
166
+
167
+ flag_key = True
168
+
169
+ map_data[y][x] = 0
170
+
171
+ canvas.delete("all")
172
+
173
+ draw_map()
174
+
175
+ elif p == 2:
176
+
177
+ if flag_key == True:
178
+
179
+ ending()
180
+
181
+ else:
182
+
183
+ return
184
+
185
+ elif p >= 5:
186
+
187
+ fightmanager.fight_start(map_data, x, y)
188
+
189
+ brave_x = x
190
+
191
+ brave_y = y
192
+
193
+ draw_map()
194
+
195
+ # canvas.coords("brave", brave_x*62+31, brave_y*62+31)
196
+
197
+
198
+
199
+ #上ボタンが押された
200
+
201
+ def click_button_up():
202
+
203
+ check_move(brave_x, brave_y-1)
204
+
205
+ #下ボタンが押された
206
+
207
+ def click_button_down():
208
+
209
+ check_move(brave_x, brave_y+1)
210
+
211
+ #左ボタンが押された
212
+
213
+ def click_button_left():
214
+
215
+ check_move(brave_x-1, brave_y)
216
+
217
+ #右ボタンが押された
218
+
219
+ def click_button_right():
220
+
221
+ check_move(brave_x+1, brave_y)
222
+
223
+ #エンディング表示
224
+
225
+ def ending():
226
+
227
+ canvas.delete("all")
228
+
229
+ canvas.create_rectangle(0, 0, 620, 434, fill="black")
230
+
231
+ canvas.create_text(300, 200, fill="white", font=("MS ゴシック", 15),
232
+
233
+ text="""
234
+
235
+ ゴールおめでとう。
236
+
237
+
238
+
239
+ だが、君の戦いはまだ始まったばかりだ。
240
+
241
+
242
+
243
+ ……つづく?""")
244
+
245
+ #ボタンを無効化
246
+
247
+ button_up["state"] = "disabled"
248
+
249
+ button_down["state"] = "disabled"
250
+
251
+ button_left["state"] = "disabled"
252
+
253
+ button_right["state"] = "disabled"
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+ #ウインドウ作成
262
+
263
+ root = tkinter.Tk()
264
+
265
+ root.title("ダンジョン&パイソン")
266
+
267
+ root.minsize(840, 454)
268
+
269
+ root.option_add("*font",["メイリオ", 14])
270
+
271
+ #キャンバス作成
272
+
273
+ canvas = tkinter.Canvas(width=620, height="434")
274
+
275
+ canvas.place(x =10, y =10)
276
+
277
+ canvas.create_rectangle(0, 0, 620, 434, fill="gray")
278
+
279
+ #ボタンを配置
280
+
281
+ button_up = tkinter.Button(text="↑")
282
+
283
+ button_up.place(x=720, y=150)
284
+
285
+ button_up["command"] = click_button_up
286
+
287
+ button_down = tkinter.Button(text="↓")
288
+
289
+ button_down.place(x=720, y=210)
290
+
291
+ button_down["command"] = click_button_down
292
+
293
+ button_left = tkinter.Button(text="←")
294
+
295
+ button_left.place(x=660, y=180)
296
+
297
+ button_left["command"] = click_button_left
298
+
299
+ button_right = tkinter.Button(text="→")
300
+
301
+ button_right.place(x=780, y=180)
302
+
303
+ button_right["command"] = click_button_right
304
+
305
+
306
+
307
+ #画像データを読み込み
308
+
309
+ images = [tkinter.PhotoImage(file="12saipython/img6/chap6-mapfield.png"),
310
+
311
+ tkinter.PhotoImage(file="12saipython/img6/chap6-mapwall.png"),
312
+
313
+ tkinter.PhotoImage(file="12saipython/img6/chap6-mapgoal.png"),
314
+
315
+ tkinter.PhotoImage(file="12saipython/img6/chap6-mapkey.png"),
316
+
317
+ tkinter.PhotoImage(file="12saipython/img6/chap6-mapman.png"),
318
+
319
+ tkinter.PhotoImage(file="12saipython/img6/chap7-mapmonster.png")]
320
+
321
+
322
+
323
+ #マップデータ
324
+
325
+ MAX_WIDTH = 10
326
+
327
+ MAX_HEIGHT = 7
328
+
329
+ map_data = [[1, 0, 1, 1, 1, 1, 1, 1, 1, 1],
330
+
331
+ [1, 0, 0, 1, 2, 0, 6, 1, 3, 1],
332
+
333
+ [1, 1, 0, 1, 1, 1, 0, 1, 0, 1],
334
+
335
+ [1, 0, 0, 5, 0, 0, 0, 1, 0, 1],
336
+
337
+ [1, 0, 1, 1, 1, 1, 1, 1, 6, 1],
338
+
339
+ [1, 0, 6, 0, 0, 0, 0, 0, 0, 1],
340
+
341
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
342
+
343
+ #主人公の位置
344
+
345
+ brave_x = 1
346
+
347
+ brave_y = 0
348
+
349
+
350
+
351
+ #鍵取得フラグ
352
+
353
+ flag_key = False
354
+
355
+
356
+
357
+ #戦闘画面の準備
358
+
359
+ fightmanager = chap7fight.FightManager()
360
+
361
+
362
+
363
+ draw_map()
364
+
365
+ root.mainloop()
366
+
367
+ ```
368
+
85
- ### 該当のサブのソースコード
369
+ ### サブのソースコード(戦闘画面)
86
370
 
87
371
 
88
372
 
@@ -183,3 +467,5 @@
183
467
  環境:Mac OSX
184
468
 
185
469
  エディタ:Visual Studio Code
470
+
471
+ Python3.6.5