Page 251 - Em Học Python
P. 251

đều  cần  có  yếu  tố  thắng  thua  –  phải  có  cách  gì  đó  khiến  người  chơi  thua  cuộc.  Với  tình
























               hình  hiện  tại  của  game,  quả  bóng  sẽ  đập  mãi  mãi  và  người  chơi  không  bao  giờ  thua  cả.


















                       Ta  sẽ  hoàn  thiện  game  bằng  cách  thêm  một  đoạn  code  nói  rằng  trò  chơi  sẽ  kết  thúc









               nếu  bóng  chạm  mép  dưới  của  bảng  vẽ  (hay  nói  cách  khác  là  bóng  chạm  đất).









                       Đầu  tiên,  ta  tạo  ra  một  biến  hit_bottom ở  cuối  hàm  __init__ của  lớp  Ball









                                                                                                  :












                        elf.canvas_height    elf.canvas.winfo_height()


                         s
                                                  s

                                                =
                         s
                                                 s
                                               =



                        elf.canvas_width    elf.canvas.winfo_width()
                                               F
                                            =




                         s
                        elf.hit_bottom    alse

                       Sau  đó  ta  sửa  vòng  lặp  chính  ở  cuối  chương  trình  như  thế  này:















               while  :
                       1

                    i
                                           =


                                                     :
                        b

                                               F



                    f  all.hit_bottom  =  alse
                         b
                        all.draw()

                        addle.draw()
                         p


                    k.update_idletasks()
                    t
                    t
                    k.update()

                    ime.sleep(0.01)
                    t







                       Giờ  vòng  lặp  sẽ  liên  tục  kiểm  tra  hit_bottom xem  bóng  có  đập  xuống  sàn  không.














               Chương  trình  sẽ  chỉ  tiếp  tục  cho  phép  bóng  và  thanh  đỡ  di  chuyển  khi  nó  chưa  chạm  mép




















                                                                      .















               dưới  của  màn  hình,  như  em  có  thể  thấy  trong  lệnh  if  Khi  game  kết  thúc  ta  sẽ  không  di








               chuyển  bóng  và  thanh  đỡ  nữa.




                                                                      :









                       Thay  đổi  cuối  cùng  là  ở  hàm  draw của  lớp  Ball








                         d
                    d

                    ef  raw(self):
                        elf.canvas.move(self.id,  elf.x,  elf.y)

                                                        s


                         s
                                                                  s

                                s
                              =

                         p

                        os    elf.canvas.coords(self.id)
                        f  os[1]  =  :
                             p
                                         0
                                     <


                         i


                                         3


                              s
                                      =
                            elf.y


                             p
                        f  os[3]  =  elf.canvas_height:

                         i
                                     >




                                         s

                            elf.hit_bottom    rue
                              s

                                                   T


                                                 =


                                                         T
                        f  elf.hit_paddle(pos)  =  rue:
                         i

                             s
                                                      =

                            elf.y    3
                                         -
                                      =



                              s
                                     <


                                         0

                        f  os[0]  =  :
                         i

                             p

                                      =


                                         3
                            elf.x
                              s
                                         s

                         i

                        f  os[2]  =  elf.canvas_width:


                                     >
                             p

                                         -
                            elf.x    3
                              s


                                      =






                                                                                   Hoàn  thiện  game  Bounce!           225
   246   247   248   249   250   251   252   253   254   255   256