MC新手入门(三十一)------ 条件判断语句
在游戏设计中用if语句构成分支结构。它根据给定的条件进行判断,其中进行条件判断的表达式通常就是前两节提到的关系表达式或逻辑表达式,通过其值的真假来决定执行某个分支程s序段。游戏设计中的if语句有三种基本形式。
1. if语句
使用场景:当鼠标点击人物的时候,人物掉血10点,当人物血量降到0的时候,状态显示变为“你挂了”
目标:判断玩家的生命值是否在健康状态
实例:
图5-3-3-1
首先我们将目标转换成逻辑描述:
判断玩家的血量是否为0
如果为0则显示“你挂了”。
接着我们开始用MC来实现上述的逻辑:
if(iHp_rec == 0 )//判断生命值是否为0
{
sprintf(text,"你挂了");//显示”你挂了”
}
由上面的例子可以得出,
if语句的格式为:
if(表达式) 语句其执行过程可表示为下图:
2.if-else语句
使用场景:在点击角色时,判断目标是否被命中
目标:对是否命中目标进行判定实例:
首先我们将目标转换成逻辑描述:
在0-100中取一个随机值
如果随机值大于40,则输出miss
否则 输出-50
接着我们开始用MC来实现上述的逻辑:
double dFlag;//设置一个浮点型
DestroyActor("miss");//删除角色
missdFlag = rand(100);//随机从0-100取值
if(dFlag > 40)//如果随机值大于40
{
CreateActor("actMiss","icon", "", "", x, y-50, true);.//在指定位置创建文字角色
sprintf(actMiss.text,"Miss");//输出miss文字
}
else
{
CreateActor("actMiss","icon", "", "", x, y-50, true);//在指定位置创建角色
sprintf(actMiss.text,"-50");//输出”-50”
}
由上面的例子可以得出
if-else基本表达形式为:
if(表达式) 语句1; else 语句2;
其语义是:如果表达式的值为真,则执行语句1,否则执行语句2。其执行过程可表示为下图:
3. switch-case语句
使用场景:在开宝箱的过程中,随机出现3种物品的一种
目标:点击角色,随机出现3种物品的一种
实例:
图5-3-3-3
首先我们将目标转换成逻辑描述:
随机取一个整数
取随机数除3的余数,得到另外一个随机数
若余数为0,则显示道具1
若余数为1,则显示道具2
若于是为2,则显示道具3
接着我们开始用MC来实现上述的逻辑:
dFlag = rand(100);//取一个整数值
dFlag = dFlag%3;//取整数值除3的余数
switch(dFlag)
{
case 0://如果余数为0
ChangeAnimation("EventActor", "shoes", FORWARD);//显示鞋子
break;//退出
case 1://如果余数为1
ChangeAnimation("EventActor", "match", FORWARD);//显示火柴
break;//退出
case 2://如果余数为2
ChangeAnimation("EventActor", "sword", FORWARD);//显示宝剑
break;退出
}
从上面的例子中可以看出
switch的基本表达式:
switch(表达式)
{
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
……
case 常量表达式n:
语句n;
break;
default:
语句n+1;
break;
}
switch语句的执行流程是:
首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行default后面的语句n+1,然后退出switch语句,程序流程转向开关语句的下一个语句。
switch的语句的流程图为:
Demo下载地址:http://www.dongyo.cn/bbs/forum.php?mod=viewthread&tid=2499&extra=page%3D2%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3Ddateline