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