前幾篇文章了老馮叔叔已經(jīng)講了Scratch編程入門的方方面面,詳見玩轉(zhuǎn)Scratch文章系列,想必大家都已經(jīng)迫不及待地想一試身手!好,我們現(xiàn)在就開始進(jìn)入實(shí)戰(zhàn)階" />

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

極客小將

您現(xiàn)在的位置是:首頁 » scratch編程資訊

資訊內(nèi)容

Scratch編程實(shí)戰(zhàn) 之 投籃游戲

極客小將2020-11-19-
Scratch編程實(shí)戰(zhàn)之投籃游戲



前幾篇文章了老馮叔叔已經(jīng)講了Scratch編程入門的方方面面,詳見玩轉(zhuǎn)Scratch文章系列,想必大家都已經(jīng)迫不及待地想一試身手!好,我們現(xiàn)在就開始進(jìn)入實(shí)戰(zhàn)階

Scratch編程實(shí)戰(zhàn)之投籃游戲

源碼下載鏈接:https://www.jikexiaojiang.cn/270.html

前幾篇文章了老馮叔叔已經(jīng)講了Scratch編程入門的方方面面,詳見玩轉(zhuǎn)Scratch文章系列,想必大家都已經(jīng)迫不及待地想一試身手!好,我們現(xiàn)在就開始進(jìn)入實(shí)戰(zhàn)階段。

投籃游戲

我們的第一個(gè)例子,是從小貓投籃球開始,效果如下面的視頻:

圖1.Scratch編程實(shí)戰(zhàn)一-小喵投籃視頻

任務(wù)目標(biāo)

  1. 貓能夠在場(chǎng)地內(nèi)移動(dòng)投籃位置,并且能夠自由起跳

  2. 籃筐能夠在屏幕的右上角的位置,隨機(jī)上下左右移動(dòng),增加小貓投籃的難度

  3. 小貓能夠投籃,籃球從上向下穿過籃筐才被認(rèn)作得分

  4. 有記分牌,能夠記錄小貓能夠得到多少分

任務(wù)分解

小喵部分

  1. 首先在事件中選擇 綠色旗標(biāo)啟動(dòng) 按鈕被點(diǎn)擊的事件

  2. 選擇循環(huán)事件,處理左右按鍵的控制,按 左箭頭 鍵小喵向左移動(dòng),按右箭頭 鍵向右移動(dòng)

  3. 當(dāng)按向上鍵小喵起跳后,控制小喵的落地速度,同時(shí)控制小喵不要落到地面以下;

注意事項(xiàng):小喵向左移動(dòng)時(shí),默認(rèn)是小喵會(huì)頭朝下的,這里需要選擇翻轉(zhuǎn)方式為左右翻轉(zhuǎn)  

整體代碼部分如下圖所示,這里需要設(shè)置一個(gè) cat falling speed  的變量,用來記錄小喵在垂直方向的起落速度;

upload/article/images/2020-11-19/9ea2e4c48656498964e121118ef41d26.jpg圖2.Scratch編程實(shí)戰(zhàn)一-小喵左右移動(dòng)

籃球部分

  1. 到 sprite 庫中選擇 things 分類,選擇一個(gè)籃球;

  2. 同樣,在時(shí)間中選擇 綠色旗標(biāo)啟動(dòng) 按鈕被點(diǎn)擊的事件;

  3. 籃球的初始狀態(tài)是隱藏的;

    當(dāng) 空格 鍵被點(diǎn)擊時(shí),將籃球的位置設(shè)置為小喵的位置,并將籃球設(shè)置為可見狀態(tài);

    同時(shí),給籃球一個(gè)初始的垂直方向上的速度24;

  4. 設(shè)置一個(gè)循環(huán)狀態(tài),重復(fù)如下事件:

    當(dāng)籃球沒有落地時(shí),修改籃球的水平方向坐標(biāo)+8,根據(jù)籃球的速度修改其垂直方向的坐標(biāo),籃球的垂直方向速度是不斷-2的;

  5. 當(dāng)籃球落地以后,將籃球設(shè)置為隱藏狀態(tài);

代碼部分如下圖所示,這里需要設(shè)置一個(gè) ball falling speed  的變量,用來記錄籃球在垂直方向的起落速度;

upload/article/images/2020-11-19/2c98fa3a9a751df9cd6466d3e63bfb47.jpg圖3.Scratch編程實(shí)戰(zhàn)一-籃球部分

