[MCBE]你學(xué)了數(shù)字轉(zhuǎn)化了嗎? #5

1.什么是數(shù)字轉(zhuǎn)化
數(shù)字轉(zhuǎn)化指將某個(gè)不能直接讀取但能夠通過選擇器區(qū)間的方法檢測(cè)的量(例如坐標(biāo),經(jīng)驗(yàn),視角)轉(zhuǎn)換為計(jì)分板分?jǐn)?shù)或其他量,或者反向轉(zhuǎn)換。
例如:檢測(cè)垂直視角,讀取寫入坐標(biāo)等
本期教程主要講解了三種數(shù)字轉(zhuǎn)化的方法
2.數(shù)字轉(zhuǎn)化的方法
2.1.窮舉法
顧名思義,列舉出所有可能性進(jìn)行檢測(cè),即如果玩家垂直旋轉(zhuǎn)視角為90至-90度,那么把視角90度的玩家分?jǐn)?shù)設(shè)90,89度的設(shè)89,以此類推。
但是窮舉法檢測(cè)范圍較大的量時(shí)往往需要極大量的命令方塊,因此主要適用于情況較少時(shí)
2.2.遞歸法
遞歸法,利用一組重復(fù)的命令方塊,像小孩子數(shù)數(shù)一樣,一個(gè)一個(gè)數(shù),不斷重復(fù)執(zhí)行當(dāng)檢測(cè)量大于最小值時(shí),將檢測(cè)量-1并且計(jì)分板+1。這樣到了最后,原來檢測(cè)量就等于計(jì)分板分?jǐn)?shù)。
遞歸法用的命令方塊數(shù)量較少,但是計(jì)算較大量時(shí)游戲卡頓,出結(jié)果耗時(shí)長(zhǎng),對(duì)于需要精確控制時(shí)間或者數(shù)字較大的量不適用(例如坐標(biāo))
補(bǔ)充:另外有人可能會(huì)想到多個(gè)遞歸堆疊以節(jié)約時(shí)間,經(jīng)作者實(shí)測(cè)這樣誤差極大,不可行。
2.3.二分法
二分法利用任何數(shù)都可以被分解為1或2的次方的數(shù)相加的原理,例如85可以被分解為64+16+4+1(2^6+2^4+2^2+1),所以我們可以讓檢測(cè)量與以上數(shù)字對(duì)比,如果數(shù)字大于檢測(cè)量則選擇下一個(gè)較小的數(shù)字,如果數(shù)字小于或等于檢測(cè)量則讓檢測(cè)量減去數(shù)字并選擇下一個(gè)。
例如玩家的等級(jí)是85級(jí),先比對(duì)256(一般情況下經(jīng)驗(yàn)等級(jí)不會(huì)大于等于這個(gè)數(shù)的2倍),很顯然85小于256,檢測(cè)下一個(gè)
128:85小于128,下一個(gè)
64:85大于64,讓85減去64(此時(shí)玩家經(jīng)驗(yàn)等級(jí)為21),計(jì)分板上加64(此時(shí)計(jì)分板為64),然后下一個(gè)
32:21小于32,下一個(gè)
16:21大于16,讓21減去16(此時(shí)為5),計(jì)分板加16(80),下一個(gè)
8:5小于8,下一個(gè)
4:5大于4,讓5減4(1),計(jì)分板+4(84),下一個(gè)
2:1小于2,下一個(gè)
1:1(檢測(cè)量)等于1(數(shù)字),讓1-1(0),計(jì)分板+1(85)。
此時(shí)所有分?jǐn)?shù)對(duì)比完成,檢測(cè)量為0,計(jì)分板為原來的檢測(cè)量。
二分法適用于讀寫較大的量,它可以在1t以內(nèi)讀取或?qū)懭胪瓿?。不過對(duì)于較小量更建議遞歸,因?yàn)槎址ㄗx個(gè)7都要6cb,遞歸2cb延遲也才7t,2cb它不香嗎?
最后,感謝倉(cāng)鼠為我們帶來命令培優(yōu)系列。