日期: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種工具應用說明
教學範例:(以呂聰賢老師教材為例)
進階範例:
9:30-10:00 報到(發送參與人員專書1本)。
10:00-10:40 揭書儀式、播放程式教育影片、長官貴賓參觀主題展區。
10:40-11:10 專題演講。
11:10-12:00 程式教育分享會(沙龍座談)。
12:00-13:00 參觀主題展區。【會後發贈餐盒】
設備使用 Arduino模擬器 和 S2A,不用準備硬體!
{
“extensionName": " 自訂積木 “,
“extensionPort": 50000,
“blockSpecs": [
[“r", “資料", “hello"],
[“r", “資料1″, “hello1″],
]
}
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)
Each block is described by an array with the following fields:
The block type is one of these strings:
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:
Both command and reporter blocks can include menu parameters:
{ "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 (鍵、值用空格分隔)
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)
/beep (command with no parameters)
/setVolume/5 (command with a numeric parameter)
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.
temperature in city_name
request: /getTemperature/7639/Boston
response: _result 7639 82
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
#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();
}
#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(){
}