少儿编程150讲轻松学Scratch(三)-关卡类游戏《鱼塘》
前言
今天用Scratch實現一個多關卡類的小游戲《魚塘》。這個游戲很簡單(游戲場景見下圖),但是需要使用大量的變量、定義函數、發布接受消息等內容。對于初學者來說還是有一定的挑戰性的。好,我們來“解剖”一下這個游戲。
場景1
場景2
游戲目標:找出每一關中與眾不同的魚。
游戲機制:
1.在倒計時完成前找到與眾不同的魚,否則闖關失敗;
2.有三條命,選錯魚后減少一條命;每關開始時恢復三條命;三條命用盡則闖關失敗;
3.每關開始時存在一些干擾的魚,其數量隨關卡數遞增;
4.每一關開始后,“干擾魚”會按一定概率自行復制;
5.魚游動的速度會隨關卡數遞增;
6.“目標魚”以顏色與“干擾魚”區分,其顏色接近程度隨關卡數遞增;
6.通過所有關卡,視為勝利。
元素說明
該游戲公由四個元素組成:場景、干擾魚(這里稱goodfish)、目標與(這里稱badfish)、面板,如下圖所示。
這四個元素每一個都有自身的內部結構(下文會依次說明),并且分別編寫代碼。這有點“面向對象編程”的感覺。
變量說明
本游戲用的變量較多,匯總如下圖。基本上通過名字就可以判斷其用途。
場景結構及代碼
場景分為三個,都是從Scratch場景庫中挑選的,下圖箭頭所指的地方可以修改每個場景的名字。
場景結構說明
這個游戲中“場景”充當了“主控程序”的角色,全盤控制整個游戲。從下面的代碼中可以看出此處用了很多消息功能和變量,稍顯復雜。消息INIT只在第一關時起作用,之后每關開始相關設置都有消息prepare與begin完成。
說明下:場景代碼較多,一屏截不全,所以截圖了兩次,見下面兩張圖。
場景代碼1
場景代碼2
顏色通過上圖中的代碼可以看出,本游戲中變量fishChangeColor除了控制目標魚的顏色外還擔任著另一項重大任務:判斷游戲勝利進程。代碼顯示每三關變一下顏色(fishChangeColor減去一),當fishChangeColor=0的時候,游戲通關勝利。
角色結構與代碼
角色內部結構與場景類似,也是三個部分每關隨機更換。
“干擾魚(goodfish)”代碼較多,截了兩屏,見下面兩圖。這里定義了幾個函數,使得代碼結構跟個清晰一些,體現了面對對象編程的“封裝”特點。從代碼中可以看出,干擾魚負責播報進行到了第幾關。
“目標魚(badfish)”的代碼相對簡單得多,如下圖。代碼中可以看出,無論干擾魚還是目標魚,被點擊的時候的是廣播clicked消息,對whoClicked進行賦值,這里體現了面向對象編程的“多態”特點。
面板結構及代碼
面板的結構與場景和角色也非常相近。三個部分分別為幫助說明、失敗、勝利。
第一關開始,由INIT函數控制顯示幫助面板,告訴玩家本游戲需要找出與眾不同的魚。之后通過接收消息failedSuccess來顯示失敗、成功面板。
勝利面板
失敗面板
說明
準確地說一款游戲永遠沒有終結的時候,一直可以變得更好。我們可以嘗試加一些音效、調整一下數值、增加一些特效、增加一些驚喜。
總結
以上是生活随笔為你收集整理的少儿编程150讲轻松学Scratch(三)-关卡类游戏《鱼塘》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 少儿编程150讲轻松学Scratch(二
- 下一篇: 伪命题:我们来谈谈校招生起薪的问题,它对