Page 237 - Em Học Python
P. 237
LÀM BÓNG DI CHUYỂN
Để bóng di chuyển, ta sửa hàm draw như sau:
class all:
B
c
ef _init__(self, anvas, olor):
_
c
d
c
s
=
elf.canvas anvas
1
elf.id anvas.create_oval(10, 0, 5, 5, ill=color)
2
s
f
c
=
2
s
2
elf.canvas.move(self.id, 45, 00)
1
(
d
d
ef raw self):
-
elf.canvas.move(self.id, , 1)
0
s
l
Do hàm __init__ đã lưu tham số canvas ại, ta sẽ dùng nó thông qua self.canvas
và gọi hàm move
.
,
Ta đưa vào move ba tham số: số hiệu của hình tròn id số 0 và số -1 Số 0 à để không
l
.
l
cho bóng đi ngang, còn -1 à để nói bóng sẽ đi lên trên 1 điểm ảnh.
Ta đang thay đổi từng chi tiết rất nhỏ, bởi ta cần phải thử dần những thay đổi này
trong lúc làm. Thử hình dung khi ta viết một hơi hết toàn bộ code, rồi phát hiện ra nó
không chạy. Ta sẽ tìm lỗi ở đâu đây?
Một thay đổi nữa là ở vòng lặp chính đặt ở cuối chương trình. Bên trong vòng lặp
while (là vòng lặp chính của ta đấy!), ta sẽ gọi hàm draw của quả bóng như thế này:
1
while :
all.draw()
b
t
k.update_idletasks()
k.update()
t
t
ime.sleep(0.01)
Nếu lúc này chạy thử, quả bóng sẽ di chuyển dần lên trên rồi ra bên ngoài cả bảng
vẽ và biến mất, vì ta buộc tkinter vẽ lại mọi thứ trên bảng vẽ nhanh hết sức có thể – các
lệnh update_idletasks và update hối thúc tkinter hãy vẽ nhanh lên.
Lệnh time.sleep à lời gọi hàm sleep của module time nói Python tạm nghỉ một
l
,
)
.
phần trăm giây ( 0.01 Cái này là để chương trình của chúng ta chạy chậm lại một chút,
không thì bóng sẽ bay vèo ra ngoài và biến mất nhanh đến mức ta không kịp nhìn thấy.
Bắt đầu viết game Bounce! 211