仁愛國小研習:Scratch 2 程式設計(1060711)

日期:106年7月11日

主題:Scratch 2 程式設計

講師:邱昭士


運算思維與程式設計

視覺化程式語言_handson_20160606 – 台北市立大學盧東華教授


Scratch 2 離線版安裝

如何在 Scratch 2.0 角色造型上輸入中文字:

參考網址:http://wdpsestea.blogspot.tw/2017/05/scratch2.html (scratch2背景輸入中文 | 陳國全夢幻天地 Blog)

Scratch2不管是win或是linux下都無法輸入中文字,經過新北市烜誠(三多國小)和清賢(復興國小)老師的努力,終於可以輸入中文了。烜誠老師還把積木文字放大,更適合國小學生使用。感謝烜誠和清賢老師的努力。

安裝方法:


範例教學

基礎範例 1:貓先逆時針走一圈,叫出蝙蝠,貓隱藏,蝙蝠出現,不斷地逆時針飛。

  • 貓-角色1-程式

貓-角色1

貓-角色1-程式

  • 蝙輻 Bat1-程式

Bat1

Bat1-程式

基礎範例 2:貓先逆時針走一圈,再叫出蝙蝠,當蝙蝠出現後,即以較快的速度追上貓,貓被追到後叫了一聲,並說 SOS! 2秒,程式結束。

練習一1Scratch練習1-2


Scratch2練習一_角色1程式Scratch2練習一_Bat1程式


Scratch練習1-3 Scratch練習1-4

基礎範例 3:以上面的範例為基礎,於叫出蝙蝠出來後,切換背景。

迷宮:(迷宮圖可改置於舞台上)

Scratch2_迷宮_畫面1 Scratch2_迷宮_畫面2 Scratch2_迷宮_畫面3 Scratch2_迷宮_程式設計1 Scratch2_迷宮_程式設計2 Scratch2_迷宮_程式設計3 Scratch2_迷宮_程式設計4

  • BMI計算器

Scratch2_BMI_畫面 Scratch2_BMI_程式設計1 Scratch2_BMI_程式設計2

教學參考網站:

補充教材:

仁愛國小研習:Kodu 3D遊戲設計(1060710)

日期:106年7月10日

主題:Kodu 3D遊戲設計

地點:蘆洲區仁愛國小

講師:邱昭士

Kodu Game Lab 官方網站:https://www.kodugamelab.com/

Kodu 3D立體遊戲設計_學習程式的好工具 (呂聰賢)

 

  • Configure Kodu Game Lab – 設定Kodu螢幕解析度、檔案儲存的資料夾
  • Kodu Game Lab – 執行Kodu

Kodu 12種工具應用說明

 

教學範例:(以呂聰賢老師教材為例)

  1. kodu吃蘋果
  2. kodu自動巡航
  3. 賽車遊戲
  4. 迷宮歷險
  5. 超級瑪琍歐
  6. 搭船悠遊去
  7. 跳躍闖關
  8. 瞬間移動
  9. 擂台挑戰

進階範例:

 

 

學習資源:

『彈指玩轉世界』專書發表暨程式教育論壇(1060314)

日期:106年3月14日

地點:新北市政府大樓6樓大禮堂。

活動內容:

9:30-10:00 報到(發送參與人員專書1本)。
10:00-10:40 揭書儀式、播放程式教育影片、長官貴賓參觀主題展區。
10:40-11:10 專題演講。
11:10-12:00 程式教育分享會(沙龍座談)。
12:00-13:00 參觀主題展區。【會後發贈餐盒】

參考資料:

相關連結:

活動照片:(摘錄自彭于佳、黃保太、呂天齡的Facebook)

新北市程式開發社群工作坊-Scratch擴充積木設計(1060308、0315、0322)

日期:106年3月8日、3月15日、3月22日

地點:新北市教研中心

講師:蔡佳倫老師

三周的課程如下:
—————————————————————-
3/8 第一節課會先講語言的轉換
3/15 第二節講講mblock的積木撰寫
3/22 第三節會講python跟scratch
—————————————————————-

設備使用 Arduino模擬器 和 S2A,不用準備硬體!

課程內容:

Scratch 擴充積木設計:

教學範例:

base_helper.s2e


