Page 239 - Em Học Python
P. 239

_
                    d

                                           c

                                                     c

                    ef  _init__(self,  anvas,  olor):
                                          c


                        elf.canvas    anvas
                                       =
                         s

                         s

                                                                     2

                                                                               f
                                                                 1


                                     c

                                   =


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


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

                                                        2
                         s


                                 =
                        elf.x

                                    0
                                    -
                        elf.y    1

                         s

                                 =


                                                =
                                                  s
                        elf.canvas_height    elf.canvas.winfo_height()
                         s



















                                                                                l

                       Ta  vừa  viết  thêm  ba  dòng  vào  chương  trình,  self.x     à  để  đặt  biến  x có  giá  trị  0






                                                                            =

                                                                               0



                                 l























               còn  self.y    1 à  đặt  biến  y  có  giá  trị  –1.  Cuối  cùng  là  biến  canvas_height với  giá  trị



                               -
                            =


















               được  trả  ra  từ  hàm  winfo_height của  bảng  vẽ.  Hàm  này  cho  ta  biết  chiều  dài  hiện  tại  của







               bảng  vẽ.





                       Tiếp,  ta  lại  sửa  hàm  draw một  chút:






                    ef  raw self):


                    d
                              (
                         d




                                                                  s

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




                                s
                        os    elf.canvas.coords(self.id)
                         p
                              =
                                     <

                             p
                                         0

                        f  os[1]  =  :




                         i

                                      =
                                         1
                              s


                            elf.y

                        f  os[3]  =  elf.canvas_height:
                                     >

                         i
                             p


                                         s



                                         -
                            elf.y    1
                                      =

                              s

                                                                                 .






























                       Ở  ❶,  ta  sửa  lệnh  gọi  hàm  move và  thay  vào  các  biến  x và  y  Sau  đó,  ta  tạo  ra  biến  pos














               ở  ❷  bằng  cách  gọi  hàm  coords của  canvas  Hàm  này  trả  về  toạ  độ  x  và  y  hiện  tại  của  bất  cứ


                                                           .

































               đối  tượng  nào  tồn  tại  trên  bảng  vẽ,  miễn  là  em  biết  số  hiệu  của  nó.  Ở  đây  ta  truyền  vào  hàm




                               ,











               coords biến  id  chính  là  số  hiệu  của  quả  bóng.














                       Toạ  độ  mà  hàm  coords trả  ra  là  một  mảng  bốn  số.






               Nếu  in  ra  ta  sẽ  thấy  đại  khái  kết  quả  như  thế  này:










                     (
               print self.canvas.coords(self.id))


                                2
                         2

                                         4


               [255.0,  9.0,  70.0,  4.0]





                       Hai  số  đầu  ( 255.0 và  29.0   là  toạ  độ  góc  trên  bên  trái






                                                 )



















                                      )
                                                                  )



               của  hình  tròn  ( x1 và  y1  ;  hai  số  sau  ( 270.0 và  44.0   là  toạ  độ









                                           .





               góc  dưới  bên  phải  x2 và  y2      Ta  sẽ  sử  dụng  mấy  giá  trị  này  ở









               các  dòng  sau  đó.











                                                                                  Bắt  đầu  viết  game  Bounce!           213
   234   235   236   237   238   239   240   241   242   243   244