Page 204 - Em Học Python
P. 204

VẼ THẬT NHIỀU HÌNH HỘP


                       Nếu ta phủ kín bảng vẽ bằng các hình chữ nhật khác nhau thì sao nhỉ? Ta có thể
                              ​
               dùng module random và viết ra một hàm dùng các số ngẫu nhiên để làm toạ độ cho các góc
                                     ​
               của hình chữ nhật.


                                                                     ​
                       Ta sẽ dùng một hàm trong module  random là randrange. Truyền vào hàm một con
                                                                  ​
                                                                               ​
               số, nó sẽ trả về một số nguyên nằm giữa số 0 và số được truyền vào. Ví dụ gọi
               randrange(10) sẽ trả về một số bất kỳ nằm giữa 0 và 9, còn  randrange(100) sẽ trả về một
                                                                                             ​
                               ​
               số bất kỳ nằm giữa 0 và 99, vân vân.

                                                                                                  ​
                       Hàm sử dụng  randrange của ta sẽ như thế này. Chọn  File ► New Window để mở ra
                                                ​
               một cửa sổ mới và nhập vào đoạn code sau vào:


                               ​
                    ​
               from tkinter import *
                                      ​
               import random
                       ​
               tk = Tk()
               canvas = Canvas(tk, width=400, height=400)
               canvas.pack()

               def random_rectangle(width, height):
                   ​
                    ​
                                       ​
                   x1 = random.randrange(width)
                   y1 = random.randrange(height)
                   x2 = x1 + random.randrange(width)
                   y2 = y1 + random.randrange(height)
                   canvas.create_rectangle(x1, y1, x2, y2)

                       Đầu tiên là định nghĩa hàm của chúng ta ( def random_rectangle) nhận vào hai
                                                                     ​
                                                                                          ​
                                                                      ​
                                  ​
               tham số:  width và height. Tiếp, ta dùng hàm  randrange để tạo ra các biến cho cặp toạ độ
                                         ​
                                                                        ​
                               ​
               của góc trên bên trái hình chữ nhật, truyền vào các tham số là chiều dài và chiều rộng
                                                                   ​
               tương ứng với  x1 = random.randrange(width) và y1 = random.randrange(height). Nói
                                                                                                      ​
                                                                ​
               cách khác, dòng thứ hai của hàm có thể hiểu là, “Tạo biến  x1 và gán cho nó một giá trị ngẫu
                                                                             ​
               nhiên giữa 0 và chiều rộng được truyền vào biến  width.”
                                                                       ​
                       Hai dòng tiếp theo chịu trách nhiệm tạo ra các biến cho cặp toạ độ của góc dưới bên
               phải hình chữ nhật, bằng cách dựa vào cặp toạ độ của góc trên bên trái ( x1 và y1) và cộng
                                                                                               ​
                                                                                                 ​
                                                                                           ​



               178          Chương 12
                  ​
   199   200   201   202   203   204   205   206   207   208   209