回答編集履歴
6
状態を表す数値がわかりにくかったので、ソースコード中コメント追記 # 1:START ...
answer
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
仮にスタート画面は 1、プレイ中は 2、ゲームオーバーは 3 としましょう。
|
20
20
|
|
21
21
|
```python
|
22
|
-
if ball.hit_bottom == False and paddle.state == 2:
|
22
|
+
if ball.hit_bottom == False and paddle.state == 2: # 2:PLAYING
|
23
23
|
# クリックを押した時 state = 2 に変化させる方法を考える
|
24
24
|
ball.draw()
|
25
25
|
paddle.draw()
|
@@ -29,7 +29,7 @@
|
|
29
29
|
|
30
30
|
```python
|
31
31
|
def start(self, evt):
|
32
|
-
self.state = 2
|
32
|
+
self.state = 2 # 2:PLAYING
|
33
33
|
```
|
34
34
|
|
35
35
|
まだ、これだけでは未設定の時に paddle.state を参照してもエラーになるので
|
@@ -38,7 +38,7 @@
|
|
38
38
|
```python
|
39
39
|
# class Paddle def __init__ に追加(適切なインデントで記述)
|
40
40
|
|
41
|
-
self.state = 1
|
41
|
+
self.state = 1 # 1:START
|
42
42
|
```
|
43
43
|
|
44
44
|
今回は、元々のクリック処理のコードを流用する為に
|
@@ -76,7 +76,7 @@
|
|
76
76
|
# 変更箇所1) class Paddle 内にメソッドを追加
|
77
77
|
|
78
78
|
def close(self):
|
79
|
-
self.state = 0
|
79
|
+
self.state = 0 # 0:CLOSED
|
80
80
|
|
81
81
|
|
82
82
|
# 変更箇所2) メインループの前で
|
5
インデント修正
answer
CHANGED
@@ -191,7 +191,7 @@
|
|
191
191
|
if pos[0]<=0:
|
192
192
|
self.x=0
|
193
193
|
elif pos[2]>=self.canvas_width:
|
194
|
-
|
194
|
+
self.x=0
|
195
195
|
|
196
196
|
def turn_left(self,evt):
|
197
197
|
self.x=-2
|
4
説明のコードの誤り修正。(プレイ中の状態の数値は 1 ではなく 2 だった)末尾のコードは問題ありません。
answer
CHANGED
@@ -19,8 +19,8 @@
|
|
19
19
|
仮にスタート画面は 1、プレイ中は 2、ゲームオーバーは 3 としましょう。
|
20
20
|
|
21
21
|
```python
|
22
|
-
if ball.hit_bottom == False and paddle.state ==
|
22
|
+
if ball.hit_bottom == False and paddle.state == 2:
|
23
|
-
# クリックを押した時 state =
|
23
|
+
# クリックを押した時 state = 2 に変化させる方法を考える
|
24
24
|
ball.draw()
|
25
25
|
paddle.draw()
|
26
26
|
```
|
@@ -29,7 +29,7 @@
|
|
29
29
|
|
30
30
|
```python
|
31
31
|
def start(self, evt):
|
32
|
-
self.state =
|
32
|
+
self.state = 2
|
33
33
|
```
|
34
34
|
|
35
35
|
まだ、これだけでは未設定の時に paddle.state を参照してもエラーになるので
|
@@ -38,7 +38,7 @@
|
|
38
38
|
```python
|
39
39
|
# class Paddle def __init__ に追加(適切なインデントで記述)
|
40
40
|
|
41
|
-
self.state =
|
41
|
+
self.state = 1
|
42
42
|
```
|
43
43
|
|
44
44
|
今回は、元々のクリック処理のコードを流用する為に
|
3
コメント修正
answer
CHANGED
@@ -208,7 +208,7 @@
|
|
208
208
|
self.state = State.PLAYING
|
209
209
|
|
210
210
|
def gameover(self):
|
211
|
-
# ゲームオーバー時に
|
211
|
+
# ゲームオーバー時に表示
|
212
212
|
self.canvas.itemconfigure(self.gameover_text, state="normal")
|
213
213
|
self.state = State.GAMEOVER
|
214
214
|
|
2
typo 修正 DELETE_WINDO -> DELETE_WINDOW
answer
CHANGED
@@ -80,7 +80,7 @@
|
|
80
80
|
|
81
81
|
|
82
82
|
# 変更箇所2) メインループの前で
|
83
|
-
tk.protocol("
|
83
|
+
tk.protocol("WM_DELETE_WINDOW", paddle.close)
|
84
84
|
|
85
85
|
|
86
86
|
# 変更箇所3) while True: を変更
|
1
説明文の重複を削除
answer
CHANGED
@@ -70,7 +70,7 @@
|
|
70
70
|
破棄されたリソースに対して update() が呼ばれる為起こるので、
|
71
71
|
エラーを回避するには、適切なタイミングでループを抜ける必要があります。
|
72
72
|
|
73
|
-
※ この辺りは tk.mainloop() を使うと、自前で処理する必要はありません。
|
73
|
+
※ この辺りは `tk.mainloop()` を使うと、自前で処理する必要はありません。
|
74
74
|
|
75
75
|
```python
|
76
76
|
# 変更箇所1) class Paddle 内にメソッドを追加
|
@@ -88,8 +88,6 @@
|
|
88
88
|
...
|
89
89
|
```
|
90
90
|
|
91
|
-
※ この辺りの終了処理に関しては、`tk.mainloop()` を使うと、手間は省けます。
|
92
|
-
|
93
91
|
----
|
94
92
|
状態を表す値として
|
95
93
|
0, 1, 2 という重複のない適当な数値を使いました。
|