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