Page 241 - Em Học Python
P. 241

sau  vào  cuối  hàm  __init__ để  lưu  lại  chiều  rộng  của  bảng  vẽ  vào  một  biến  mới,


               canvas_width

                              :


                        elf.canvas_width    elf.canvas.winfo_width()
                                               =

                         s

                                                 s






                       Ta  sẽ  dùng  biến  này  trong  hàm  draw để  kiểm  tra  xem  bóng  có  đập  vào  cạnh  trái




















               hoặc  cạnh  phải  của  bảng  vẽ  không:


                                     <

                                         0
                             p




                         i

                        f  os[0]  =  :
                                         3

                              s

                            elf.x

                                      =

                                     >




                                         s
                         i
                             p
                        f  os[2]  =  elf.canvas_width:


                                         -
                            elf.x    3
                                      =

                              s








                                                                                       ,
















                       Do  đặt  x trong  khoảng  3  đến  –3,  ta  cũng  phảl  làm  tương  tự  với  y  như  thế  dù  bật














               hướng  nào  bóng  cũng  đều  di  chuyển  với  tốc  độ  như  nhau.  Hàm  draw giờ  sẽ  như  thế  này:











                         d


                    d
                    ef  raw self):

                              (

                        elf.canvas.move(self.id,  elf.x,  elf.y)
                                                                  s
                                                        s


                         s

                         p

                                s
                              =

                        os    elf.canvas.coords(self.id)


                                         0
                         i
                                     <

                             p



                        f  os[1]  =  :


                              s

                                         3
                            elf.y
                                      =

                                         s

                                     >





                        f  os[3]  =  elf.canvas_height:
                         i
                             p
                              s



                                      =
                            elf.y    3
                                         -



                         i

                                         0
                                     <
                             p
                        f  os[0]  =  :


                                      =

                                         3

                            elf.x
                              s

                        f  os[2]  =  elf.canvas_width:
                             p


                                     >



                                         s

                         i


                                         -
                                      =

                              s
                            elf.x    3

                       Lưu  code  lại  và  chạy,  quả  bóng  sẽ  chạy  loanh  quanh  màn  hình  mà  không  bị  biến


























               mất.  Và  trọn  vẹn  chương  trình  của  chúng  ta  tới  giờ  trông  như  thế  này:





               from  kinter  mport


                     t





                               i
                                       *



                        r
               import  andom
               import  ime
                        t




                           :

                       B
               class  all





                                           c
                    ef  _init__ self,  anvas,  olor):
                                   (
                                                     c
                         _



                    d

                         s
                        elf.canvas    anvas

                                          c


                                       =

                                                                          2
                                                                               f

                                     c


                        elf.id    anvas.create_oval(10,  0,  5,  5,  ill=color)

                                                                 1

                                                                     2

                                   =
                         s
                                                              1
                                                        2


                         s
                        elf.canvas.move(self.id,  45,  00)

                        tarts    -3,  2,  1,  ,  ,  ]
                                               -



                                          -
                                                       2
                                                   1



                         s


                                    [
                                                           3
                                 =
                        andom.shuffle(starts)

                         r
                                 =

                         s


                        elf.x    tarts[0]
                                    s
                         s
                                 =
                                    -

                        elf.y    3









                                                                                  Bắt  đầu  viết  game  Bounce!           215
   236   237   238   239   240   241   242   243   244   245   246