仙剑之十里坡

标题: RGSS入门——条件分歧 [打印本页]

作者: BlackFeather    时间: 2010-2-9 10:22
标题: RGSS入门——条件分歧
满足特定的条件与否,之后的动作会根据其不同而改变就叫作条件分歧
比较运算符在具体地学习处理条件分歧的方法之前,要先记住条件构成中使用的运算符。
下面 6 个运算符称为比较运算符。使用这些运算符,和给予的条件(数字和字符串)相比较,然后返回结果。
==相等
!=不相等
<小于
>大于
<=小于或相等[/td]
>=大于或相等
这里一定要注意的是,判断相等的运算符不是 = 而是 ==。像已学习过的那样,所谓 = 符号表示的不是比较而是代入。请注意不要弄混淆了。
真伪值比较运算的运算结果就称为真伪值。有真(正确)、伪(错误)两种情况。
比较后是正确的话为 true 值,是错误的话就为 false 值。请试试看吧。
p ("早安" == "早安")                # => true
p ("早安" == "晚安")                # => falsep
(3 + 1 == 3 + 5)                  # => falsep
(3 + 1 == 2 + 2)                  # => true
逻辑运算符下面 6 个运算符称为逻辑运算符

and
&&
「~,与,~」的意思
or
||
「~,或,~」的意思
not
!
「非~」的意思
英文单词运算符和符号运算符,无论用哪个都是一样的。在预置脚本中运用的主要是英文单词。使用这些逻辑运算符就能指定更加复杂的条件。

p (100 > 77 and 1 + 1 == 2)         # => true
p (100 > 77 && 1 + 1 == 2)          # => true

上述示例中,第一行和第二行表示的都是一个内容「100 大于 77 同时 1 + 1 等于 2」。不用说 100 是比 77 大的整数,1 + 1 答案也为 2,两个运算都成立。所以输出结果就为 true(真,正确)。
那么,看下一个算式吧。

p (1 + 1 == 3 or 2 + 2 == 3)        # => false
p (1 + 1 == 3 || 2 + 2 == 3)        # => false

上述示例中,第一行和第二行表示的也都是一个内容「1 + 1 等于 3 或 2 + 2 等于 3」。很显然,1 + 1 不等于 3,2 + 2 也不等于 3,这样两个运算都不成立。比较运算符 or(||)是只要有一个运算成立就为 ture(真,正确),而这里两个运算全都不成立,所以输出结果就为 false(伪,错误)。

另外,not(!)和上面的例子稍微有些不同, not(!)表示的内容为后面的条件不成立。可以理解为颠倒 true 或 false 的运算符。

p (not true)                        # => false
p (! true)                           # => false
上述示例中的内容是「非 true」的意思,所以输出结果为 false。

if ~ elsif ~ else ~ endif ~ end

语句是条件分歧的句法。这个和英文的 if(如果~就)意思相同,表示「如果 if 后面的条件成立的话,就运行下面的处理」的意思。下面示例中的 3~5行就是条件分歧。

a = 20              # 为变量 a 赋值代入 20。
if a >= 10         # 如果 a 为 10 以上的话,  
print "big"         #   显示 big。
end                 # 分歧结束。

在条件不满足时也要进行处理的情况下就使用 else,条件不满足但指定另一个条件的情况下就使用 elsif。

a = 7               # 为变量 a 赋值代入 7。
if a >= 10        # 如果 a 为 10 以上的话,  
print "big"        #   显示 big。
elsif a >= 5      # 除此之外,如果 a 为 5 以上的话,
print "medium" #   显示 medium。
else                # 其他,  
print "small"    #   显示 small。
end                # 分歧结束。

unless ~ end与 if 相反,在条件满足时才进行某些处理的情况下使用 unless 语句。

a = 7               # 为变量 a 赋值代入 7。
unless a >= 10 # 如果 a 不为 10 以上的话,
print "small"     #   显示 small。
end                 # 分歧结束。

case ~ end

在条件为特定的变量值进行分歧的情况下使用 case 语句会更方便。

a = 0              # 为变量 a 赋值代入 0。
case a             # 分歧开始。
when 0           #  当 a 为 0 时,  
print "零"        #   显示 零。
when 1           #  当 a 为 1 时,  
print "壹"        #   显示 壹。
when 2           #  当 a 为 2 时,  
print "贰"        #   显示 贰。
end                # 分歧结束。

把第一行 a = 后面的 0 改为 1 和 2,然后再来看看分歧的结果吧。当 a 代入 1 时会显示“壹”,代入 2 时会显示“贰”。
条件运算符使用符号 ? 和 : 也是运算符形式的条件分歧语句。

a = 3
p (a >= 10 ? "big" : "small")   # => "small"

这个示例的意思是,变量 a 的值在 10 以上的话就显示 "big", 9 以下的话就显示 "small"。条件运算符的语法是「条件 ? 真时的值 : 伪时的值」。上述的条件是 a >= 10,真时的值为 "big",伪时的值为 "small",会根据条件是否满足来决定使用 ? 或 : 的值。

当然使用 if 语句也能完成同样的事情。

a = 3
if a >= 10  p "big"
else  
p "small"end

使用 if 语句的语法会像上面写的那样,但是使用条件运算符语句会更加简洁。该语句在当前的脚本中也使用得很多,所以最好事先记住。




欢迎光临 仙剑之十里坡 (http://palslp.com/bbs/) Powered by Discuz! X2.5