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

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nagios 配置及监控

Nagios 监控 在互联网日益发展的今天&#xff0c;监控的重要性已经不言而喻。可能打开一个URL要经过6-7层的处理&#xff0c;如果出了问题而没有监控将很难定位到问题所在。那哪些内容需要监控呢&#xff1f; 1.本地资源 (1) 负载&#xff1a;uptime&#xff1b; (2) CPU&…

if ($this-getRequest()-isPost()) {

if ($this->getRequest()->isPost()) { // Make certain to merge the files info! $post array_merge_recursive( $this->getRequest()->getPost()->toArray(), $this->getRequest()->getFiles()->toArray() ); $form->setData($post);转载于:htt…

SSH 配置

SSH 批量管理 SSH介绍 SSH是Secure Shell Protocol的简写&#xff0c;由IETF网络工作小组&#xff08;Network working Group&#xff09;指定&#xff1b;在进行数据传输之前&#xff0c;SSH先对联机数据包通过加密技术进行加密处理&#xff0c;加密后在进行数据传输。确保了传…

50种方法巧妙优化你的SQLServer数据库(转)

查询速度慢的原因很多&#xff0c;常见如下几种&#xff1a;    1、没有索引或者没有用到索引(这是查询慢最常见的问题&#xff0c;是程序设计的缺陷)    2、I/O吞吐量小&#xff0c;形成了瓶颈效应。    3、没有创建计算列导致查询不优化。    4、内存不足  …

SaltStack 第一板块入门介绍 [1]

SaltStack简单说明 一个配置管理系统&#xff0c;能够维护预定义状态的远程节点(比如&#xff0c;确保指定的报被安装&#xff0c;指定的服务在运行) 一个分布式远程执行系统&#xff0c;用来在远程节点&#xff08;可以是单个节点&#xff0c;也可以是任意规则挑选出来的节点&…

android 捕捉home键

android4.0以下 可用 privatebooleancatchHomeKey false; public void onAttachedToWindow() { if (!catchHomeKey) { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); } super.onAttachedToWindow(); } 然后再在 onKeyDown方法中捕…

SaltStack 第二板块安装说明 [2]

安装说明我们为了模拟环境开启两台服务器&#xff0c;本次以Centos7 为例主机名 IP地址 说明 linux-node1.example.com 192.168.56.11 模式&#xff1a;master linux-node2.example.com 192.168.56.12 模式&#xff1a;minion 官方已经提供了Yum&#xff0c;我们可以指…

文件设置Thrift实例

时间紧张&#xff0c;先记一笔&#xff0c;后续优化与完善。 要学习Thrift&#xff0c;它的官网上有资料分析以及实例&#xff0c;可以到官网&#xff1a;http://thrift.apache.org/上查看。 在官网下载thrift的资源包&#xff0c;安装编译生成响应语言下的jar包&#xff0c;详…

服务器重启导致无法启动MySQL

今天服务器受到DDOS攻击&#xff0c;笔者脑残重启了一下服务器。结果造成MySQL服务器无法启动mysql日志见下图。160803 17:43:47 mysqld_safe Starting mysqld daemon with databases from /application/mysql/data160803 17:43:47 [Note] /application/mysql/bin/mysqld (mysq…

Linux守护进程列表

在linux或者unix操作系统中在系统的引导的时候会开启很多服务&#xff0c;这些服务就叫做守护进程。为了增加灵活性&#xff0c;root可以选择系统开启的模式&#xff0c;这些模式叫做运行级别&#xff0c;每一种运行级别以一定的方式配置系统。 守护进程是脱离于终端并且在后台…

架构师之DNS实战

架构师 DNS实战 老男孩教育 DNS简介 1. DNS的出现及演化 网络出现的早起是使用IP地址通讯的&#xff0c;那是就几台主机通讯。但是随着接入网络主机的增多&#xff0c;这种数字标识的地址非常不便于记忆&#xff0c;UNIX上就出现了建立一个叫做hosts的文件&#xff08;Linux和W…

打包jar文件后的spring部署及hibernate自动建表经验总结

楔子 用springhibernate做一个服务器运行程序&#xff0c;在部署到服务器时&#xff08;打包成jar&#xff0c;在window server2008下运行&#xff09;&#xff0c;出现了以下两个纠结问题&#xff1a; 1. 加载不了Spring容器 2. hibernate.hbm2ddl.auto 到了服务器不能自动建表…

c语言非线程安全函数引发的BUG一列

公司的机器最近遇到一个bug(其实这个bug一年前就出现过,只是未引起重视),现象是这样的:在生产环境中,用户连续打印票的时候,中间某张票的一个时间可能会出问题,该时间本来是一个未来的时间,却被打印成了系统当前的时间.其他同事认为是传入的参数出错了,加了大量的调试信息和日志…

我是一个线程 [转]

我是一个线程&#xff0c;我一出生就被编了个号&#xff1a;0x3704&#xff0c;然后被领到一个昏暗的屋子里&#xff0c;在这里我发现了很多和我一模一样的同伴。 我身边的同伴0x6900 待的时间比较长&#xff0c;他带着沧桑的口气对我说&#xff1a;“我们线程的宿命就是处理包…

自动化运维之–Cobbler

Cobbler 自动化 Cobbler简介 Cobbler是一个快速网络安装linux的服务&#xff0c;而且在经过调整也可以支持网络安装windows。该工具使用python开发&#xff0c;小巧轻便&#xff08;才15k行python代码&#xff09;&#xff0c;使用简单的命令即可完成PXE网络安装环境的配置&…

基于VC++6.0的DLL开发

原文地址&#xff1a;http://blog.163.com/twnhr126/blog/static/78927547200910254346804/ 基于VC6.0的DLL开发 最近在开发一个基于网络的模块&#xff0c;目标是将这个在CAsyncSocket基础上开发的扩展类&#xff0c;进行有效的封装&#xff0c;向应用程序提供模块化的功能&a…

开源jumpserver 堡垒机搭建

一、环境 CentOS 6.x x86_64 mini service iptables stop 关闭SELinux的方法&#xff1a; 修改/etc/selinux/config文件中的SELINUX”” 为 disabled &#xff0c;然后重启。 如果不想重启系统&#xff0c;使用命令setenforce 0 1.指定yum源 wget -O /etc/yum.repos.d/e…

Standard Driver Routines(标准驱动程序)

标准驱动程序 This section describes the required and optional routines that you must implement in your driver to respond to calls from Windows or other drivers. 本节介绍当驱动被Windows或其它驱动程序调用时&#xff0c;为了做出适当的回应&#xff0c;你的驱动必…

Shell 变量及函数讲解 [2]

Shell 变量的输入 Shell变量除了可以直接赋值或脚本传参外&#xff0c;还可以使用read命令从标准输入获得&#xff0c;read为bash内置命令&#xff0c;可以通过help read查看帮助【语法格式】read [参数] [变量名]【常用参数】-p prompt&#xff1a;设置提示信息-t timeout&…

python实例化次数怎么算,我需要一个Python类来跟踪它被实例化的次数

I need a class that works like this:>>> aFoo()>>> bFoo()>>> cFoo()>>> c.i3Here is my try:class Foo(object):i 0def __init__(self):Foo.i 1It works as required, but I wonder if there is a more pythonic way to do it.解决方…