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

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
}

将会设置weight0,引擎会执行圆括号中的代码,发出一个错误消息:

其他的表达式比较符号和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()函数。
 
 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值