Page 249 - Em Học Python
P. 249

=
                                                         T


                             s

                         i


                        f  elf.hit_paddle(pos)  =  rue

                                                              :
                              s

                                         -
                                      =

                            elf.y    3

                                     <
                         i


                             p


                                         0
                        f  os[0]  =  :
                                         3
                              s
                            elf.x

                                      =





                         i
                             p

                                     >
                                         s
                        f  os[2]  =  elf.canvas_width:
                                      =
                              s



                                         -
                            elf.x    3







                       Như  đã  thấy  ở  đoạn  code  trên,  nếu  hit_paddle trả  về  True  ta  sẽ  thay  đổi  hướng





                                                                                  ,















               bóng  bằng  cách  đặt  biến  y thành  -3 với  self.y    3  Nhưng  đừng  chạy  game  vội  –  ta  vẫn














                                                                     .






                                                                =



                                                                   -




                                           .






               chưa  viết  hàm  hit_paddle  Ta  sẽ  làm  bây  giờ  đây.









                                                                         .


                       Thêm  hàm  hit_paddle vào  ngay  trước  hàm  draw





                    d
                         h
                    ef  it_paddle self,  os):

                                     (
                                             p




                        addle_pos    elf.canvas.coords(self.paddle.id)



                         p
                                         s
                                      =




                         i
                                                              p

                             p

                                                         a
                                                                       <



                        f  os[2]  =  addle_pos[0]  nd  os[0]  =  addle_pos[2]:
                                                                          p



                                         p
                                     >
                                                              a


                                 p
                                          >
                            f  os[3]  =  addle_pos[1]  nd  os[3]  =  addle_pos[3]:



                              i
                                                                           <
                                                                               p

                                                                   p





                                             p

                                           T


                                eturn  rue


                                   r

                         r

                                 F



                        eturn  alse
















                       Đầu  tiên,  ta  định  nghĩa  hàm  với  tham  số  pos ở  ❶,  đây  chính  là  toạ  độ  hiện  tại  của














               quả  bóng.  Sau  đó  ở  ❷,  ta  lấy  ra  toạ  độ  hiện  tại  của  thanh  đỡ  và  lưu  lại  vào  biến  paddle_pos








                                                                                                           .



















                       ❸  là  phần  đầu  của  lệnh  if  nói  rằng,  “nếu  toạ  độ  mép  bên  phải  của  bóng  lớn  hơn  toạ













                                                 ,






               độ  mép  bên  trái  của  thanh  đỡ,  đồng  thời  toạ  độ  mép  bên  trái  của  bóng  nhỏ  hơn  toạ  độ  mép
































               bên  phải  của  thanh  đỡ...”  Ở  đây,  pos[2] chứa  toạ  độ  x  của  mép  bên  phải  còn  pos[0] chứa






























               toạ  độ  x  của  mép  bên  trái  của  quả  bóng.  Và  paddle_pos[0] chứa  toạ  độ  x  của  mép  bên  trái



               còn  paddle_pos[2] chứa  toạ  độ  x  của  mép  bên  phải  của  thanh  đỡ.  Hình  minh  hoạ  dưới  đây





















               sẽ  cho  em  thấy  các  toạ  độ  này  khi  mà  bóng  chuần  bị  đập  vào  thanh  đỡ.






















                                                                                   Hoàn  thiện  game  Bounce!           223
   244   245   246   247   248   249   250   251   252   253   254