您的位置:首页 > 其它

3DGS脚本教程翻译(12)-If - Else 语法

2008-04-29 21:26 239 查看
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()函数。
 
 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息