圖像化程式語言-SCRATCH


認識SCRATCH

上圖引自宜蘭忠信老師http://blog.ilc.edu.tw/blog/blog/1279/post/83246/103299

 

核心價值

"影像 image.程式 program.分享 share "

官方網站https://scratch.mit.edu/

1.4軟體(離線版)下載(校內)副檔名為Sb.其檔案亦可在Scratch 2.0版中實作練習(資訊教育/程式語言/scratch/軟體)

2.0軟體(離線版)下載(校內)副檔名為Sb2(無法開啟Sb)

要裝兩個程式

資料參考

麗山高中謝碧景老師https://sites.google.com/site/jingprogram/scratch/introduction


Scratch初探

一.使用者介面

 

二.Scratch數學概念-座標及角度

(1)座標


舞台的中心是(0,0)及其位置,水平為X軸,垂直為Y軸 X軸:中心點往右是(+),中心點往左是(-) Y軸:中心點往上是(+),中心點往下是(-)

(2)角度

 

(3)修改積木大小

選地球按住shift/選set font size


三.Scratch程式語言積木介紹

1.循序結構

想一想日常生活中有哪一些事件是循序?

2.重複(迴圈)結構

想一想日常生活中有哪一些事件是重複?

3.條件選擇結構

想一想日常生活中有哪一些事件是條件選擇?

4.運算子

5.事件

6.平行

7.變數及列表

在程式設計的過程中,我們會需要記錄某些資料,可能是文字,也可能是數字,我們把這些資料記錄在記憶體的某個位址中,並給它一個名稱,這就是變數

參考網站

http://blog.ilc.edu.tw/blog/blog/1279

http://shalley-classroom.appspot.com/scratch


Scratch實作1-Scratch網站註冊(要有e-mail)

官方網站https://scratch.mit.edu/

教學影片

牛刀小試

讓我們利用線上版的scratch做一個Hello World!?

更多範例檔練習


Scratch實作2-有趣的幾何圖形練習

利用畫筆的功能來製作。 首先先從正多邊形開始


1.正六邊形

(1)設計演算法(腳本)

a.當綠旗點一下.清除所有筆跡

b.下筆.設定畫筆大小

c.重複K次(K為邊數)

d.移動N步(N越大.畫圖形的速度越快)

e.旋轉360/K度

f.停筆

(2)參考積木程式

2.正八邊形

3.正十二邊形

4.百邊形

試著去改變角度及重複執行次數就可以看到不同的變化!

A.將大問題拆解為小問題

B.觀察找出規律性

C.抽象化(忽略細微處)

 


Scratch實作3-畫出邊長150的正三角形

程式碼下載.解壓縮到桌面

執行結果

積木程式碼

提示


Scratch實作4-除錯Debug遊戲

題目說明

執行結果(有bug)

程式碼

正確的執行成果

參考資料

Code for Fun studio

http://shalley-classroom.appspot.com/scratch


Scratch實作5-專案製作-打磚塊遊戲

一.系統需求

1.遊戲規則

打磚塊:一個精典的古老遊戲,剛開始球會在板子上方,按下「滑鼠」後將球往上發出,球會在舞台中移動,可用板子觸碰球將球往上拍。當碰到左、右邊緣、磚塊、板子均會反彈,球碰到磚塊會將磚塊打掉,當所有的磚塊都被打掉即算闖關成功,如果板子沒接到球或超過時間,遊戲即算闖關失敗。

2.遊戲範例

二.系統分析

三.Scratch遊戲規劃與設計

0.範例下載

1.舞台及演員(物件)的建立

a.匯入背景(可自選)

b.新增物件(角色)-球、平台(反彈板)、磚塊、提示語(過關、失敗)

 

c.可自行修改各角色造型(如顏色...)

d.存檔.另存為04****pong.sb2


2.角色程式積木設計(參考)

(1)磚塊

腳本

a.顯示磚塊.切換到造型1.移動到X:-200 Y:150.固定Y座標.x座標差45

b.利用複製的技巧.將磚1-磚10的積木程式製作好.並且存檔.並點綠旗執行.看磚塊角色是否有排列整齊

磚塊1的程式積木

想一想有無更簡單.更有效率的方法嗎?

(2)平台(反彈板)

腳本

讓平台被滑鼠控制.只能水平左右控制

平台角色的積木程式

提示

(3)球的起始位置及按下滑鼠就發射

A.球的起始位置

腳本

a.將球的X座標設定為平台的X座標

b.將球的Y座標設定為平台的Y座標,但必須加上一個值,因為平台有厚度(寬),球必須黏在平台上,所以這個值要視你的平台而定

