If - Else 语法
如果我的帐单超过1500USD我会去找个新工作,否则我会继续现在的工作。
YES,我的脑子还能工作,多谢你的关心。这只是个if-else语法的例子。
if (my_bills > 1500)
{
find_new_job( );
}
else
{
keep_existing_job( );
}
If-else语法和C语言基本上是一样的。
if (my_age > 65)
{
income = 2000;
}
else // age less than or equal to 65?
{
income = 3000;
}
现在学习一些新东西。用SED打开script12:
代码看起来不复杂;这里有常用的变量设置视频的格式和颜色深度,一个新的变量weight初始化为300,两个字符串变量"Fluffy!" 和 "Skinny!"。我们会用内置的字体来显示文本。有趣的部分是main函数里的while (1)循环。
while (1)
{
if (weight > 200)
{
weight_txt.string = fluffy_str;
}
else
{
weight_txt.string = skinny_str;
}
wait (1);
}
我希望你注意到了"wait (1);"指令。它让循环一次后暂停,允许其他动作和函数来运行。代码很简单:如果weight大于200,设置weight_txt 的string=fluffy_str。小于等于200就让它等于skinny_str。
运行脚本可以看到文字显示在屏幕中央:
按下Tab输入下面的代码:
weight = 100;
文字从"Fluffy!"变为 "Skinny!"因为else分支产生作用。
我们需要while循环因为我们在用户输入新变量值时要保持总是检查变量"weight"。
来假定当用户输入下面这行时关闭程序:
weight = 0;
我们怎么做?把下面这代码放到main函数中:
if (weight == 0)
{
exit;
}
结果象下面这样:
新的代码(绿色)不复杂。如果"weight"为0,就用exit退出程序。运行脚本输入:
weight = 0;
引擎会关闭;
等等,第一行里的“==”是什么?当你要比较两个表达式是否相等时要用“==”,因为如果你用了下面的代码:
if (weight = 0)
{
// do some stuff
}
将会设置weight为0,引擎会执行圆括号中的代码,发出一个错误消息:
其他的表达式比较符号和C语言类似。
if (energy < 50) // simple expression inside the parenthesis
{
health = health - 10;
}
你可以连接任意多的你想要的表达式,使用圆括号,就象下面例子。
if ((armor + energy * 0.25) > (health * (1 - class / 3))) // more complicated expression
{
health = health + 5;
}
下面的表格显示了可以用的比较符号:
有时你需要同时检查好几个条件。想象一下你要射击子弹:
a) 你的生命大于0(死亡的玩家不能射击子弹);
b) 你的弹药大于0(你至少要有1发子弹才能射击)。
这里有些方法来解决问题,但下面的方法使用if嵌套:
if (player_health > 0)
{
if (ammo > 0)
{
fire_bullets();
}
}
什么发生了?首先,玩家的生命和0比较,如果小于0,下面的代码忽略。如果生命大于0在检查弹药是不是大于0。如果没有足够的弹药(ammo <= 0)下面的代码忽略。否则,如果ammo > 0就运行fire_bullets()函数。