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

1)&& 与运算

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

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

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

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

实例:

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

图5-3-2-1

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

图5-3-2-2

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

图5-3-2-3

第四关:过关场景

图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

转载于:https://www.cnblogs.com/mcgame/archive/2013/05/16/3081638.html

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

  1. 新手入门机器学习十大算法

    新手入门机器学习十大算法 2018年9月17日 磐石 TensorFlowNews, 机器学习 0 在机器学习的世界中,有一种被称为"无免费午餐"的定理. 它意在说明没有哪种算法能 ...

  2. [转]周易入门三十五问答

    周易入门三十五问答 http://mt.sohu.com/20150714/n416782382.shtml 1.问:何谓<周易>? 答:<周易>是我国古代哲学.自然科学与社会 ...

  3. 【悟空云课堂】第三十三期:表达式永假/永真(CWE-570:Expression is Always False)

    关注公众号"中科天齐软件安全中心"(id:woocoom),一起涨知识! 该栏目为中科天齐全新规划的悟空云课堂,每周五下午18:00准时上线,旨在科普软件安全相关知识,助力企业有效 ...

  4. MC新手入门(二十八)------ 顺序结构程序

    顺序结构是三种基本结构中最简单的一种结构.程序执行的顺序:按自上向下的顺序依次执行.如下流程图所示: 图5-2-1 游戏设计中提供了多种简单语句,可以组成各种不同形式的顺序结构. 如下所示: 图5-2 ...

  5. MC新手入门(五十)------服务器连接 一

    服务器是现在网络游戏一个必不可少的部分.例如手机游戏<动友大富翁>.<斗地主>等,这都需要依赖于服务器.下面是一个游戏登录.注册界面,图10-1是游戏登录界面,图10-2是游戏 ...

  6. MC新手入门(十三)------ 添加游戏角色

    我们使用之前介绍的游戏开发工具MC来添加游戏角色.下面我们添加两个角色,一个为动态图片的角色,一个为静态图片的角色.如图4-1-1-1: 图4-1-1-1(左静右动) 首先,准备两组图片放在MC的根目 ...

  7. python3 入门 (三) 函数与lambda表达式、闭包

    函数 是组织好的.可重复使用的.用来实现单一或相关联功能的代码段. 函数代码块以def关键词开头,后接函数标识符名称和圆括号() 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数 函 ...

  8. WebGL入门(三十九)-透明与不透明物体共存,绘制透明面和不透明面的立方体

    绘制透明面和不透明面的立方体 1. 绘制透明立方体 1.1 绘制透明立方体要点 1.2 绘制透明立方体demo效果 1.3 绘制透明立方体demo代码 1.4 开启隐藏面消除后 2. 透明与不透明共存 ...

  9. WebGL入门(三十五)-三维物体雾化效果,立方体雾化效果

    立方体雾化效果 1. demo效果 2.相关知识点 2.1 雾化相关概念 2.2 雾化因子计算 2.3 片元颜色计算 3.实现要点 3.1 计算顶点与视点的距离 3.2 计算雾化后片元颜色 3.3 计 ...

最新文章

  1. Python实现按序合并多个pdf文件
  2. c++生成nurbs曲面文件_使用曲面细分丰富原始多边形
  3. 对称非对称算法混合加密实战(DES和AES混合加密)
  4. 14种常见HTTP状态码
  5. Mysql实现企业级日志管理、备份与恢复
  6. Android事件分发机制:基础篇:最全面、最易懂
  7. 信息收集 ——C段扫描
  8. codeforces 112A-C语言解题报告
  9. flux服务器推消息,服务端主动推送数据,除了 WebSocket 你还能想到啥?
  10. 利用Vert.x构建简单的API 服务、分布式服务
  11. FoundationDB 开源文档数据库模型 Document Layer​​​​​​​
  12. 千万要避免的五种程序注释方式
  13. 戴尔t440服务器性能,戴尔_PowerEdge T440_塔式服务器_网络存储服务器_服务器 | Dell 中国大陆...
  14. 在学校报名了计算机一级考试时间,2020年山东计算机一级报名及考试时间
  15. Neat Download Manager-ndm下载器:短小精悍的mac下载工具
  16. 用html制作QQ彩贝
  17. 知识直播的“顶流”,正在被复制
  18. linux的目录以及作用
  19. js实现文字转语音功能tts
  20. 14位125MSPS四通道ADC电路图讲解(通过后端数字求和增强SNR性能)_电工基础电路图讲解

热门文章

  1. mysql+性能+计算列_MYSQL性能优化的最佳20+条经验
  2. mac os touch命令_Mac系统忘记开机密码怎么办?
  3. zookeeper一键启动关闭JAVA_HOME在PATH中找不到报错踩坑记
  4. Springboot@PathVariable注解使用--请求路径占位符
  5. c语言中参数的传递方式是,C语言函数的参数及传递方式
  6. 继承情况下构造方法的调用过程-java
  7. java list 超出范围_java-列索引超出范围:2,列数1
  8. java 各种数据类型的互相转换
  9. C语言数据类型转换详解
  10. spring boot 如何修改默认端口号和context path