MC新手入门(三十)------ 逻辑运算符和表达式

游戏设计中提供了三种逻辑运算符:

       1)&& 与运算

       2)|| 或运算
       3) !非运算

    游戏设计中我们常常要用到上面的逻辑运算,例如:当在双人游戏中都要实现两人同时存活才能过关,这时需要用与运算来实现;游戏中常常可以使用多种方式来消灭“敌人”,只要使用一种方式来消灭就可以完成任务,这时需要用或运算来实现;在登入界面中,只有当用户名和密码都有输入的情况下,才开始进行身份验证,这时需要用非运算。

使用场景:在密室逃脱游戏中,有三道门,按照不同的要求,可以依次打开这三道门。

目标:按照需求打开三道门

实例:

第一关:要求至少拿一把钥匙才能开门

5-3-2-1.png

图5-3-2-1  

第二关:要求两把钥匙都拿起来才能开门

5-3-2-2.png

图5-3-2-2

第三关:可以直接开门,但是如果拿起钥匙,门就坏了,再也不能开了

5-3-2-3.png

图5-3-2-3

第四关:过关场景

5-3-2-4.png

图5-3-2-4

首先我们把实例用逻辑来描述:

先定义关卡数,以及一个描述是否拿起钥匙的标志位

      第一关:

         如果两把钥匙拿起了其中一把

            关卡数+1

               标志位重置

                 搭建下一关场景

       第二关:

         如果两把钥匙拿起了其中一把

            关卡数+1

                标志位重置

                   搭建下一关场景

      第三关:

         如果两把钥匙拿起了其中一把

            关卡数+1

               标志位重置

                  搭建下一关场景

接着我们开始用MC来实现上述的逻辑:


//iLevel之前定义了,表示关卡数;flag[2]数组表示是否已经拾取了钥匙

          switch(iLevel)

         {

              case 0:

              if( flag[0]==1 || flag[1]==1)

              {

                  iLevel++;//增加关卡数

                  flag[0] = 0;

                  flag[1] = 0;//重置标志位

                  DestroyActor("item1");//开始搭建下一关场景,简单了解一下即可,不是重点

                  DestroyActor("item2");
                  CreateActor("item1","key1", "", "", -200, -155, true);

                  CreateActor("item2","key2", "", "", -50, 200, true);

                  sprintf(tip.text, "提示:两把钥匙都拿起来才能开门");

              }

             break;

             case 1:

             if( flag[0] == 1 &&flag[1] == 1 )

             {

                  iLevel++;//增加关卡数

                  flag[0] = 0;

                  flag[1] = 0;//重置标志位

                  DestroyActor("item1");//开始搭建下一关场景,简单了解一下即可,不是重点

                  DestroyActor("item2");

                  CreateActor("item1","key1", "", "", -100, 155, true);

                  sprintf(tip.text, "提示:别碰那把钥匙");

             }

            break;

            case 2:

            if( flag[0]!=1 )

            {

                 iLevel++;//增加关卡数

                 flag[0] = 0;//重置标志位

                 DestroyActor("item1");//开始搭建下一关场景,简单了解一下即可,不是重点

                 DestroyActor("EventActor");

                 sprintf(tip.text,"哦,终于逃出来了");

             }

             break;

         }

上面的例子涉及到三种逻辑运算符:与运算&&,或运算||以及非运算!

逻辑运算的值也为“真”和“假”两种,用非0和0来表示。其求值规则如下:

1)与运算&&:参与运算的两个量都为真时,结果才为真,否则为假。例如上面提到的12 < y < 24,在C语言里面就写成( y >12 && y < 24 ),如果y值为15,那么这个表达式就为真。

2)或运算||:参与运算的两个量只要有一个为真,结果就为真。两个量都为假时,结果为假。例如|x|>3,拆开写就是(x >3 || x < 3),当x取5的时候,表达式为真。

3)非运算!:参与运算的量为真时,结果为假;参与运算的量为假时,结果为真


Demo下载地址:http://www.dongyo.cn/bbs/forum.php?mod=viewthread&tid=2488&extra=page%3D2%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3Ddateline

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值