c.等待0.2秒.重複執行判斷是否按下滑鼠?將球的位置移到平台的X座標及Y座標

球角色的積木程式

提示

積木

B.偵測滑鼠是否按下.球才發射

腳本

a.偵測是否按下滑鼠,按下後,讓球面向上

b.旋轉一個角度,可自由設定,一般是30-45度

c.讓球一直移動,移動步數越多,球速越快,碰到邊緣就反彈

球角色的積木程式

提示

積木

3.測試及除錯


(4)球與平台(反彈板)碰撞

腳本

a.假如碰到平台.就播放聲音並反彈

b.假如碰到磚塊的顏色.就反彈

球角色的積木程式

解說

(5)球沒接到.掉落到平台以下

腳本

如果球的Y座標小於-150就廣播"沒接到"或停止所有程式

球角色的積木程式

完整球的積木程式(參考)

(6)球與磚塊的碰撞

腳本

a.假如碰到平台.就切換到磚塊的另一個造型.等待0.2秒.並且消失.不斷重複執行

b.將做好的磚塊1程式複製給磚塊2-10

磚塊1角色的積木程式

 


(7)變數-分數(得分)

腳本

a.設定變數-分數

b.假如磚塊被球碰到.若條件成立就切換到磚塊造型2.磚塊會消失.變數-得分增加1

c.將磚塊1重複執行內的積木複製給磚塊2-磚塊10

磚塊1角色的積木程式


(8)變數-時間

腳本

a.設定變數-時間

b.分數及時間初始化

c.時間計時20秒倒數計時(時間遞減20.19.......0).當時間為0秒.則廣播"時間到"

舞台程式積木(參考語法)

問題

1.當滑鼠還未動時.時間已經倒數計時.如何解決?

提示:

利用廣播及接收.修改球的程式積木

修改舞台程式積木


(9)廣播與接收

腳本

a.先將提示語隱藏 如果磚塊得分10分.就切換到提示語的造型1-"恭喜過關".顯示.並停止遊戲

b.當接收到"沒接到"就切換到提示語的造型2-"挑戰失敗".並顯示.停止遊戲

c.當接收到"時間到"就切換到提示語的造型2-"挑戰失敗".並顯示.停止遊戲

提示語程式積木

(10)程式執行範例


(9)完整程式分享

平台
磚塊
提示語
舞台

打磚塊完整錄影檔教學

http://blog.ilc.edu.tw/blog/blog/1279/post/83251/636519


五.更有效率的Scratch遊戲程式範例

範例

1.當滑鼠還未動時.時間已經倒數計時.如何解決?

041001作法

2.不用廣播及接收的技巧

041001作法

3..排磚法--不建議

分身法--建議(只要1個磚塊即可)

041001的作法

040907的作法

說明


(1)利用Scratch2.0的(角色分身)新功能,來製作12個磚塊分身並依序排列。


(2)角色分身的特性是一個分身的程式12個分身程式都一樣,非常方便。


(3)先產生一列4個分身,再Y軸下移-35產生一列,依序產生3列。

將有修改的檔案.另存新檔0411**pong-2.sb2

參考資料

http://blog.ilc.edu.tw/blog/blog/1279/post/83251/636519

https://sites.google.com/a/ykjhs.ntpc.edu.tw/ahua/scratch/scratch-cheng-shi-fan-li/da-zhuan-kuai


六.進階打磚塊遊戲程式範例

(1)增加磚塊及美觀

(2)過關再玩一次

(3)增加創意及變化性

EX:不同磚塊給不同分數.磚塊可不可以動.多增加一排磚塊.可以增加障礙物增加過關的難度.增加生命值等

進階打磚塊下載


七.Scratch遊戲作品觀摩與分享

打磚塊專案欣賞(東湖國中七年級)

SCRATCH官方網站 http://scratch.mit.edu/


八.如何自學程式設計(語言)

樂趣才是學生拓展自主學習的最大動力

程式語言學習資源網站

Scratch程式學習資源網站

錄影教學

教學文件

打磚塊教學


九.程式設計總結

1.學習程式設計和做任何事都一樣:嘗試思考不怕失敗。要學得好,還是要靠熱情:好奇事物的運作方式、花時間思考、解決問題等等不斷的嘗試,體驗由失敗中求取成功

2.不急著馬上寫 code,先想清楚問題、解法、架構,

3. 如果想要把某樣東西學好,強迫自己常常使用它,是最好的方式。就像我們想把桌球練好就會常去打桌球,想把某種程式語言練好,就要常常練習,對某事物一知半解,總有一天這件事會回頭來咬你的。

4.與其說學習程式設計,還不如說是學習運算思維(計算機思維).解決問題.溝通合作的能力