挑戰(zhàn)如下圖所示:
1.挑戰(zhàn)先給一個(gè)常量站刑,這個(gè)常量等于隨機(jī)寶石的數(shù)量;例如:寶石隨機(jī)5個(gè),totalgems就=5
這個(gè)常量作用不大春感,主要是后面使用whlie語句時(shí),使寶石數(shù)小于隨機(jī)數(shù)時(shí)虏缸,可以一直循環(huán)whlie內(nèi)語句用的
let totalGems = randomNumberOfGems
2.我們先設(shè)2個(gè)常量鲫懒,初始值都=0;一個(gè)是寶石數(shù)刽辙,一個(gè)是“轉(zhuǎn)身”數(shù)(這才是最有用的?摇!T诅汀)
var numberOfGem = 0
var numberOfGoback = 0
3.定義一個(gè)“轉(zhuǎn)身”函數(shù)颂翼,這個(gè)函數(shù)就是當(dāng)前方遇到阻礙時(shí),2次左轉(zhuǎn)來實(shí)現(xiàn)轉(zhuǎn)身的
?funcgoback()
{
? ? turnLeft()
? ? turnLeft()
}
4.定義獲取寶石和前方遇到阻礙時(shí)慨灭,主角的動作朦乏;當(dāng)然,寶石數(shù)和轉(zhuǎn)身數(shù)都要相應(yīng)增加 +=1
funcgetgem()
{
? ? ifisBlocked
? ? {
? ? ? ? goback()
? ? ? ? numberOfGoback +=1
? ? }
? ? ifisOnGem
? ? {
? ? ? ? collectGem()
? ? ? ? numberOfGem +=1
? ? }
}
5.再定義一個(gè)轉(zhuǎn)身次數(shù)與粉開關(guān)&藍(lán)開關(guān)的對應(yīng)關(guān)系缘挑,false為關(guān)集歇,true為開
場景:【轉(zhuǎn)身1,粉關(guān)】语淘、【轉(zhuǎn)身2诲宇,粉開】、【轉(zhuǎn)身3惶翻,粉關(guān)&藍(lán)關(guān)】
? ? ? ? ? ?【轉(zhuǎn)身4姑蓝,藍(lán)開】、【轉(zhuǎn)身5吕粗,藍(lán)關(guān)】
說明:轉(zhuǎn)身次數(shù)1~5的條件都是有必要的纺荧,多運(yùn)行幾次就會發(fā)現(xiàn)寶石的分布會出現(xiàn)在
一些角落里,如果條件少了颅筋,寶石就會獲取不到(代碼還可以優(yōu)化宙暇,不過我懶得改了)
functwoswitch()
{
? ? ifnumberOfGoback ==1
? ? {pinkPortal.isActive = false}
? ? ifnumberOfGoback ==2
? ? {pinkPortal.isActive = true}
? ? ifnumberOfGoback ==3
? ? {
? ? ? ? pinkPortal.isActive = false
? ? ? ? bluePortal.isActive = false
? ? }
? ? ifnumberOfGoback ==4
? ? {bluePortal.isActive = true}
? ? ifnumberOfGoback ==5?
? ? {bluePortal.isActive = false}
}
6.下面為簡單代碼,函數(shù)變量等說明都是上面了??
whilenumberOfGem != totalGems
{
? ? moveForward()
? ? getgem()
? ? twoswitch()
}
7.最后就是所有代碼了议泵,大家可以參考一下占贫;另外,寶石數(shù)不能決定開關(guān)是否開關(guān)啊喂(反正我是沒找到方法)先口,后面靈光一閃型奥,發(fā)現(xiàn)轉(zhuǎn)身的次數(shù)用來決定粉色和藍(lán)色開關(guān)是否開關(guān)才是最佳的辦法巴铡!O嵝凇螟深!果斷被寶石數(shù)和隨機(jī)寶石數(shù)所迷惑了,并且“提示”還建議比較2者進(jìn)行寫代碼烫葬?界弧!
//隨機(jī)數(shù)totalgems
lettotalGems = randomNumberOfGems
//設(shè)變量寶石數(shù),初始值為0
varnumberOfGem =0
varnumberOfGoback =0
//定義轉(zhuǎn)身函數(shù)
funcgoback()
{
? ? turnLeft()
? ? turnLeft()
}
//定義獲取寶石和轉(zhuǎn)身的函數(shù)
funcgetgem()
{
? ? ifisBlocked
? ? {
? ? ? ? goback()
? ? ? ? numberOfGoback +=1
? ? }
? ? ifisOnGem
? ? {
? ? ? ? collectGem()
? ? ? ? numberOfGem +=1
? ? }
}
//定義開關(guān)的函數(shù)
functwoswitch()
{
? ? ifnumberOfGoback ==1
? ? {pinkPortal.isActive =false}
? ? ifnumberOfGoback ==2
? ? {pinkPortal.isActive =true}
? ? ifnumberOfGoback ==3
? ? {
? ? ? ? pinkPortal.isActive =false
? ? ? ? bluePortal.isActive =false
? ? }
? ? ifnumberOfGoback ==4
? ? {bluePortal.isActive =true}
? ? ifnumberOfGoback ==5?
? ? {bluePortal.isActive =false}
}
//*****正式代碼正式代碼正式代碼正式代碼*****
whilenumberOfGem != totalGems
{
? ? moveForward()
? ? getgem()
? ? twoswitch()
}
//轉(zhuǎn)身1,粉關(guān)
//轉(zhuǎn)身2厘灼,粉開
//轉(zhuǎn)身3夹纫,粉關(guān),藍(lán)關(guān)
//轉(zhuǎn)身4设凹,藍(lán)開
//轉(zhuǎn)身5舰讹,藍(lán)關(guān)