籃筐部分

  1. 用畫筆工具新建一個(gè)sprite,選擇vector矢量圖模式;

  2. 在偏中心的位置勾出一個(gè)橢圓的矢量圖,這個(gè)橢圓表示籃筐;

  3. 再用畫筆工具新建一個(gè)sprite,bit圖模式即可,在橢圓中心點(diǎn)對(duì)應(yīng)的位置,點(diǎn)一個(gè)2*2像素的點(diǎn),表示籃筐的中心(老馮叔叔故意點(diǎn)了一個(gè)有顏色的點(diǎn));

  4. 橢圓籃筐部分只做一件事,在 綠色旗標(biāo)啟動(dòng)      后,籃筐一直重復(fù)一個(gè)循環(huán),所做的事情就是每隔一秒在限定的右上角范圍內(nèi)變換到一個(gè)隨機(jī)位置;

  5. 籃筐中心sprite也只做一件事,就是在 綠色旗標(biāo)啟動(dòng) 后,一直追隨籃筐的中心位置;

代碼部分如下圖所示:

upload/article/images/2020-11-19/45076d19b4df963b420b6a3e90cf0cda.jpg圖4.Scratch編程實(shí)戰(zhàn)一-籃筐部分
upload/article/images/2020-11-19/d5582ed7ead31bf5642af1420f3fd48d.jpg圖5.Scratch編程實(shí)戰(zhàn)一-籃筐中心
得分處理
以上每個(gè)部分都完成了之后,我們發(fā)現(xiàn)小喵能動(dòng)了,籃球也能投了,籃筐也是隨機(jī)運(yùn)動(dòng)了,還剩一個(gè)任務(wù),就是小喵投籃得分的處理:

  1. 首先,小喵的投籃要從籃筐從上向下穿過籃筐的中心,才能被認(rèn)定為得分

  2. 其次,為了增加趣味性,我們可以在小喵得分后,讓籃筐發(fā)出 wonderful 的提示

  3. 記分牌上記錄小喵投進(jìn)去的總個(gè)數(shù)

關(guān)鍵的問題來了,也是編程中常見的問題,如何在不同的對(duì)象之間進(jìn)行通訊,比如:這個(gè)游戲中我們判斷得分的標(biāo)識(shí)是  籃球觸碰到了籃筐的中心,在程序中,我們?cè)趺醋尰@筐知道這個(gè)消息呢,畢竟,我們的例子中,籃筐和籃筐中心是兩個(gè)不同的 sprite  ?
Scratch 提供了 broadcast 廣播功能,就是一個(gè)  sprite 可以廣播一個(gè)消息出去,而其他的 sprite 可以接收這個(gè)消息并加以處理。
 好了,看代碼吧!
 籃球部分的代碼修改如下:

upload/article/images/2020-11-19/70820e72e64a98fc097d37b2d816b334.jpg圖6.Scratch編程實(shí)戰(zhàn)一-籃球最終
籃筐部分的代碼修改如下:
upload/article/images/2020-11-19/8c67f07ef0163ba46abdd654ebb2dc33.jpg圖7.Scratch編程實(shí)戰(zhàn)一-籃筐最終

任務(wù)總結(jié)

好了,整個(gè)代碼部分就講解完了,你可以手動(dòng)嘗試一下,自己親手做的游戲,玩起來還是非常有意思的。游戲雖然相對(duì)簡(jiǎn)陋,但該有的核心部分已經(jīng)全部包括在其中了。我們看到的大型游戲,也是由一個(gè)個(gè)  sprite 組成,他們之間也需要進(jìn)行通訊處理,原理和我們這個(gè)籃球游戲基本一致,只是他們做的更加精細(xì),游戲邏輯相對(duì)更多而已。

這個(gè)例子就到這里,后續(xù)請(qǐng)繼續(xù)關(guān)注公眾號(hào),跟著老馮叔叔和老劉叔叔一起學(xué)習(xí)其他例子吧!

聲明:本文章由網(wǎng)友投稿作為教育分享用途,如有侵權(quán)原作者可通過郵件及時(shí)和我們聯(lián)系刪除

預(yù)約試聽課

已有385人預(yù)約都是免費(fèi)的,你也試試吧...

主站蜘蛛池模板: 墨玉县| 樟树市| 绥滨县| 南岸区| 迁西县| 永登县| 开原市| 平邑县| 靖西县| 霍林郭勒市| 天柱县| 汉中市| 柳江县| 临城县| 大城县| 芦溪县| 扎赉特旗| 莎车县| 沈丘县| 彰化县| 尉氏县| 陆丰市| 扬州市| 定安县| 张掖市| 丰顺县| 江陵县| 托里县| 合阳县| 子洲县| 仁化县| 揭西县| 阜城县| 武功县| 宁国市| 静宁县| 西乌珠穆沁旗| 沽源县| 叙永县| 阜康市| 岳西县|