Page 249 - Em Học Python
P. 249
=
T
s
i
f elf.hit_paddle(pos) = rue
:
s
-
=
elf.y 3
<
i
p
0
f os[0] = :
3
s
elf.x
=
i
p
>
s
f os[2] = elf.canvas_width:
=
s
-
elf.x 3
Như đã thấy ở đoạn code trên, nếu hit_paddle trả về True ta sẽ thay đổi hướng
,
bóng bằng cách đặt biến y thành -3 với self.y 3 Nhưng đừng chạy game vội – ta vẫn
.
=
-
.
chưa viết hàm hit_paddle Ta sẽ làm bây giờ đây.
.
Thêm hàm hit_paddle vào ngay trước hàm draw
d
h
ef it_paddle self, os):
(
p
addle_pos elf.canvas.coords(self.paddle.id)
p
s
=
i
p
p
a
<
f os[2] = addle_pos[0] nd os[0] = addle_pos[2]:
p
p
>
a
p
>
f os[3] = addle_pos[1] nd os[3] = addle_pos[3]:
i
<
p
p
p
T
eturn rue
r
r
F
eturn alse
Đầu tiên, ta định nghĩa hàm với tham số pos ở ❶, đây chính là toạ độ hiện tại của
quả bóng. Sau đó ở ❷, ta lấy ra toạ độ hiện tại của thanh đỡ và lưu lại vào biến paddle_pos
.
❸ là phần đầu của lệnh if nói rằng, “nếu toạ độ mép bên phải của bóng lớn hơn toạ
,
độ mép bên trái của thanh đỡ, đồng thời toạ độ mép bên trái của bóng nhỏ hơn toạ độ mép
bên phải của thanh đỡ...” Ở đây, pos[2] chứa toạ độ x của mép bên phải còn pos[0] chứa
toạ độ x của mép bên trái của quả bóng. Và paddle_pos[0] chứa toạ độ x của mép bên trái
còn paddle_pos[2] chứa toạ độ x của mép bên phải của thanh đỡ. Hình minh hoạ dưới đây
sẽ cho em thấy các toạ độ này khi mà bóng chuần bị đập vào thanh đỡ.
Hoàn thiện game Bounce! 223