{

“extensionName": " 自訂積木 “,
“extensionPort": 50000,
“blockSpecs": [
[“r", “資料", “hello"],
[“r", “資料1″, “hello1″],
]

}


用Python擴充我的Scratch2 — 原理與Hello World篇

base_helper_py3.py


def do_GET(self):

  try:

 """
 process HTTP GET requests
 """
# skip over the first / . example: /poll -> poll 
 cmd = self.path[1:]
 # create a command list . 
 cmd_list = cmd.split('/')
 
 s = "不回傳資料"
 ###### 處理Scratch送出的命令
 ###### 若需回應Scratch的Poll命令,再把文字存在變數s ##
 ##############################################################
 
 crlf = "\r\n"
 if cmd_list[0] == "poll":
 s="hello " + "hello" + crlf
 s+="hello1 " + "hello1" + crlf
 
 #############################################################

except:

s = “不回傳資料"

finally:

self.send_resp(s)


Creating Scratch 2.0 Extensions 摘要說明:

Block description

Each block is described by an array with the following fields:

  • block type
  • block format
  • operation or remote variable name
  • (optional) zero or more default parameter values

The block type is one of these strings:

  • " " – command block
  • “w" – command block that waits
  • “r" – number reporter block (round ends) ==> 前面有帶一個 checkbox
  • “b" – boolean reporter block (pointy ends)
  • “R" – Reporters that wait (round ends)

The block format is a string that describes the labels and parameter slots that appear on the block. Parameter slots are indicated by a word starting with “%" and can be one of:

  • %n – number parameter (round ends)
  • %s – string parameter (square ends)
  • %b – boolean parameter (pointy ends)

Menu parameters

Both command and reporter blocks can include menu parameters:

  • %m.menuName – menu parameter (not editable)
  • %d.menuName – editable number parameter with menu
{ 
  "extensionName": "Kinect",
  "extensionPort": 12345,
  "blockSpecs": [ 
    ["r", "get %m.coordinate position of %m.bodyPart", "position"],
  ], 
  "menus": { 
    "coordinate": ["x", "y", "z"],
    "bodyPart": ["head", "shoulder", "elbow", "hand"],
  },
}

position/y/hand 247 => 回傳值為 247 (鍵、值用空格分隔)

Polling (每秒 30 次)

Scratch to retrieves sensor values and status information from the helper app by sending a poll command:

request: /poll

Here’s an example poll response:

response: 鍵、值用空格分隔,每一筆資料用 crlf (\r\n) 分隔

brightness 75 + crlf (\r\n)
slider 17 + crlf (\r\n)

Commands

/beep                    (command with no parameters)
/setVolume/5   (command with a numeric parameter)

Commands that wait

turn motor on for 3 seconds

turns on the motor, waits three seconds, then turns it off again. When this block is used in a script, execution does not continue to the next block until the command completes. A command that waits is indicated by the “w" block type in the command descriptor.

When a “w" command is invoked, Scratch adds a unique command_id parameter to the request (before any other parameters). For example, for the motor command above Scratch would send:

request:     /motorOn/2437/3

The first parameter, 2437, is a unique identifier for this invocation of the command. For the three seconds that this command takes to complete, the helper app adds a busy line to the poll request:

response:  _busy 2437 …

A busy line consists of the string “_busy" followed by a list of unique identifiers separated by spaces. When Scratch gets a poll result that doesn’t include 2437 in the busy line (or doesn’t even have a busy line), it knows that the command is complete and allows the script that invoked that command to proceed.

Reporters that wait (目前已實作出來) => “R"

temperature in city_name

request:     /getTemperature/7639/Boston

response:  _result 7639 82

Reset command

Scratch extensions can control motors or music synthesizers. Users expect to be able to stop everything — turn off motors, silence music synthesizers, and reset hardware back to it’s original state — by clicking the stop button in the Scratch editor. Thus, when the stop button is clicked, Scratch sends a reset command to all active extensions:

request: /reset_all


參考資料與範例:

mBlock 擴充積木設計:

mBlock 積木程式轉Arduino 程式教學:

範例一:

Autodesk 123D circuits 繪圖

mBlock 積木程式:

Arduino 程式

#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>

double angle_rad = PI/180.0;
double angle_deg = 180.0/PI;
double switchStatus;

void setup(){
Serial.begin(9600); //改成9600,才能於123D中執行
pinMode(2,INPUT);
}

void loop(){
switchStatus = digitalRead(2);
Serial.println(switchStatus);
_loop();
}

void _delay(float seconds){
long endTime = millis() + seconds * 1000;
while(millis() < endTime)_loop();
}

範例二:

Autodesk 123D circuits 繪圖

mBlock 積木程式:

Arduino 程式

#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>

double angle_rad = PI/180.0;
double angle_deg = 180.0/PI;
double Button;
double LED;

void setup(){
    Button = 2;
    LED = 12;
    pinMode(Button,INPUT);
    pinMode(LED,OUTPUT);
}

void loop(){
    if(((digitalRead(Button))==(1))){
        digitalWrite(LED,1);
    }else{
        digitalWrite(LED,0);
    }
    _loop();
}

void _delay(float seconds){
    long endTime = millis() + seconds * 1000;
    while(millis() < endTime)_loop();
}

void _loop(){
}

參考資料:

BlocklyDesigner 安裝教學:

蔡佳倫教學影片:

活動照片:

當 Google 遇見 Coding (1060110)

新北市國教輔導團資訊教育議題 105 學年度第 1 學期國中領域教師工作坊

日期:106年1月10日

地點:明志國中電腦教室

課程主題:當 Google 遇見 Coding

講師:Google認證講師

研習公文

研習講義課程大綱_當Google遇見Coding

研習流程與課程大綱:

1060110研習流程與課程大綱

課程相關網站:

Blockly遊戲:迷官第10關

相關網站: