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