-
Chúng ta sẽ trở lại với Winston.
-
Giờ ta có cả biến 'x' và 'y' dành cho
-
vị trí của Winston.
-
Vì vậy, ta có thể di chuyển anh ta sang hai bên,
-
lên và xuống, woo!
-
Đẹp quá.
-
Bây giờ, hãy thiết lập lại giá trị các biến
-
thành 200 và 200
-
và xem lại cách chương trình hoạt động.
-
Vì vậy, từ chỗ này, ta đã có biến 'eyeSize'.
-
Nó dùng để điều chỉnh kích thước mắt,
-
bởi vì đôi mắt có chiều rộng 40 pixel
-
và cao 40 pixel.
-
Và rồi ta có các biến 'x' và 'y',
-
và đó là vị trí của tâm điểm khuôn mặt.
-
Và ta có thể thấy chúng được dùng
-
trong lệnh ellipse
-
để vẽ một vòng tròn lớn màu vàng.
-
Và sau đó ở dưới đây,
-
dành cho đôi mắt,
-
'x' và 'y' lại được dùng.
-
Và đây nữa,
-
đôi mắt được đặt ở vị trí
-
tương quan với tâm điểm của khuôn mặt.
-
Vì vậy, có lẽ nó lệch
-
50 pixel
-
về phía bên trái của tâm điểm
-
và cái này lệch 100 pixel
-
về phía bên phải của tâm điểm.
-
OK. Khá ổn.
-
và đó là lý do tại sao ta có thể
-
di chuyển Winston lên xuống.
-
Bây giờ, tôi còn muốn điều chỉnh
-
nhiều hơn cho khuôn mặt của Winston
-
với các biến.
-
Nhưng tôi vẫn muốn xem
-
còn thứ gì khác, trong một chương trình,
-
mà ta có thể dùng biến để lưu trữ nữa.
-
Để làm được điều đó
-
tôi sẽ xem
-
từng dòng code
-
và tìm kiếm thứ gọi là
-
các giá trị hard-code (code cứng).
-
Đó là những con số,
-
chỉ riêng số mà thôi,
-
không phải biến hay phụ thuộc vào biến.
-
Hãy bắt đầu từ đây,
-
trong lần gọi lệnh ellipse đầu tiên,
-
ta có 300 và 300
-
ứng với chiều rộng và chiều cao.
-
Đó chỉ là những con số
-
nên hãy tạo một biến
-
để thay thế cho những giá trị đó
-
với tên là faceSize.
-
Và nó lưu giá trị là 300.
-
Giờ ta sẽ viết faceSize,
-
faceSize.
-
OK. Ta tiếp tục.
-
và bỏ qua phần màu sắc.
-
Giờ câu lệnh ellipse cũng vậy.
-
Chúng đều là biến hoặc
-
phụ thuộc vào biến
-
vì vậy tạm thời
-
ta sẽ để chúng như vậy.
-
Và sau đó là lệnh mouth
-
cũng phụ thuộc vào 'x' và 'y'
-
nhưng những gì ở đây
-
lại chỉ là những con số độc lập
-
150 và 150.
-
Như vậy ta sẽ có
-
mouthSize, một cái tên hay đấy,
-
bằng 150.
-
Ta sẽ thay thế chỗ này bằng mouthSize
-
và mouthSize.
-
Được rồi.
-
Ta lưu kích thước của các hình vẽ
-
trong các biến ở trên cùng
-
để ta có thể thực sự dễ dàng
-
thay đổi kích thước
-
như thế này, như thế này...
-
Wooo Winston đang đói
-
và sau đó kiểu như, bạn biết đấy,
-
Winston đói và
-
rồi anh ta ăn rất nhiều bánh rán
-
và sau đó trở nên siêu bự.
-
Ổn rồi.
-
nhưng có điều gì đó
-
tôi không thích ở chương trình vào lúc này.
-
Nếu tôi để kích thước khuôn mặt rất nhỏ
-
thì nó bắt đầu trông buồn cười
-
vì mắt và miệng
-
đang nhô ra khỏi mặt
-
và tại một số điểm nhất định, nó thậm chí
-
trông chả liên quan gì
-
tới khuôn mặt,
-
hay nó không còn là một khuôn mặt nữa, phải không?
-
Vì vậy, ta thực muốn nó xảy ra
-
là khi thay đổi khuôn mặt
-
ta muốn mắt và miệng -
-
kích thước của chúng thay đổi theo.
-
Vì vậy, nếu tôi đặt FaceSize là một nửa kích thước.
-
Ta muốn miệng cũng bằng một nửa kích thước.
-
Như vậy, nghĩa là,
-
ta muốn tính toán mouthSize và eyeSize
-
bằng vài phần của faceSize.
-
Được rồi, hãy thiết lập lại các biến này
-
và tôi sẽ cho bạn thấy tôi có ý gì.
-
Hãy bắt đầu với mouthSize.
-
Hiện giờ
-
faceSize có kích thước là 300 và mouthSize là 150.
-
Vì vậy, nếu ta nghĩ về
-
sự tương quan của chúng,
-
ta sẽ nói rằng faceSize lớn gấp đôi
-
mouthSize
-
hoặc mouthSize lớn bằng một nửa
-
của faceSize.
-
Và ta có thể viết code như sau
-
1/2 faceSize.
-
OK. Dòng code này nói
-
rằng ta lấy giá trị của faceSize
-
nhân nó với 1/2
-
và lưu vào biến mouthSize
-
để nếu ta thay đổi cái này ở đây
-
nó sẽ biết một nửa giá trị đó là gì
-
và đó chính là mouthSize.
-
Hoàn hảo! Đó là những gì ta muốn
-
Như vậy, bây giờ đến lượt eyeSize,
-
faceSize có giá trị là 300
-
và eyeSize là 40.
-
Như vậy ta cần nó nhận giá trị
-
40/300 của faceSize.
-
tức là, xem nào
-
4/30, ta có thể
-
tối giản thàn 2/15.
-
Như vậy ta có
-
2/15 lần faceSize.
-
Nhân đây,
-
nếu bạn chưa quen với phân số
-
và phần tính toán số học trên làm khó bạn,
-
hãy tìm hiểu thêm về phân số
-
trên Khan Academy
-
và quay lại đây khi bạn
-
cảm thấy sẵn sàng.
-
Ở đây này, bạn chỉ cần truy cập vào đó.
-
OK.
-
Như vậy, hãy thử thay đổi kích thước khuôn mặt một lần nữa.
-
Haha! Kiểm tra nó
-
miệng và mắt thay đổi kích thước
-
cân xứng với khuôn mặt.
-
Nhưng ta nhận thấy
-
có gì đó không đúng ở đây.
-
Mắt và miệng
-
vẫn còn nhô ra khỏi khuôn mặt
-
dù cho chúng có
-
kích thước hợp lý hơn nhiều.
-
Đó là bởi vì ta vẫn còn
-
một số phần hard-code
-
trong các lệnh ellipse của mình.
-
Những con sô đó thực sự cần phải
-
được thay thế bằng tỷ lệ với các biến.
-
Ở đây, tôi sẽ chỉ cho bạn.
-
Như vậy, đối với hình elip vẽ mắt ta có
-
x - 50 để ra vị trí 'x'
-
Điều này có nghĩa là nó luôn luôn bằng 'x - 50'.
-
Ngay cả khi ta đặt faceSize
-
nhỏ hơn 50 pixel.
-
Và nó chắc chắn không có ý nghĩa
-
bởi vì điều đó có nghĩa là
-
mắt trái sẽ
-
Vì vậy nó phải là x trừ đi 1 phần
-
kích thước khuôn mặt
-
và ta có thể tìm ra phân số
-
theo cùng một cách.
-
50 so với 300 ban đầu.
-
50/300, 5/30, 1/6.
-
Như vậy, 1/6 của faceSize.
-
Và ta thấy con số 50 khác ở đây
-
vì vậy ta có thể làm điều tương tự
-
cùng một biểu thức.
-
Ở đây ta có 100/300
-
tức là
-
1/3 faceSize,
-
cái này là 60.
-
Như vậy cuối cùng sẽ
-
là 1/5 lần faceSize
-
Và đây là 50
-
vậy là 1/6 nữa.
-
Và sau đó 40.
-
Đó là những gì ta đã tìm ra ở đây,
-
2/15.
-
Như vậy, 2/15 lần faceSize.
-
Được rồi, hãy thử lại xem.
-
Ồ, nhìn kìa!
-
Hãy nhìn xem. Đẹp quá!
-
Tuyệt rồi!
-
OK, hãy cùng xem lại nhé.
-
Ta đã tạo ra biến này
-
để lưu kích thước của khuôn mặt
-
và nó lưu giữ một giá trị
-
rồi ta có các biến mouthSize
-
và eyeSize
-
và ta tính toán chúng dựa trên tỷ lệ
-
với faceSize
-
để chắc chắn rằng
-
giá trị của chúng luôn thay đổi
-
theo giá trị khởi điểm (faceSize)
-
vì tất cả các giá trị còn lại được tính toán
-
cũng dựa trên faceSize
-
để đảm bảo rằng vị trí
-
các bộ phận trên khuôn mặt thay đổi
-
khi faceSize thay đổi
-
Whoo! Ổn rồi.
-
Như vậy, giờ ta đã thực sự hiểu
-
cách làm cho các biến
-
phụ thuộc vào giá trị của biến khác.
-
Ta còn có thể làm nhiều hơn nữa với những chương trình mình.
-
Hãy ăn mừng bằng cách làm Winston
-
trở nên khổng lồ! Yeah, đi nào Winston!