關(guān)于我們
書單推薦
新書推薦
|
零基礎(chǔ)學(xué)Scratch編程 本書面向沒(méi)有任何程序設(shè)計(jì)基礎(chǔ)的四年級(jí)以上小學(xué)生。本書內(nèi)容分為基礎(chǔ)技能、思維訓(xùn)練、創(chuàng)新應(yīng)用三個(gè)部分,小讀者按章節(jié)內(nèi)容提示一步步的自學(xué)和實(shí)踐,逐步掌握和熟練Scratch程序設(shè)計(jì)。在本書的學(xué)習(xí)過(guò)程中,小讀者的自學(xué)能力、計(jì)算思維、創(chuàng)新創(chuàng)意和編程實(shí)踐能力均能得到有效地鍛煉和提高,為將來(lái)進(jìn)一步學(xué)習(xí)計(jì)算機(jī)專業(yè)知識(shí)與技術(shù)打下扎實(shí)的基礎(chǔ)。本書編程內(nèi)容少量來(lái)自于Scratch老版本自帶的英文幫助,其他均為原創(chuàng)設(shè)計(jì),新穎有趣,符合少兒心理特點(diǎn)。 前言 某天,上小學(xué)二年級(jí)的兒子突然對(duì)我說(shuō): “爸爸,我想學(xué)編程!逼鋵(shí)更早時(shí)候我就在網(wǎng)上看到過(guò)有關(guān)兒童學(xué)習(xí)編程的一篇文章,其中提到了幾個(gè)軟件,都是充滿游戲風(fēng)格,著重設(shè)計(jì)與規(guī)劃,以完成特定任務(wù)為目的的模式。這些軟件并沒(méi)有涉及指令或語(yǔ)句的概念,所傳授和培養(yǎng)的是一種更廣義的“編程”(也許翻譯為“規(guī)劃”或“設(shè)計(jì)”更合適)思維和能力。文章指出幾歲孩子就可以通過(guò)這些軟件學(xué)習(xí)編程。 兒子還在上幼兒園時(shí)就在手機(jī)上玩過(guò)LightBot游戲。當(dāng)時(shí)給他玩的是初級(jí)版本,但已經(jīng)有循環(huán)、函數(shù)調(diào)用等功能,比起網(wǎng)上那篇文章所介紹的軟件,更像計(jì)算機(jī)編程。LightBot游戲中的小機(jī)器人能夠按照玩家編寫的指令序列執(zhí)行動(dòng)作,對(duì)玩家的編程成果給予直接且明確的反饋,因此即使我沒(méi)有給兒子講過(guò)任何編程概念,他也完全能夠在游戲軟件中學(xué)習(xí)、理解和掌握那些編程元素,通過(guò)不斷嘗試來(lái)修正自己的程序,完成游戲中的所有關(guān)卡任務(wù)?梢(jiàn),一個(gè)吸引人的有趣平臺(tái)加上直觀的反饋,完全能夠讓孩子在玩中學(xué)習(xí)編程,而且是學(xué)習(xí)相對(duì)抽象的計(jì)算機(jī)指令的編程。 我在清華大學(xué)計(jì)算機(jī)系取得本科、碩士和博士學(xué)位,在計(jì)算機(jī)系教程序設(shè)計(jì)課程,而且負(fù)責(zé)程序設(shè)計(jì)競(jìng)賽,自然早想過(guò)什么時(shí)候讓孩子學(xué)編程、學(xué)什么程序設(shè)計(jì)語(yǔ)言、怎么學(xué)這類問(wèn)題。雖然還沒(méi)有明確的答案和計(jì)劃,但可以肯定的是——小學(xué)階段就可以學(xué)編程,因?yàn)楹芏嗑幊痰母拍畈⒉桓呱。更小年齡的孩子雖然也可以學(xué)一些編程,但受認(rèn)知能力所限,學(xué)不了太多,不得不淺嘗輒止。而對(duì)于小學(xué)生,特別是小學(xué)中高年級(jí)學(xué)生來(lái)說(shuō),完全能夠在相當(dāng)長(zhǎng)的一段時(shí)間內(nèi)有計(jì)劃地學(xué)習(xí)一定量的內(nèi)容,而且所學(xué)內(nèi)容足以用來(lái)進(jìn)行豐富的創(chuàng)作或解決一些實(shí)際問(wèn)題。同時(shí),正因?yàn)閷W(xué)習(xí)者是小學(xué)生,往往教與學(xué)雙方都更關(guān)注基礎(chǔ)和必要的編程元素,不易受細(xì)枝末節(jié)的干擾而偏離“大道”。 我相信和追求“快樂(lè)學(xué)習(xí)”,希望學(xué)習(xí)路徑方向正確,不走彎路。我認(rèn)為C/C++語(yǔ)言、Java語(yǔ)言用作學(xué)習(xí)編程的入門語(yǔ)言并不理想,因?yàn)槌鯇W(xué)者難以用所學(xué)的內(nèi)容編寫出有趣的程序,即使最簡(jiǎn)單的“Hello world!”程序也會(huì)留給初學(xué)者一大堆問(wèn)題,而且這些問(wèn)題的答案不是初學(xué)者適合去了解的。如果未來(lái)想在程序設(shè)計(jì)方面往更專業(yè)一些的方向發(fā)展,我認(rèn)為不宜在學(xué)習(xí)C/C++語(yǔ)言、Java語(yǔ)言之前就接觸Python語(yǔ)言。我曾考慮過(guò)讓兒子學(xué)習(xí)Logo語(yǔ)言,我初中時(shí)就學(xué)過(guò)它,有一定了解,但Logo語(yǔ)言除了畫簡(jiǎn)單圖形外好像也沒(méi)有其他直觀有趣的功能!澳阆雽W(xué)編程,很好呀!但是你具體想學(xué)些什么呢?”我問(wèn)兒子。 “我想學(xué)Scratch!眱鹤雍敛华q豫地回答。我聽(tīng)說(shuō)過(guò)Scratch,但沒(méi)有專門了解過(guò)。兒子想學(xué)Scratch,是因?yàn)閷W(xué)校高年級(jí)學(xué)生在風(fēng)采展示的活動(dòng)中展示了一些用Scratch編寫的程序,引起了他的興趣。我告訴兒子: “沒(méi)問(wèn)題。爸爸可以幫你了解一下,看看怎么來(lái)學(xué)! 零基礎(chǔ)學(xué)Scratch編程前言我從MIT的Scratch網(wǎng)站上下載了Scratch 2離線編輯器,從軟件自帶的教程開(kāi)始了解。教程由若干很小的編程任務(wù)組成,各個(gè)任務(wù)大體上按照從最簡(jiǎn)單到略復(fù)雜的順序排列。我一步一步照著做,完成前幾個(gè)小任務(wù)就已經(jīng)熟悉了Scratch的常用積木語(yǔ)句。我認(rèn)為這些小的編程任務(wù)非常適合用來(lái)進(jìn)行Scratch入門教學(xué),對(duì)兒子來(lái)說(shuō),只需要幫他克服語(yǔ)言上的障礙——將英文翻譯成中文。很自然地,我將教程內(nèi)容展開(kāi)并翻譯做成PowerPoint幻燈片,同時(shí)把自己實(shí)踐時(shí)所想的一些問(wèn)題,也總結(jié)并在幻燈片中提出來(lái),鼓勵(lì)兒子通過(guò)動(dòng)手嘗試來(lái)找到答案。一些我認(rèn)為基礎(chǔ)和重要的程序設(shè)計(jì)概念和思想,在編程任務(wù)涉及時(shí),及時(shí)在幻燈片中提出來(lái)。 我將筆記本電腦與家里的電視機(jī)連接,教兒子用雙屏模式來(lái)學(xué)習(xí),一個(gè)屏幕播放PPT幻燈片,另一個(gè)屏幕進(jìn)行Scratch編程操作。PPT幻燈片的動(dòng)畫控制與頁(yè)面切換,既避免了書本內(nèi)容的一覽無(wú)余,又能形成一種有控制的交流,還能讓孩子自己來(lái)主導(dǎo)學(xué)習(xí)的進(jìn)度。兒子對(duì)Scratch的學(xué)習(xí)就這樣開(kāi)始了,基本上是一種自學(xué)的模式,當(dāng)他實(shí)踐遇到困難時(shí)才找我?guī)兔鉀Q。 兒子學(xué)Scratch學(xué)得很快樂(lè)。教學(xué)實(shí)驗(yàn)室的同事知道后,向我要了幻燈片給自己兒子學(xué)。他兒子也學(xué)得很快樂(lè),而且會(huì)主動(dòng)與老爸討論“什么是變量”之類的問(wèn)題。同事建議:可以開(kāi)個(gè)班,讓系里老師們的孩子一起來(lái)學(xué)Scratch。清華大學(xué)計(jì)算機(jī)系教職工孩子們的第一期編程學(xué)習(xí)班就這樣開(kāi)始了,每周五晚上一次課,持續(xù)大半個(gè)秋季學(xué)期。在學(xué)習(xí)內(nèi)容上,除了更新最初的PPT幻燈片以外,我認(rèn)真地規(guī)劃了各次課的內(nèi)容,一是考慮新知識(shí)循序漸進(jìn)地分布在各次課程中,二是考慮后面的課程內(nèi)容能夠起到復(fù)習(xí)鞏固前面課程內(nèi)容的作用。課程內(nèi)容前期主要來(lái)自于Scratch教程,后期來(lái)自于自己的設(shè)計(jì)安排。教學(xué)方式同樣采取雙屏自學(xué)模式,孩子們利用機(jī)房的計(jì)算機(jī)播放PPT幻燈片,同時(shí)在自帶的筆記本電腦上進(jìn)行Scratch編程操作。這個(gè)編程學(xué)習(xí)班的助教隊(duì)伍超級(jí)豪華,因?yàn)楹⒆觽兊募议L(zhǎng),即清華大學(xué)計(jì)算機(jī)系的老師們,可以陪著孩子一起參加這個(gè)編程學(xué)習(xí)班輔導(dǎo)自己孩子,因此這個(gè)編程學(xué)習(xí)班也是一個(gè)親子活動(dòng)班。系里老師們都沒(méi)有用過(guò)Scratch,對(duì)這種編程語(yǔ)言也很感興趣,有時(shí)兩位大牌教授會(huì)丟下孩子,相互討論眼前的Scratch編程任務(wù)。這并不奇怪,我在學(xué)習(xí)了解Scratch的過(guò)程中,同樣很快就喜歡上了它。每次課程中,我會(huì)在機(jī)房走動(dòng),了解各個(gè)孩子的自學(xué)進(jìn)展,解答他們的問(wèn)題,幫他們排除一些困難,不過(guò)更多時(shí)候是引導(dǎo)他們自己來(lái)排查問(wèn)題解決困難。一些共性的問(wèn)題,我會(huì)總結(jié)并在下一次課程時(shí)講解。這樣的編程學(xué)習(xí)班得到了孩子和家長(zhǎng)們廣泛的好評(píng),有兩次我出差無(wú)法上課,還有家長(zhǎng)主動(dòng)代課,并且提前與我討論并準(zhǔn)備PPT幻燈片。同樣的課程內(nèi)容,后來(lái)又開(kāi)了一期編程學(xué)習(xí)班,為了達(dá)到更好的教學(xué)效果,還專門為每次課程設(shè)計(jì)了課后練習(xí)。本書的第一部分就來(lái)自于這一期編程學(xué)習(xí)班的內(nèi)容。 在第一期編程學(xué)習(xí)班孩子與家長(zhǎng)們的要求下,我開(kāi)設(shè)了后續(xù)的Scratch編程學(xué)習(xí)班。在這后續(xù)的“提高組”(第一期相應(yīng)稱為“入門組”)編程學(xué)習(xí)班上,我主要讓孩子們體驗(yàn)編程與數(shù)學(xué)的關(guān)系,了解計(jì)算機(jī)解決問(wèn)題的方式方法,普及一些基礎(chǔ)而重要的程序設(shè)計(jì)算法思想,為進(jìn)一步深入學(xué)習(xí)程序設(shè)計(jì)甚至是信息學(xué)競(jìng)賽打基礎(chǔ)。提高組編程學(xué)習(xí)班仍然采用PPT幻燈片自學(xué)的方式,教學(xué)內(nèi)容形成了本書的第二部分。 在組織孩子們學(xué)習(xí)Scratch編程的過(guò)程中,我看到了孩子們的學(xué)習(xí)能力和創(chuàng)新能力,多次從心底為他們的優(yōu)異表現(xiàn)喝彩。這兩種能力也是我采用這種教學(xué)模式所希望激發(fā)和培養(yǎng)的能力,相信對(duì)孩子們的一生都有裨益。言歸正傳,該系統(tǒng)地介紹一下本書的內(nèi)容了。本書共20章,分為三個(gè)部分。第1章~第10章為第一部分“基礎(chǔ)技能”,主要介紹Scratch中角色、造型等基礎(chǔ)概念,由淺入深地引入各類積木語(yǔ)句的實(shí)踐應(yīng)用;第11章~第16章為第二部分“思維訓(xùn)練”,從繪制圖形入手,強(qiáng)化數(shù)學(xué)思維,介紹遞歸、遞推、枚舉、篩法、二分法等算法思想;第17章~第20章為第三部分“應(yīng)用實(shí)踐”,是Scratch編程實(shí)踐的綜合與提高。 本書的前兩個(gè)部分分別來(lái)源于前文提到的“入門組”和“提高組”編程學(xué)習(xí)班的課程內(nèi)容,沒(méi)有任何編程經(jīng)驗(yàn)的孩子也能夠輕松地從第1章開(kāi)始學(xué)習(xí)。在寫作本書過(guò)程中,官網(wǎng)的Scratch 2離線編輯器改版升級(jí)為Scratch 3桌面編輯器,在界面上有較大改動(dòng),在功能上也有變化,經(jīng)過(guò)考慮將章節(jié)內(nèi)容都更新為與新版編輯器一致。第三部分的內(nèi)容來(lái)源于孩子們學(xué)習(xí)Scratch過(guò)程中實(shí)際編寫的游戲項(xiàng)目,以及我本人特別想用Scratch實(shí)現(xiàn)的功能(我實(shí)在太喜歡Scratch這一編程語(yǔ)言了)。與PPT幻燈片相比,書本缺少了逐步呈現(xiàn)的控制,但可以用更詳細(xì)的文字進(jìn)行解釋說(shuō)明,算是各有優(yōu)劣。此外,在寫作過(guò)程中,產(chǎn)生了一些新的想法和更深入的思考,也融入到本書的內(nèi)容中。如何學(xué)習(xí)本書呢?不建議小學(xué)低年級(jí)甚至更小的孩子學(xué)習(xí)本書。雖然他們也能夠完成前幾章的學(xué)習(xí),但后續(xù)的章節(jié)對(duì)他們來(lái)說(shuō)挑戰(zhàn)太大,而學(xué)得太少的話,意味著掌握的工具少,實(shí)踐與創(chuàng)新的空間小,得到的鍛煉與相應(yīng)收獲少,樂(lè)趣也少。另外,因?qū)W習(xí)內(nèi)容太難導(dǎo)致半途而廢并不是好的體驗(yàn),沒(méi)必要給孩子留下編程很難學(xué)的印象。 建議孩子自學(xué)。家長(zhǎng)可以給一些基礎(chǔ)的幫助,例如,安裝Scratch桌面編輯器,教孩子基本的計(jì)算機(jī)操作,例如登入系統(tǒng)、運(yùn)行程序、輸入漢字等,但學(xué)習(xí)Scratch編程還是讓孩子按自己的節(jié)奏來(lái)。自學(xué)能力是個(gè)人不斷成長(zhǎng)的必備能力,培養(yǎng)鍛煉孩子的自學(xué)能力,是本書的重要目的之一。 學(xué)習(xí)編程的方法與學(xué)習(xí)語(yǔ)文、數(shù)學(xué)、英語(yǔ)都不一樣。編程是一種思維與實(shí)踐緊密結(jié)合的創(chuàng)造性活動(dòng)。書上的內(nèi)容都理解了,并不意味著就會(huì)編程。我敬愛(ài)的導(dǎo)師吳文虎教授給學(xué)生們上課時(shí),就多次強(qiáng)調(diào): “編程不是學(xué)會(huì)的,是練會(huì)的!北緯ㄗh的自學(xué)方法是: 逐段地閱讀理解→實(shí)踐探索→思考總結(jié)→實(shí)踐應(yīng)用。 閱讀本書時(shí),身邊應(yīng)該有一臺(tái)已經(jīng)打開(kāi)的計(jì)算機(jī)。書中講到了什么操作,讀者就應(yīng)該同步地在計(jì)算機(jī)上進(jìn)行相應(yīng)的操作;書中提出一個(gè)問(wèn)題,讀者就應(yīng)該暫停住,先思考自己的想法和答案,再往下閱讀;書中提出要自己嘗試,讀者就應(yīng)該自覺(jué)地想辦法去探索和嘗試;書中有時(shí)只提出問(wèn)題,并不給出答案,但讀者真正實(shí)踐了就會(huì)得到正確的答案。我希望給予孩子探索與收獲的學(xué)習(xí)樂(lè)趣。 本書并沒(méi)有采用講解展示語(yǔ)句功能的方式介紹Scratch語(yǔ)言,而是從要完成的任務(wù)、要實(shí)現(xiàn)的功能或效果出發(fā),即從需求出發(fā)引入可用的語(yǔ)句,把語(yǔ)句、編程語(yǔ)言視為解決問(wèn)題的工具。與編程語(yǔ)言相比,分析問(wèn)題→設(shè)計(jì)方案→規(guī)劃程序→具體實(shí)現(xiàn)→修正調(diào)優(yōu)這種以程序設(shè)計(jì)為手段解決問(wèn)題改變世界的方法,才是更重要的。這種方法,以及在方法運(yùn)用的過(guò)程中涉及的思想和技術(shù),與具體編程語(yǔ)言無(wú)關(guān),才是學(xué)習(xí)編程所真正要學(xué)的東西。我相信,這樣的編程學(xué)習(xí)才能夠更好地培養(yǎng)孩子解決問(wèn)題的能力,才能更好地支持孩子將心中的創(chuàng)意展示出來(lái),將創(chuàng)新的想法具象化,敢想敢干,能想能干。 本書剛開(kāi)始的幾章內(nèi)容簡(jiǎn)單,學(xué)起來(lái)較快,后續(xù)章節(jié)會(huì)不斷用到前面已學(xué)的內(nèi)容,越來(lái)越復(fù)雜,對(duì)思維能力和動(dòng)手能力的要求也越來(lái)越高,學(xué)習(xí)進(jìn)度自然會(huì)慢下來(lái)。而且,隨著綜合的編程能力提升,孩子會(huì)想要實(shí)現(xiàn)自己設(shè)計(jì)的動(dòng)畫和游戲,這是應(yīng)該鼓勵(lì)的事情。家長(zhǎng)最好能夠給孩子一些命題編程任務(wù),即給出一個(gè)主題,讓孩子想辦法編程來(lái)表現(xiàn),例如,讓孩子實(shí)現(xiàn)一個(gè)堆雪人的場(chǎng)景或游戲。這些書本外的編程活動(dòng),是孩子學(xué)習(xí)編程最好的練習(xí),比每章后面的練習(xí)題好百倍。能夠多做這些自由的編程練習(xí)的話,完全不必著急學(xué)后續(xù)章節(jié)。畢竟學(xué)完一本書并不是真正的目的,打下堅(jiān)實(shí)基礎(chǔ),熟能生巧,讓孩子將來(lái)學(xué)得更好才是目的。另外,本書第二部分、第三部分靠后的章節(jié)難度很大,對(duì)初中生來(lái)說(shuō)也是不小的挑戰(zhàn),因此建議孩子按自己舒適的進(jìn)度去學(xué)習(xí),花兩年、三年甚至更長(zhǎng)時(shí)間也可以。 編程學(xué)習(xí)遇到的最大困難可能就是查錯(cuò)調(diào)試了。初學(xué)者可能犯任何錯(cuò)誤,而且自己完全找不出問(wèn)題來(lái)。雖然編程調(diào)試有利于培養(yǎng)孩子的耐心和細(xì)致,但最好能夠有懂程序設(shè)計(jì)的人提供“保底”的幫助,避免孩子長(zhǎng)時(shí)間無(wú)法解決問(wèn)題,學(xué)習(xí)熱情受到打擊。如果有同樣在學(xué)Scratch的小伙伴一起討論查錯(cuò),也是非常好的。本書附錄D專門介紹了一些調(diào)試的方法和技巧,但對(duì)初學(xué)者的幫助有限。有條件的家長(zhǎng),可以考慮和孩子一起來(lái)學(xué)Scratch,這樣與孩子有共同的語(yǔ)言,一起學(xué)習(xí)、一起討論、一起成長(zhǎng),也是珍貴和難得的體驗(yàn)。飲水思源,感謝促使本書成文的所有人!首先感謝以吳文虎教授為首的師尊前輩,本書一脈相承了他們關(guān)于程序設(shè)計(jì)教學(xué)的理念。感謝教學(xué)實(shí)驗(yàn)室和系里的同事們對(duì)編程學(xué)習(xí)班的支持,感謝孩子們、家長(zhǎng)們對(duì)編程學(xué)習(xí)班的學(xué)習(xí)方式和學(xué)習(xí)內(nèi)容的肯定。感謝系里的喻文健老師,本書中基礎(chǔ)彈球游戲的若干項(xiàng)擴(kuò)展來(lái)自他的創(chuàng)意。特別感謝金山西山居的唐一鳴先生,本書第20章來(lái)源于特邀他給提高組編程學(xué)習(xí)班帶來(lái)的一次課程。當(dāng)然,也要感謝兒子促成我進(jìn)入了Scratch的奇妙世界。孩子是我們未來(lái)的希望,愿本書的小讀者們永保學(xué)習(xí)的愿望與樂(lè)趣! 鄔曉鈞2020年5月新冠肺炎疫情期間于清華園 鄔曉鈞,本碩博均就讀于清華大學(xué)計(jì)算機(jī)系,現(xiàn)為清華大學(xué)計(jì)算機(jī)系高級(jí)工程師,長(zhǎng)期從事程序設(shè)計(jì)的教學(xué)實(shí)踐。他十多年來(lái)?yè)?dān)任清華大學(xué)程序設(shè)計(jì)競(jìng)賽代表隊(duì)主教練,也是中國(guó)大學(xué)生程序設(shè)計(jì)競(jìng)賽的主要發(fā)起人和組織者。 目錄 第1篇基 礎(chǔ) 技 能 第1章準(zhǔn)備工作3 1.1程序與程序設(shè)計(jì)語(yǔ)言3 1.2Scratch語(yǔ)言4 1.3安裝編程環(huán)境4 1.3.1安裝桌面編輯器4 1.3.2設(shè)置界面語(yǔ)言7 1.3.3打開(kāi)與關(guān)閉7 1.3.4版本更新8 1.4如何學(xué)習(xí)編程8 1.5本章小結(jié)9 第2章簡(jiǎn)單舞步10 2.1初識(shí)Scratch桌面編輯器10 2.1.1界面布局10 2.1.2積木語(yǔ)句與參數(shù)11 2.1.3積木語(yǔ)句的拼接組合11 2.2讓小貓?zhí)?1 2.2.1順序執(zhí)行11 2.2.2重復(fù)執(zhí)行12 2.2.3事件響應(yīng)13 2.2.4從背景庫(kù)中選取背景15 2.3增加伴舞者15 2.3.1從角色庫(kù)中選取角色16 2.3.2同步不同角色17 2.3.3角色與造型17 2.3.4角色間的腳本復(fù)制18 2.3.5運(yùn)行模式18 2.4保存文件19 2.5本章小結(jié)20 2.6練習(xí): 燈光師21 零基礎(chǔ)學(xué)Scratch編程目錄第3章動(dòng)畫賀卡22 3.1動(dòng)畫基礎(chǔ)22 3.1.1刪除與新建角色22 3.1.2第一個(gè)字母角色23 3.1.3第二個(gè)字母角色25 3.1.4第三個(gè)字母角色28 3.1.5第四個(gè)角色29 3.2萬(wàn)圣節(jié)賀卡31 3.2.1跳動(dòng)的紅心31 3.2.2為舞臺(tái)編程32 3.2.3文本角色33 3.2.4奇幻角色34 3.3本章小結(jié)36 3.4練習(xí): 我的賀卡37 第4章石頭剪子布38 4.1街舞38 4.1.1設(shè)置舞臺(tái)背景38 4.1.2街舞者39 4.1.3自拍角色39 4.1.4同步的調(diào)試42 4.2石頭剪子布43 4.2.1設(shè)置背景43 4.2.2添加角色導(dǎo)入圖片44 4.2.3編寫程序44 4.2.4復(fù)制角色44 4.3本章小結(jié)46 4.4練習(xí): 我的動(dòng)畫46 第5章彈球游戲47 5.1彈跳的球47 5.2添加擋板47 5.3讓球碰到擋板就反彈48 5.4游戲結(jié)束49 5.5游戲得分50 5.6更多游戲效果52 5.7雙人對(duì)戰(zhàn)54 5.7.1游戲設(shè)計(jì)54 5.7.2判斷游戲輸贏55 5.8本章小結(jié)56 5.9練習(xí): 優(yōu)化雙人對(duì)戰(zhàn)游戲57 5.9.1基礎(chǔ)練習(xí): 控制球的速度57 5.9.2提高練習(xí): 控制球的反彈角度57 第6章沙灘賽跑59 6.1準(zhǔn)備賽場(chǎng)59 6.2比賽選手60 6.3跑向終點(diǎn)61 6.4隨機(jī)速度62 6.5勝利歡呼62 6.6升級(jí)彈球游戲64 6.6.1擋板與球的修改64 6.6.2增加蝙蝠怪65 6.6.3計(jì)分與增速65 6.6.4更多游戲功能65 6.7本章小結(jié)66 6.8練習(xí): 游戲中的計(jì)時(shí)66 第7章超級(jí)英雄68 7.1繪圖模式68 7.1.1體驗(yàn)位圖模式69 7.1.2體驗(yàn)矢量圖模式69 7.1.3繪圖模式比較70 7.2繪制背景70 7.2.1白云與紅日71 7.2.2城堡71 7.3英雄角色73 7.3.1造型與大小73 7.3.2跳起與落下75 7.4怪物角色75 7.5壓死怪物76 7.6完善游戲功能76 7.7本章小結(jié)77 7.8練習(xí): 星際旅行77 第8章捉迷藏79 8.1游戲設(shè)計(jì)79 8.2準(zhǔn)備場(chǎng)景79 8.3隨機(jī)確定小猴位置80 8.3.1隨機(jī)選擇樂(lè)器80 8.3.2隨機(jī)露出部分身體81 8.4實(shí)現(xiàn)躲藏效果83 8.5本章小結(jié)83 8.6練習(xí): 完善捉迷藏游戲84 第9章時(shí)尚換裝85 9.1游戲效果說(shuō)明85 9.2使用變量86 9.2.1用單個(gè)標(biāo)志變量實(shí)現(xiàn)86 9.2.2用多個(gè)標(biāo)志變量實(shí)現(xiàn)87 9.2.3改進(jìn)單個(gè)標(biāo)志變量的實(shí)現(xiàn)87 9.3使用消息89 9.4更多換裝89 9.5本章小結(jié)90 9.6練習(xí): 電風(fēng)扇91 第10章百蟲來(lái)襲93 10.1發(fā)射魔法93 10.1.1編程實(shí)現(xiàn)93 10.1.2腳本分析95 10.2游戲的基本元素95 10.3克隆與控制96 10.3.1實(shí)現(xiàn)克隆96 10.3.2控制克隆體96 10.3.3關(guān)于刪除克隆體的問(wèn)題97 10.4結(jié)束畫面的優(yōu)化98 10.5本章小結(jié)98 10.6練習(xí): 完善百蟲來(lái)襲游戲100 10.6.1基礎(chǔ)練習(xí)100 10.6.2提高練習(xí)100 第2篇思 維 訓(xùn) 練 第11章繪圖基礎(chǔ)103 11.1試用“畫筆”類積木103 11.1.1“畫筆”類積木103 11.1.2嘗試畫線104 11.2繪制正多邊形105 11.3繪制蜂巢圖106 11.3.1問(wèn)題分解107 11.3.2繪制單個(gè)蜂巢107 11.3.3繪制一排蜂巢107 11.3.4調(diào)整落筆和抬筆109 11.3.5完成蜂巢圖110 11.4自制帶參數(shù)的積木110 11.5復(fù)制已編寫的部分程序112 11.6本章小結(jié)112 11.7練習(xí): 繪制圖形113 11.7.1了解畫筆透明度的效果113 11.7.2畫n角星113 11.7.3畫螺旋113 11.7.4提高練習(xí): 幻影移動(dòng)114 第12章函數(shù)繪圖116 12.1函數(shù)與圖像116 12.1.1畫坐標(biāo)系116 12.1.2函數(shù)、坐標(biāo)與圖像116 12.2畫圓117 12.2.1圓上點(diǎn)的函數(shù)關(guān)系117 12.2.2畫上半圓117 12.2.3完成畫圓119 12.3畫橢圓120 12.4畫拋物線120 12.5公轉(zhuǎn)與自轉(zhuǎn)121 12.6萬(wàn)花尺筆尖位置的函數(shù)表示122 12.7實(shí)現(xiàn)萬(wàn)花尺程序123 12.8本章小結(jié)124 12.9練習(xí): 繪圖與思考125 12.9.1研究萬(wàn)花尺程序125 12.9.2畫點(diǎn)成圖125 第13章遞歸與迭代計(jì)算126 13.1遞歸126 13.2繪制彩色雪花127 13.3繪制Koch雪花128 13.3.1分形128 13.3.2Koch曲線與Koch雪花129 13.3.3畫Koch曲線與Koch雪花130 13.4繪制Julia集131 13.4.1函數(shù)的迭代計(jì)算131 13.4.2二元函數(shù)的迭代計(jì)算132 13.4.3圖像化132 13.4.4其他Julia集134 13.5本章小結(jié)136 13.6練習(xí): 繪制圖像137 13.6.1繪制心形137 13.6.2繪制Mandelbrot集138 第14章數(shù)列與數(shù)字謎題139 14.1數(shù)列求和139 14.1.1編程思路139 14.1.2編程練習(xí)140 14.2數(shù)列求項(xiàng)140 14.2.1問(wèn)題與編程思路140 14.2.2編程練習(xí)142 14.3數(shù)字謎題142 14.3.1六位整數(shù)問(wèn)題142 14.3.2兩數(shù)相乘問(wèn)題143 14.3.3編程練習(xí)144 14.4本章小結(jié)145 14.5練習(xí): 解決問(wèn)題145 14.5.1數(shù)表145 14.5.2兩數(shù)相乘146 14.5.3和與積146 第15章整除與質(zhì)數(shù)147 15.1整除計(jì)數(shù)147 15.1.1小試牛刀147 15.1.2編程練習(xí)148 15.2判斷質(zhì)數(shù)148 15.2.1基本方法148 15.2.2加速測(cè)試149 15.3篩法求質(zhì)數(shù)150 15.3.1篩法操作150 15.3.2篩法實(shí)現(xiàn)153 15.3.3顯示質(zhì)數(shù)表155 15.4本章小結(jié)156 15.5練習(xí): 解決問(wèn)題157 15.5.1分組問(wèn)題157 15.5.2雞兔同籠問(wèn)題157 15.5.3韓信點(diǎn)兵157 第16章控制輸贏比例158 16.1輸贏比例158 16.2模擬比賽159 16.2.1程序設(shè)計(jì)159 16.2.2輸贏統(tǒng)計(jì)160 16.2.3輸贏比例162 16.3控制輸贏比例162 16.3.1二分法162 16.3.2二分法的終止條件163 16.4本章小結(jié)165 16.5練習(xí): 編程計(jì)算π166 第3篇應(yīng) 用 實(shí) 踐 第17章九連環(huán)169 17.1九連環(huán)游戲169 17.1.1九連環(huán)的操作170 17.1.2九連環(huán)的解法171 17.2編程實(shí)現(xiàn)九連環(huán)172 17.2.1繪制圖形172 17.2.2實(shí)現(xiàn)操作173 17.2.3實(shí)現(xiàn)完整游戲175 17.2.4隨機(jī)開(kāi)局175 17.3思考與挑戰(zhàn)176 17.3.1最佳操作數(shù)176 17.3.2自動(dòng)完成九連環(huán)游戲177 第18章七巧板178 18.1繪制七巧板178 18.1.1繪制三角形178 18.1.2繪制其他形狀179 18.1.3拼出初始圖形179 18.2拖動(dòng)與旋轉(zhuǎn)180 18.2.1拖動(dòng)模式180 18.2.2旋轉(zhuǎn)的活躍狀態(tài)180 18.2.3實(shí)現(xiàn)拖動(dòng)181 18.2.4實(shí)現(xiàn)旋轉(zhuǎn)183 18.3保存與載入185 18.4思考與挑戰(zhàn)185 18.4.1保存多個(gè)拼圖185 18.4.2為拼圖命名186 第19章華容道187 19.1繪制華容道187 19.1.1繪制棋盤棋子187 19.1.2設(shè)定棋盤棋子位置188 19.1.3添加文字189 19.2保存與載入189 19.2.1棋局的表示方式189 19.2.2表示棋子擺放情況191 19.2.3用列表表示棋局192 19.2.4保存與載入192 19.2.5用單個(gè)變量保存棋局193 19.2.6關(guān)于起始編號(hào)的討論194 19.3移動(dòng)棋子195 19.3.1操作方式的設(shè)計(jì)195 19.3.2選中狀態(tài)195 19.3.3判斷棋子可移動(dòng)196 19.4自動(dòng)求解華容道198 19.4.1自動(dòng)求解思路198 19.4.2設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)198 19.4.3細(xì)化求解算法199 19.5思考與挑戰(zhàn)201 19.5.1加快自動(dòng)求解1201 19.5.2加快自動(dòng)求解2201 19.5.3最優(yōu)解法202 第20章打氣球205 20.1基礎(chǔ)游戲205 20.1.1準(zhǔn)星205 20.1.2隨機(jī)氣球206 20.1.3其他206 20.2讓游戲更豐富有趣207 20.3改進(jìn)打氣球游戲208 20.3.1加入樂(lè)趣點(diǎn)“選擇”209 20.3.2加入情緒調(diào)節(jié)手段209 20.3.3提升基礎(chǔ)體驗(yàn)211 20.3.4提升表現(xiàn)力212 20.4思考與挑戰(zhàn)213 附錄 附錄A流程圖217 A.1順序結(jié)構(gòu)217 A.2循環(huán)結(jié)構(gòu)218 A.3分支結(jié)構(gòu)218 附錄B按鍵的偵測(cè)220 附錄C幾種重復(fù)語(yǔ)句的比較221 附錄D調(diào)試226 D.1明確問(wèn)題226 D.2細(xì)查代碼226 D.3查看和設(shè)置變量值227 D.4設(shè)置斷點(diǎn)228
你還可能感興趣
我要評(píng)論
|