MC新手入门(三十)------ 逻辑运算符和表达式
? 游戲設計中提供了三種邏輯運算符:
? ?? ? 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新手入门(三十)------ 逻辑运算符和表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu 12.10连接米2
- 下一篇: 函数体中定义的结构体和类型