Scratch與數(shù)學(xué)的整合15
????????????????????????第15課????????數(shù)字掃雷挑戰(zhàn)
一、課程回顧
????????猜數(shù)字是你向?qū)Ψ桨l(fā)起挑戰(zhàn),讓對(duì)方給你提供隨機(jī)數(shù)的范圍,你猜對(duì)方心中想要說(shuō)的數(shù)字。你回答的數(shù)大于對(duì)方想說(shuō)的數(shù)字,對(duì)方就告訴你:“猜大了”。反之同理。當(dāng)然這兩種都是失敗,只有猜對(duì)才算成功。
????????理論上來(lái)講,由于隨機(jī)數(shù)的范圍是有限的,因此猜數(shù)字游戲獲勝屬于隨機(jī)事件。但就是為了增強(qiáng)游戲的趣味性,Scratch總是故意讓你猜不中。生活中也有類似的東西,例如你買了彩票總是中不了獎(jiǎng),和Scrarch猜數(shù)字的道理是一樣的。
二、知識(shí)儲(chǔ)備
????????1、猜數(shù)字是一次性你問(wèn)我答的游戲,錯(cuò)一次就會(huì)結(jié)束游戲,這也是猜數(shù)字的難點(diǎn)所在。那我們能否換一種玩法,在不影響趣味性的條件下,給我們更多次機(jī)會(huì)呢?請(qǐng)大家交流一下并告訴我。大家都一致認(rèn)為是數(shù)字掃雷,確實(shí)是,也是最近網(wǎng)上非?;鸬挠螒?,大家聚會(huì)時(shí)都可以玩。
????????2、那規(guī)則呢?:出題者給其他人一個(gè)隨機(jī)數(shù),讓每個(gè)人輪流猜,當(dāng)?shù)谝粋€(gè)人猜了一個(gè)數(shù)后,如果猜小了,出題者會(huì)說(shuō):“猜小了?!辈?duì)隨機(jī)數(shù)作出調(diào)整:最大值調(diào)到剛才這個(gè)數(shù)的前一個(gè)數(shù),以此類推,等到該區(qū)間內(nèi)有且只剩1個(gè)數(shù)時(shí),他必輸無(wú)疑。另外規(guī)定所采的數(shù)必須為正整數(shù),通常不報(bào)最小最大值本身。(圖1所示)注意:“碰到雷”是輸,不是贏。

三、流程圖

? ? ? ? 首先程序開(kāi)始。然后確定隨機(jī)數(shù)范圍,此時(shí)程序會(huì)將你“掃”的數(shù)字設(shè)定在該數(shù)的隨機(jī)數(shù)范圍內(nèi),并通過(guò)說(shuō)話告訴你:“在××與××之間輸入數(shù)字”,你輸入某個(gè)數(shù)字,若程序發(fā)現(xiàn)你回答的數(shù)不在詢問(wèn)的范圍內(nèi),就會(huì)導(dǎo)致死循環(huán),即每一秒都在問(wèn)你這個(gè)問(wèn)題,只有在這個(gè)范圍程序才會(huì)繼續(xù)執(zhí)行,接下來(lái)判斷你輸入的謎底是不是猜小了,如果猜小了,接下來(lái)會(huì)將最小值加1繼續(xù)問(wèn)你,否則會(huì)將最大值減1繼續(xù)問(wèn)你,就如此重復(fù)執(zhí)行,一直到該區(qū)間內(nèi)只剩謎底那一個(gè)數(shù),此時(shí)你輸入了這個(gè)謎底后,程序結(jié)束。
四、變量信息
????????范圍內(nèi)上限、范圍內(nèi)下限、炸彈(小提示:測(cè)試編程是否成功實(shí)現(xiàn)時(shí),可以隱藏舞臺(tái)區(qū)顯示的變量;也可以把范圍內(nèi)上下限改成最大最小數(shù))
五、代碼示例
????????我們以1——100的隨機(jī)數(shù)為例,來(lái)看一下代碼吧。
????????(0)——(3):新建“范圍內(nèi)下限”變量并設(shè)為最小值1,“范圍內(nèi)上限”設(shè)為最大值100,再拿出隨機(jī)數(shù)積木,最小值放前面最大值放后面,作為變量“炸彈”的輸入值。
當(dāng)綠旗被點(diǎn)擊????(0)
將范圍內(nèi)下限設(shè)為1????(1)
將范圍內(nèi)上限設(shè)為100????(2)
將炸彈設(shè)為在范圍內(nèi)下限和范圍內(nèi)上限之間取隨機(jī)數(shù)????(3)
????????(4)——(5):開(kāi)始讓角色一直讓你猜謎底,直到失敗。由于次數(shù)沒(méi)有確定性,∴用重復(fù)執(zhí)行。重復(fù)整個(gè)程序后面的所有部分。
重復(fù)執(zhí)行????(4)
詢問(wèn)連接連接連接連接猜一個(gè)數(shù)(和范圍內(nèi)下限和——和范圍內(nèi)上限和)????(5)
????????(6):根據(jù)規(guī)則,不能回答“非法”的數(shù)字,∴要加入最外層的如果,對(duì)回答進(jìn)行判斷回答是否包含小數(shù)點(diǎn),“回答”+另一個(gè)數(shù)=0,∵在Scratch中任何數(shù)加上空白的數(shù)都得0,還要判斷回答是否在范圍內(nèi)上下限之內(nèi),在范圍外就會(huì)造成死循環(huán),在范圍內(nèi)才會(huì)繼續(xù)執(zhí)行。
如果回答包含·或回答+? ??=0或回答>范圍內(nèi)上限或回答<范圍內(nèi)下限不成立那么????(6)←外層的如果
????????(7):中間的如果模塊是判斷回答是否小于“炸彈”,如果是小于,那么接下來(lái)執(zhí)行(8)——(9),否則執(zhí)行(11)——(12);若執(zhí)行的是(8)——(9),人家告訴你猜小了,并將范圍內(nèi)下限加1;若執(zhí)行的是(11)——(12),與(10)的否則連上并告訴你猜大了,并將范圍內(nèi)上限減1。
如果回答<炸彈那么????(7)←中間的“如果”模塊
說(shuō):“猜小了”2秒????(8)
將范圍內(nèi)下限設(shè)為回答+1????(9)
否則????(10)←外層的“否則”
說(shuō):“猜大了”2秒????(11)
將范圍內(nèi)上限設(shè)為回答-1????(12)
否則????(13)←內(nèi)層的“否則”
????????(14)——(18)接下來(lái)就是該游戲怎么必輸?shù)牧?。?5)的“喵”也可以省略掉。
等待1秒????(14)
播放聲音:喵????(15)
等待1秒????(16)
停止全部腳本????(17)

????????