[Game Maker Adventure] Chương 012: Switch statement và do/while loop
Tóm tắt chương trước
Bạn khám phá phế tích cùng Kurobo và đụng độ 2 con Goblin cao cấp.
May mắn rằng, bạn đã dành chiến thắng.
Kiến thức chương này
- if else và switch đều có chung công dụng, tuỳ từng trường hợp mà chọn sử dụng cái nào lợi hơn.
- do/while loop chắc chắn thực hiện đoạn code trong block statement ít nhất 1 lần rồi mới kiểm tra điều kiện.
Cốt truyện
*hộc* *hộc*
Bạn bị thương nặng khi bất ngờ đụng phải 2 con Goblin. Thật may là trước đó bạn đã tìm thấy một thanh kiếm, chứ nếu không thì…
“Chủ nhân, mau sử dụng bình máu!” – Kurobo hốt hoảng.
Bạn ngay lập tức mở nắp bình và uống một ngụm.
Không rõ những bình máu ở nơi này có hạn sử dụng hay không. Nếu chúng hết hạn và không còn tác dụng nữa, liệu bạn có được trở về thế giới cũ không nhỉ?
“…”
“…”
Bạn khôi phục rồi.
Thần kì thật.
Switch statement
Bản chất của switch là if else. Tất cả switch statement đều có thể được viết lại bằng if else statement.
Hãy xem thí dụ sau: giả sử người chơi bước vào một cửa hàng. Chủ cửa hàng sẽ hỏi:
A... hello, how can I help you?
1. Wooden Bow
2. Wooden Sword
3. Wooden Shield
4. Wooden Arrow
5. Healing Potion
if else statement sẽ viết như sau:
int choice = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("A... hello, how can I help you?");
if (choice == 1)
{
Console.WriteLine("1. Wooden Bow");
}
else if (choice == 2)
{
Console.WriteLine("2. Wooden Sword");
}
else if (choice == 3)
{
Console.WriteLine("3. Wooden Shield");
}
else if (choice == 4)
{
Console.WriteLine("4. Wooden Arrow");
}
else if (choice == 5)
{
Console.WriteLine("5. Healing Potion");
}
else
{
Console.WriteLine("Oh, we don't have that things.");
}
switch statement sẽ viết như sau:
int choice = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("A... hello, how can I help you?");
switch (choice)
{
case 1:
Console.WriteLine("1. Wooden Bow");
break;
case 2:
Console.WriteLine("2. Wooden Sword");
break;
case 3:
Console.WriteLine("3. Wooden Shield");
break;
case 4:
Console.WriteLine("4. Wooden Arrow");
break;
case 5:
Console.WriteLine("5. Healing Potion");
break;
default:
Console.WriteLine("Oh, we don't have that things.");
break;
}
Đoạn code trên đọc như sau
switch
sẽ so sánh biến choice với các case
(trường hợp) từ đó chạy các dòng code tương ứng.
Giống như dấu ;
cuối mỗi statement. Cuối mỗi case
cũng phải có từ khoá break;
để báo hiệu kết thúc một case.
if else và switch đều có chung công dụng, tuỳ từng trường hợp mà chọn sử dụng cái nào lợi hơn.
Trong visual studio, có thể gõ switch sau đó ấn 2 lần phím tab để máy tạo nhanh code switch.
Kurobo
do/while loop
Tương tự với while
loop, do/while
loop cũng là một dạng vòng lặp có kiểm tra điều kiện. do/while chỉ khác so với while là nó chắc chắn thực hiện đoạn code trong block statement ít nhất 1 lần rồi mới kiểm tra điều kiện.
Chẳng hạn, ta có kĩ năng của một nhân vật được mô tả như sau: gây 3 sát thương cho mục tiêu, nếu mục tiêu vẫn còn trên 10 máu, gây thêm 3 sát thương.
Đoạn code cho thí dụ như sau:
int skillCount = 1;
do
{
DealDamage(3);
skillCount--;
}
while (enemyHP >= 10 && skillCount >= 0);
void DealDamage(int dmg)
{
...
}
Thực ra, đoạn code trên hoàn toàn có thể sử dụng các loại loop khác như for hoặc while mà kết quả cho ra vẫn không thay đổi.
Bạn có thể cân nhắc tuỳ từng trường hợp mà sử dụng.
Quest: Kĩ năng đầu tiên
Bạn đã khôi phục.
Phép thuật dò tìm kẻ địch chỉ có tác dụng với những kẻ địch yếu hơn mình. Nắm chặt cây kiếm cũ trong tay, bạn thầm nhủ bản thân phải mạnh hơn nữa mới được.
Sau khi xốc lại tinh thần, bạn nhớ tới chiếc hộp thần bí đã được mở khoá.
Bên trong là một cuốn sách kĩ năng. Với tựa đề: Hoả Cầu Nhập Môn
Hãy học kĩ năng bắn cầu lửa: FireBall.
Kĩ năng Fire Ball: (20 MP)
Gây 50 sát thương hoả cho 1 mục tiêu.
Quest: Kĩ năng đầu tiên* ✦✦✧✧✧
Bắt đầu từ chương này, các quest có độ khó ✦ và✦✦ sẽ không có đáp án.
Hãy viết chương trình thoả mãn:
- Bắt đầu chương trình với 1 bù nhìn với lượng máu là 100. Bạn có 50MP.
- Đưa ra danh sách lựa chọn: 1. Fire Ball: tốn 20MP, gây 50 hoả sát thương cho 1 mục tiêu. 2. Rest: hồi 20MP. 3. Flee: thoát khỏi trận chiến.
- Có sử dụng switch statement.
- Khi không đủ MP mà chọn bắn Fire Ball sẽ hiển thị thông báo thiếu MP.
Chương Trước | Tổng quan | Chương Kế