圖像化程式語言-SCRATCH
認識SCRATCH
上圖引自宜蘭忠信老師http://blog.ilc.edu.tw/blog/blog/1279/post/83246/103299
核心價值
"影像 image.程式 program.分享 share " |
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)
教學影片
讓我們利用線上版的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.與其說學習程式設計,還不如說是學習運算思維(計算機思維).解決問題.溝通合作的能力