在许多情况下,您希望让实例根据特定值执行不同的操作。你可以使用一系列连续的if / else语句来做到这一点,但是当可能的选择超过两个或三个时,通常更容易使用switch语句。
switch语句的语法如下:
switch (<expression>)
{
case <constant1>:
<code>
break;
case <constant2>:
<code>
break;
// more cases (with breaks)
default:
<code>;
}
它的工作原理如下:
注意switch语句将继续执行case内的代码,直到遇到break。如果在用例的末尾不使用break,它将导致switch“泄漏”到下一个case,甚至是一个default部分,如果没有break在中间。这可能会导致意外的行为,因为执行一个case可能会导致多个case被执行,所以确保在适当的地方使用break。
使用switch语句的一个简单示例如下:
switch (player_lives)
{
case 3:
draw_sprite(20, 20, spr_face_healthy);
break;
case 2:
draw_sprite(20, 20, spr_face_hurt);
break;
case 1:
draw_sprite(20, 20, spr_face_fatal);
break;
default:
draw_sprite(20, 20, spr_face_fainted);
break;
}
注意,可以使用多个case语句来执行同一条语句,因为并不总是每个case都需要 break。如果对于特定的case没有break语句,则简单地继续执行下一个case的代码,例如:
switch (keyboard_key)
{
case vk_left:
case ord("A"):
x -= 4;
break;
case vk_right:
case ord("D"):
x += 4;
break;
case vk_up:
case ord("W"):
y -= 4;
break;
case vk_down:
case ord("S"):
y += 4;
break;
}
上面的代码使用switch检查键盘事件,然后将其与列出的每个case 进行比较。如果它满足任何所需的值,则执行相应的代码。注意 switch可以检查多个cases并执行代码,直到下一个 break,以允许使用各种键来获得相同的结果。
每个case都可以有自己的代码,所以您可以设置一种“继承”系统,其中一个case执行自己的代码,然后执行下一个case的代码。