国产日韩欧美一区二区三区综合,日本黄色免费在线,国产精品麻豆欧美日韩ww,色综合狠狠操

極客小將

您現在的位置是:首頁 » scratch編程資訊

資訊內容

Scratch第65講:24點小游戲-想象版

極客小將2020-12-01-
什么是想象版,就是CC哥光用腦子想了,沒有真的編程!是不是有點尷尬,不過CC哥以后還是會抽時間把程序寫出來的,大家放心。不過這一講里可真的是只有想象,沒有代碼。 相信大家都玩過24點,CC哥就特別不擅長24點,我覺得24點就是跳躍思維的一種能力,能夠迅速的嘗試不同的

什么是想象版,就是CC哥光用腦子想了,沒有真的編程!是不是有點尷尬,不過CC哥以后還是會抽時間把程序寫出來的,大家放心。不過這一講里可真的是只有想象,沒有代碼。

相信大家都玩過24點,CC哥就特別不擅長24點,我覺得24點就是跳躍思維的一種能力,能夠迅速的嘗試不同的算法,就是經驗加跳躍思維的能力。CC哥的邏輯思維能力很強,但是跳躍思維確實不夠,而跳躍思維往往也是人生發展過程中的一個重要能力。因為跳躍思維往往能幫助你打破現有的思維框架,找到另辟蹊徑的解決方案。不論是搞科研,做生意,甚至玩金融,跳躍思維都是你致勝的一個有力武器。

不說廢話,CC哥今天想用腦子想想編一個Scratch的24點游戲,兩個關鍵詞:一是用計算機來算24點,一是用腦子想,而不是動手做。

之所以用腦子想,而不是上來就動手,是想告訴大家,知道怎么做,比動手做要重要很多。讓我們一起來嘗試一下這個思維的旅程吧。

upload/article/images/2020-12-01/219245958933a3b7718019f9f0bf1612.jpg

用計算機來做24點,首先就要限定好條件,編程是嚴謹的,沒有邊界,那么就沒有程序。我們平時做事情的時候,往往會忽略一些條件,其實條件是真實存在的,只是因為是常識,我們把他忽略而已。比如如果我問你早上醒來第一件事是什么?有人說起床,有人說上廁所,有人說洗臉刷牙,五花八門的答案,但實際上醒來的第一件事是睜眼!但是因為睜眼是常識,common sense,所以很多人就把它忽略了。而計算機不行,他需要我們在做每一個程序的時候,都要先做第一件事,把邊界確定下來,如果不這樣做,你的程序就可能有bug了,想象一下,早上醒來,你閉著眼去上廁所,刷牙會有什么后果。

如果想免費獲得CC哥的講座中的程序代碼以及游戲素材,可以通過掃描二維碼關注《跟我學Scratch編程》,然后點擊獲取代碼即可。

24點的編程邊界是什么:先確定規則:

1:數字,我們只做1~10。(其實也可以做到K,無非是多算幾種組合,計算機也沒所謂的)

2:運算方法,我們只用加減乘除(除法只算整除)的四則運算的整數運算。(排除乘方開方以及分數運算)

限定這兩個條件是因為,這是我們正常經常玩24點的規則,另外編程也相對簡單些。

有了規則,那么最關鍵的問題來了,算法呢?計算機該用什么方法來算呢?

如果是人,通常這會我們首選用的是經驗和技巧,這里面有一些固定的思路:

常規的比如:

3*8=24,4*6=24,2*12=24,24*1=24。

頻率略低一些的:

25-1=24,23+1=24,22+2=24,15+9=24,28-4=24,36-12=24。

有了這個思路,再想辦法把四個數字盡量往上面的去靠,看能不能找到解。

但是計算機不會象人一樣思考,計算機最厲害的就是速度快,但是并不聰明,所以計算機就用最笨的方法來做,窮舉法!把所有的組合都來一遍,就知道答案了。

