Đây là nơi ta vừa dừng lại ở trò chơi lật đồng xu.
Ta đã bắt đầu bằng cách tạo một số ngẫu nhiên trong khoảng từ 0 đến 1,
và sau đó làm tròn số đó đến số nguyên gần nhất.
Vậy, nó đã cho ta một số: 0 hoặc 1.
Sau đó ta đã minh họa đồng tiền thật bằng hình elip màu tím hoặc vàng, tùy thuộc vào giá trị nhận được.
Và đây là code thực hiện điều đó.
Ta đã nói nếu số nguyên bằng 0, viết code tô màu tím, nếu không, tô màu vàng.
Và sau đó ta kéo đồng xu xuống đây.
Nhưng giờ tôi đã quyết rằng thực sự đồng xu của chúng ta có 3 mặt. Đúng vậy, một đồng tiền 3 mặt.
Vậy, hãy thêm mặt thứ ba.
Ta sẽ bắt đầu bằng cách tạo một số trong khoảng từ 0 đến 2,
Để sau khi ta làm tròn số đó, nó sẽ cho một số nguyên: 0, 1 hoặc 2.
Nhưng nếu ta nhìn vào code vẽ, thì chỉ có 2 trường hợp ở đây.
Nếu số nguyên bằng 0, tô màu tím, nếu không, tô màu vàng.
Nhưng bây giờ, nếu khác 0 có thể là 1 hoặc 2.
Nhưng chờ đã, nếu làm điều tương tự như ta làm trước đây,
nhưng đặt bên trong khối else này thì sao? Vậy, ta viết:
nếu số này bằng 1 thì tô vàng, như trước,
nếu không, ta sẽ tô màu đỏ. Màu đỏ đẹp đấy.
Điều này có nghĩa là gì, nếu số nguyên bằng 0, tô màu tím,
nếu không, là 1, ta sẽ tô màu vàng;
còn nếu là 0, thì không phải 1, hẳn là 2, ta sẽ tô màu đỏ.
Tôi nhấn chạy lại nhiều lần. Nó chạy rồi! Woohoo!
Vậy, ta muốn thêm nhiều mặt cho đồng tiền,
Tôi có thể kéo lên đây, biến nó thành từ 0 đến 3, sau đó vào trong khối else này và thêm nhiều if-else nữa và cứ tiếp tục như thế, v.v.
cho đến khi có các khối lồng nhau.
Và sau đó tôi mới nhận ra rằng code này thật tệ! Ý tôi là nó thật thô thiển!
Code phải dễ đọc và đẹp, không tệ nhất có thể.
Và đây là những gì ta sẽ làm:
Bất cứ khi nào ta chỉ có một câu lệnh if hoặc câu lệnh if-else nằm trong một khối else,
nghĩa là ta không làm gì khác bên ngoài những khối này,
ta không thiết lập màu nét vẽ (stroke), cũng không có lệnh if, không gì nữa cả.
Tất cả những gì ta có là một câu lệnh if, có thể đi kèm một khối else.
Ta thực sự có thể kết hợp điều kiện này với dòng trước đó và viết:
else if integer bằng 1, thì tô màu vàng.
Và khối else cuối cùng không lồng vào bất cứ khối nào, chỉ nằm ở cuối mà thôi.
Tuyệt quá! Giờ điều này có nghĩa gì, nếu integer bằng 0, tô màu tím,
còn nếu bằng 1, thì tô màu vàng,
còn nếu cả hai đều sai, thì tô màu đỏ.
Nhấn chạy lại nhiều lần, ta có thể thấy nó vẫn chạy.
Tuyệt quá! Và điều thú vị là, ta có thể bao nhiêu khối else if tùy thích,
điều này giúp ta thực sự dễ dàng thêm nhiều mặt vào đồng xu.
Hãy làm điều đó ngay bây giờ. Ta sẽ tạo ra một số từ 0 đến 3,
và sau đó chỉ cần thêm một khối else nói rằng nếu integer bằng 2
ta sẽ tô màu ... cũng là màu đỏ trước để ta có thể giữ màu đỏ.
Và sau đó, khối else cuối cùng này dành cho khi integer bằng 3,
nó sẽ tô màu xanh dương. Tuyệt quá!
Được rồi. Vậy, để làm điều này, ta luôn phải bắt đầu bằng một câu lệnh if,
và sau đó bạn có thể có bao nhiêu else-if tùy ý,
và sau đó cái cuối cùng này có hay không cũng được.
Ta thực sự không nhất thiết cần nó, và sau đó có thể tất cả những điều kiện này sai,
nên không có khối nào trong số này được thực thi.
Nhưng miễn là ta có điều kiện ở đó, thì chính xác một trong những khối này sẽ được chạy.
Ngon chưa? Giờ nó không thực sự quan trọng việc bạn có if else-if else-if else,
hay chỉ sử dụng các câu lệnh if đơn giản cũ rích như ta có lúc đầu, vì vậy nếu integer bằng 3.
Và đó là do integer không thể bằng 0, và sau đó là 1, 2 hoặc 3.
Tuyệt quá. Vậy, những điều kiện này là để loại trừ lẫn nhau.
Chỉ một trong những khối này sẽ được chạy.
Nhưng không phải lúc nào cũng như vậy.
Điều gì sẽ xảy ra nếu ta cố gắng tạo ra một trò chơi như thế này mà không làm tròn thành số nguyên?
Vậy, tôi sẽ bỏ phần này, chỗ ta làm tròn,
và phần khác chỗ ta vẽ nó lên màn hình.
Và hãy tạo ra một số quy tắc mới cho trò chơi.
Tôi vẫn đang tạo một số từ 0 đến 3,
đặt thêm một số dấu tick vào số dòng.
Vậy, giải sử số rơi vào khoảng từ 0 đến 1, ta sẽ tô màu tím.
Ồ, nó không giống 'p' tí nào cả. Bạn hiểu ý tưởng rồi đấy. OK.
Và sau đó nếu từ 1 đến 2, ta có thể tô màu vàng.
Và nếu nó nằm trong khoảng từ 2 đến 3, ta sẽ tô màu đỏ.
Tuyệt quá. Vậy, hãy xem làm thế nào ta có thể làm điều đó với if và else-if.
Vậy, tôi có thể bắt đầu bằng cách nói nếu number nhỏ hơn 1,
nên nếu nó nhỏ hơn 1 và tôi biết nó nằm trong khoảng từ 0 đến 3, thì nó phải nằm trong phạm vi này,
tôi sẽ tô màu tím.
Mặt khác, nếu number nhỏ hơn 2, tôi có thể tô màu vàng. . . . 255. . .
Và nếu không, tôi sẽ tô màu đỏ.
Tuyệt quá! Và nó hoạt động đúng như mong muốn.
Vậy, nếu number nhỏ hơn 1, thì một lần nữa, nó nằm trong phạm vi này.
Còn nếu nó lớn hơn hoặc bằng 1, nhưng nó cũng nhỏ hơn 2,
Vậy, nó nằm trong phạm vi này, ta sẽ tô màu vàng.
Còn nếu nó phải lớn hơn hoặc bằng 2, thì nó sẽ nằm trong phạm vi đó.
Và đây là trường hợp ta không thể nói nếu number nhỏ hơn 2,
và nếu number nhỏ hơn 3,
bởi vì nếu number nhỏ hơn 1, thì chắc chắn nó nhỏ hơn 2
và nó cũng sẽ nhỏ hơn 3.
Vậy, đồng xu của ta sẽ luôn luôn có màu đỏ sau cùng.
Và đó là lý do tại sao trong trường hợp này, else-if thật sự hữu ích.