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

回答編集履歴

6

状態を表す数値がわかりにくかったので、ソースコード中コメント追記 # 1:START ...

2020/04/11 12:22

投稿

teamikl
teamikl

スコア8817

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

インデント修正

2020/04/11 12:22

投稿

teamikl
teamikl

スコア8817

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
- self.x=0
194
+ self.x=0
195
195
 
196
196
  def turn_left(self,evt):
197
197
  self.x=-2

4

説明のコードの誤り修正。(プレイ中の状態の数値は 1 ではなく 2 だった)末尾のコードは問題ありません。

2020/04/11 10:54

投稿

teamikl
teamikl

スコア8817

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 == 1:
22
+ if ball.hit_bottom == False and paddle.state == 2:
23
- # クリックを押した時 state = 1 に変化させる方法を考える
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 = 1
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 = 2
41
+ self.state = 1
42
42
  ```
43
43
 
44
44
  今回は、元々のクリック処理のコードを流用する為に

3

コメント修正

2020/04/11 10:52

投稿

teamikl
teamikl

スコア8817

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

2020/04/11 07:23

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -80,7 +80,7 @@
80
80
 
81
81
 
82
82
  # 変更箇所2) メインループの前で
83
- tk.protocol("WM_DELETE_WINDO", paddle.close)
83
+ tk.protocol("WM_DELETE_WINDOW", paddle.close)
84
84
 
85
85
 
86
86
  # 変更箇所3) while True: を変更

1

説明文の重複を削除

2020/04/11 07:20

投稿

teamikl
teamikl

スコア8817

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 という重複のない適当な数値を使いました。