根本宗旨知道了,那么窮舉法怎么做呢?仔細思考,其實這就是一種排列組合的窮舉,只不過就是一種相對有些復雜的排列組合,如果把這個排列組合的方法想清楚了,那么程序就很容易編了。

24點的組合方法看似很亂,其實還是有規律的,首先:

1:24點最終是由兩個數字運算得來的,我們假定是A和B。

2:那么A和B的任意一個數字,要么是4個初始數字之一,要么是其中兩個數字,或是3個數字運算得來的,我們假定這個由三個數字運算得來的數字是C。

3:C如果是由3個數字運算得來,那么這個C也可以理解成其實是由2個數字運算得來的,其中一個是初始數字,另一個是另外兩個初始數字運算得來的。

upload/article/images/2020-12-01/9f84214c117e7f3c07d080dd4d068101.jpg

理解了之后,我們就可以考慮用程序怎么實現這種算法了:

1:給出的四個數字中,首先調出兩個數字來,由這兩個數字進行加減乘除所有運算,再把得出的數字跟剩余的兩個數字組成三個數字。

這樣一共會得到多少組是3個數字呢?48組!

解:4個數字取兩個有多少種取法呢?小學學奧數的就知道,用C(4,2)的公式做,C(4,2)=A(4,2)/A(2,2),答案就是6種。但是考慮到取出來的數字,減法和除法還是有順序的,所以取出來的兩個數也需要考慮順序,所以還要乘以2。所以一共有12種。考慮到取出來的數字要進行加減乘除4種運算,那么我們一共得到48組三個數字,所以我們的問題就變成了如何把這12種三個數字來通過運算得到24的結果。

2:如果只有三個數字,我們該怎么做呢?還是取出任意的兩個數字,進行加減乘除的所有運算,再把得到的數字跟剩下的一個數字組成兩個數字。

這樣一組3個數字可以得到多少組2個數字呢?24組!

解:一樣的C(3,2),答案是3,考慮取出的兩個數的順序再乘以2,所以可以有6種取法,然后考慮到加減乘除,那么就是24組2個數字。

3:如果只有兩個數字該怎么辦呢?

到這一步就只有兩種情況了,要么A和B做一遍加減乘除,或者反過來B和A再做一遍加減乘除。所以一共有8種可能,如果8種可能中有得到24的運算結果,那么就成功,但是如果沒有得到24的運算結果。

所以一共也就是48*24*8了,一共有這么多種情況有機會組成24的運算結果。這對計算機是很小的計算量了,秒算!

現在大家對編程思路已經比較清楚了,那么用什么技巧呢?

1:用自定義命令的嵌套組合

2:取隨機數的技巧

技巧有了,那效果呢?

1:24點肯定用撲克牌來表現啦。所以需要在網上找找撲克牌的造型。

2:顯示答案可以用個角色去說出答案,也可以用個列表變量顯示,或者做漂亮點,用造型來表現的漂亮些。

該想的都想差不多了,就剩動手做了,要不大家自己也動手做做試試。

不過事先說好,可能CC哥想的有bug,CC哥也不知道,只有過幾天CC哥編程驗證了才知道哈。

聲明:本文章由網友投稿作為教育分享用途,如有侵權原作者可通過郵件及時和我們聯系刪除

預約試聽課

已有385人預約都是免費的,你也試試吧...

主站蜘蛛池模板: 宁波市| 青田县| 鹿邑县| 宿州市| 曲松县| 神木县| 开化县| 皮山县| 金门县| 东光县| 宾川县| 三门峡市| 章丘市| 自贡市| 额济纳旗| 和林格尔县| 资中县| 永靖县| 新宁县| 科尔| 辛集市| 嘉鱼县| 宾阳县| 揭阳市| 宣汉县| 吴堡县| 卓资县| 潜江市| 鄂尔多斯市| 安多县| 安塞县| 浪卡子县| 营口市| 正定县| 灵山县| 苍山县| 涡阳县| 浦县| 濉溪县| 奎屯市| 关岭|