MC新手入门(三十)------ 逻辑运算符和表达式
? 游戲設(shè)計中提供了三種邏輯運(yùn)算符:
? ?? ? 1)&& 與運(yùn)算
? ?? ? 2)|| 或運(yùn)算
? ?? ? 3) !非運(yùn)算
? ??游戲設(shè)計中我們常常要用到上面的邏輯運(yùn)算,例如:當(dāng)在雙人游戲中都要實(shí)現(xiàn)兩人同時存活才能過關(guān),這時需要用與運(yùn)算來實(shí)現(xiàn);游戲中常常可以使用多種方式來消滅“敵人”,只要使用一種方式來消滅就可以完成任務(wù),這時需要用或運(yùn)算來實(shí)現(xiàn);在登入界面中,只有當(dāng)用戶名和密碼都有輸入的情況下,才開始進(jìn)行身份驗(yàn)證,這時需要用非運(yùn)算。
使用場景:在密室逃脫游戲中,有三道門,按照不同的要求,可以依次打開這三道門。
目標(biāo):按照需求打開三道門
實(shí)例:
第一關(guān):要求至少拿一把鑰匙才能開門
圖5-3-2-1??
第二關(guān):要求兩把鑰匙都拿起來才能開門
?
?
圖5-3-2-2
第三關(guān):可以直接開門,但是如果拿起鑰匙,門就壞了,再也不能開了
?
圖5-3-2-3
第四關(guān):過關(guān)場景
?
圖5-3-2-4
首先我們把實(shí)例用邏輯來描述:
先定義關(guān)卡數(shù),以及一個描述是否拿起鑰匙的標(biāo)志位
? ?? ?第一關(guān):
? ?? ?? ?如果兩把鑰匙拿起了其中一把
? ?? ?? ?? ?關(guān)卡數(shù)+1
? ?? ?? ?? ?? ?標(biāo)志位重置
? ?? ?? ?? ?? ???搭建下一關(guān)場景
? ?? ? 第二關(guān):
? ?? ?? ?如果兩把鑰匙拿起了其中一把
? ?? ?? ?? ?關(guān)卡數(shù)+1
? ?? ?? ?? ?? ? 標(biāo)志位重置
? ?? ?? ?? ?? ?? ? 搭建下一關(guān)場景
? ?? ?第三關(guān):
? ?? ?? ?如果兩把鑰匙拿起了其中一把
? ?? ?? ?? ?關(guān)卡數(shù)+1
? ?? ?? ?? ?? ?標(biāo)志位重置
? ?? ?? ?? ?? ?? ?搭建下一關(guān)場景
接著我們開始用MC來實(shí)現(xiàn)上述的邏輯:
?
//iLevel之前定義了,表示關(guān)卡數(shù);flag[2]數(shù)組表示是否已經(jīng)拾取了鑰匙
? ?? ?? ? switch(iLevel)
? ?? ?? ?{
? ?? ?? ?? ???case 0:
? ?? ?? ?? ???if( flag[0]==1 || flag[1]==1)
? ?? ?? ?? ???{
? ?? ?? ?? ?? ?? ?iLevel++;//增加關(guān)卡數(shù)
? ?? ?? ?? ?? ?? ?flag[0] = 0;
? ?? ?? ?? ?? ?? ?flag[1] = 0;//重置標(biāo)志位
? ?? ?? ?? ?? ?? ?DestroyActor("item1");//開始搭建下一關(guān)場景,簡單了解一下即可,不是重點(diǎn)
? ?? ?? ?? ?? ?? ?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++;//增加關(guān)卡數(shù)
? ?? ?? ?? ?? ?? ?flag[0] = 0;
? ?? ?? ?? ?? ?? ?flag[1] = 0;//重置標(biāo)志位
? ?? ?? ?? ?? ?? ?DestroyActor("item1");//開始搭建下一關(guān)場景,簡單了解一下即可,不是重點(diǎn)
? ?? ?? ?? ?? ?? ?DestroyActor("item2");
? ?? ?? ?? ?? ?? ?CreateActor("item1","key1", "", "", -100, 155, true);
? ?? ?? ?? ?? ?? ?sprintf(tip.text, "提示:別碰那把鑰匙");
? ?? ?? ?? ? }
? ?? ?? ?? ?break;
? ?? ?? ?? ?case 2:
? ?? ?? ?? ?if( flag[0]!=1 )
? ?? ?? ?? ?{
? ?? ?? ?? ?? ???iLevel++;//增加關(guān)卡數(shù)
? ?? ?? ?? ?? ???flag[0] = 0;//重置標(biāo)志位
? ?? ?? ?? ?? ???DestroyActor("item1");//開始搭建下一關(guān)場景,簡單了解一下即可,不是重點(diǎn)
? ?? ?? ?? ?? ???DestroyActor("EventActor");
? ?? ?? ?? ?? ???sprintf(tip.text,"哦,終于逃出來了");
? ?? ?? ?? ? }
? ?? ?? ?? ? break;
? ?? ?? ?}
上面的例子涉及到三種邏輯運(yùn)算符:與運(yùn)算&&,或運(yùn)算||以及非運(yùn)算!
邏輯運(yùn)算的值也為“真”和“假”兩種,用非0和0來表示。其求值規(guī)則如下:
1)與運(yùn)算&&:參與運(yùn)算的兩個量都為真時,結(jié)果才為真,否則為假。例如上面提到的12 < y < 24,在C語言里面就寫成( y >12 && y < 24 ),如果y值為15,那么這個表達(dá)式就為真。
2)或運(yùn)算||:參與運(yùn)算的兩個量只要有一個為真,結(jié)果就為真。兩個量都為假時,結(jié)果為假。例如|x|>3,拆開寫就是(x >3 || x < 3),當(dāng)x取5的時候,表達(dá)式為真。
3)非運(yùn)算!:參與運(yùn)算的量為真時,結(jié)果為假;參與運(yùn)算的量為假時,結(jié)果為真
Demo下載地址:http://www.dongyo.cn/bbs/forum.php?mod=viewthread&tid=2488&extra=page%3D2%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3Ddateline
?
轉(zhuǎn)載于:https://www.cnblogs.com/mcgame/archive/2013/05/16/3081638.html
總結(jié)
以上是生活随笔為你收集整理的MC新手入门(三十)------ 逻辑运算符和表达式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu 12.10连接米2
- 下一篇: 函数体中定义的结构体和类型