2012年12月29日 星期六

[ Forth.js ] HTML5 Canvas時鐘動畫的中文程式碼

HTML5繪製圖形的中文程式碼,以下範例,參考自Mozilla開發者社群Canvas 教學

若看不到內容,請稍待幾秒

若看不到內容,請稍待幾秒

紀錄一年又五個月的籃球修行

爸爸的啤酒肚消了,Jimmy的感冒次數變少了
爸爸的肌肉結實了,Jimmy的吃飯食量變大了
爸爸的跑步不喘了,Jimmy的投籃命中變多了

這籃球是Jimmy幼稚園畢業後那個暑假買的,陪伴我與Jimmy在籃球場一年又五個月
寄件者 scratchlab02
寄件者 scratchlab02

Jimmy的樂高積木修行--虎之卷62頁--轉向軸積木應用

Jimmy's papa翻閱虎之卷時,發覺62頁的小車用到一個少見的積木,長相像雙節棍的十字軸,查Google後才知道叫做轉向軸,例如汽車方向盤可藉轉向軸傳導施力來操控車輪的左右轉向,想不到仔細翻找積木箱後,Jimmy's papa竟然找到一根轉向軸積木,於是就當作Jimmy這次的樂高積木修行主題囉!!!

在缺乏原作的某些積木的情況下,Jimmy與Jimmy's papa還是找到了解決之道,順利完成這次修行

寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02

2012年12月26日 星期三

[ Forth.js ] HTML5 Canvas變形的中文程式碼

HTML5繪製圖形的中文程式碼,以下範例,參考自Mozilla開發者社群Canvas 教學

稍等一下

nil

指定畫布 畫布壹
畫布壹 0 0  150 150 實心方
畫布壹 保存畫布狀態

畫布壹 字" #0090F0" 填色調
畫布壹 15 15 120 120 實心方

畫布壹 保存畫布狀態
畫布壹 字" #F0F0F0" 填色調
畫布壹 0.5 透明   
畫布壹 30 30 90 90 實心方

畫布壹 回復畫布狀態
畫布壹 45 45 60 60 實心方

畫布壹 回復畫布狀態
畫布壹 60 60 30 30 實心方
稍等一下

nil

指定畫布 畫布貳

: 繪製螺旋 { 大半徑 小半徑 圓心 } 
  畫布貳 開始構圖
  畫布貳 大半徑 圓心 減 0 移筆  
  2000 1 做 
    區域變數 x2 區域變數 y2
    畫布貳 
    大半徑 小半徑 加 i 180度 72 除 乘 餘弦 乘   
       小半徑 圓心 加 大半徑 小半徑 加 小半徑 除 i 180度 72 除 乘 乘 餘弦 乘 減 
    給 x2 x2
    大半徑 小半徑 加 i 180度 72 除 乘 正弦 乘   
       小半徑 圓心 加 大半徑 小半徑 加 小半徑 除 i 180度 72 除 乘 乘 正弦 乘 減 
    給 y2 y2
    拉線 
    x2  大半徑 圓心 減 不等於  y2 0 不等於 且 否定   
    若真  跳出循環 然後 
  循環 
  畫布貳 下筆   
;  

: 畫九個螺旋
  畫布貳 0 0 300 300 實心方 
  3 0 做
    3 0 做
      畫布貳 保存畫布狀態
      畫布貳 字" #9CFF00" 筆色調
      畫布貳 50 i 100 乘 加 50 j 100 乘 加  移動原點
      20 i 2 加 i 1 加 除 乘  ( 參數 大半徑 )
      -8 j 3 加 j 1 加 除 乘  ( 參數 小半徑 )
      10                     ( 參數 圓心 )
      繪製螺旋
      畫布貳 回復畫布狀態
    循環
  循環
; 畫九個螺旋 
稍等一下

nil

指定畫布 畫布叁
畫布叁 75 75 移動原點

: 旋轉範例
6 1 做
	畫布叁 保存畫布狀態
	畫布叁 51 i 乘 255 51 i 乘 減 255 紅綠藍轉十六進制 填色調
	i 6 乘 0 做
		畫布叁 360度 j 6 乘 除 旋轉
		畫布叁 開始構圖
		畫布叁 0 j 12.5 乘 5 0 360度 反時鐘 弧
		畫布叁 填圖
	循環
	畫布壹 回復畫布狀態
循環

; 旋轉範例

2012年12月25日 星期二

2012年12月21日 星期五

Jimmy的樂高積木修行--虎之卷66頁--鬥牛車

寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02

[ Forth.js ] 區域變數 Local Variable

這次增加了新功能,讓定義新詞時,可定義區域變數,以簡化操作資料堆疊的難度,Jimmy's papa為此設計了區域變數框架(LocalsFrame)機制,每當執行有附帶定義區域變數的高階詞(High word)時,Forth.js便會在返回堆疊(Return stack)裡,疊上一個區域變數框(LocalsFrame),裡面塞了此高階詞(High word)用到的區域變數(Local Variables)及框架基底(LocalsFrameBase),當此高階詞(High word)執行終了,便會依框架基底(LocalsFrameBase)清掉整個區域變數框架(LocalsFrame)

若看不到執行結果,請稍待片刻,或下載forthjstest-1.1.5.zip到你的電腦上執行

nil

nil

nil

nil

2012年12月17日 星期一

均一教育平台

均一教育平台(www.junyiacademy.org)從美國Khan Academy(可汗學院)用 cc 授權的方式取得大部分的內容跟軟體並加以中文化。其中國小程度的數學練習題90%已經中文化

看來除了子由數學網站,Jimmy小朋友又多了一個線上練習數學的機會

Jimmy的樂高積木修行--虎之卷66頁--澆花水槍車

這個簡單的小車車,車輪行走時,會帶動滑桿進退,那模樣很像以前不知在哪裡看過的水槍車,那就命名為澆花水槍車吧!!!
寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02

2012年12月10日 星期一

哇!12年國教後,做父母的心態要把自己當神奇寶貝訓練家哩!?

12年國教與WRO之關聯
12年國教-競賽成績-計算方式

[ Forth.js ]套用HTML5 Canvas樣式和色彩的中文程式碼

HTML5繪製圖形的中文程式碼,以下範例,參考自Mozilla開發者社群Canvas 教學

指定畫布 畫布ㄧ
: 示範填格
  6 0 做
     6 0 做
       畫布ㄧ
       255 42.5 j 乘 減 下取整數 ( 紅 )
       255 42.5 i 乘 減 下取整數 ( 綠 )
       0 ( 藍 )
       紅綠藍轉十六進制 填色調
       畫布ㄧ i 25 乘 j 25 乘 25 25 實心方
     循環
  循環   ;
示範填格

nil

nil

nil

nil

nil

nil

nil

nil

nil

2012年12月8日 星期六

Jimmy的樂高積木修行--虎之卷58頁--遙控登月車

原本圖解只有一個馬達,靠切換電池上的開關前進與後退,不過多加一個馬達及遙控接受器後,就搖身一變為遙控登月車,為了讓登月車能順利左右迴轉而不會卡卡的,Jimmy小朋友罕見地很有耐心的"除錯"

為什麼呢?因為Jimmy's papa答應他,只要車子能通過我的測試標準,星期六就讓他玩賽耳號遊戲
寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02

Jimmy的樂高積木修行--虎之卷178頁--自動切換齒輪

看虎之卷裡面的圖解,似乎會隨著馬達轉動而輪流轉動左右齒輪,不過我和Jimmy實驗的結果,只能手動切換
寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02

2012年12月6日 星期四

[ Forth.js ]繪製HTML5圖形的中文程式碼

HTML5繪製圖形的中文程式碼,以下範例,參考自Mozilla開發者社群Canvas 教學



nil

nil

nil

nil

nil

nil

nil

nil

nil

nil

2012年11月29日 星期四

Web Audio API 簡單範例

這是Jimmy's papa整理出來的Web Audio API 簡單範例,可發出特定頻率的正弦聲波,
僅適用Chrome
        var context = new webkitAudioContext();
        var sampleRate = context.sampleRate;
        var node = context.createJavaScriptNode(128, 1, 1);
        var amplitude=0.8,frequency=300,currentSoundSample=0;

        node.onaudioprocess = function(e) { 
              var right = e.outputBuffer.getChannelData(0),
                  left = e.outputBuffer.getChannelData(1);

            var k = 2* Math.PI * frequency / sampleRate;
              for (var i = 0; i < right.length; ++i) {
                right[i] = left[i] = amplitude * Math.sin(k * currentSoundSample++);} 
            };

        function play() {
            frequency = parseFloat(document.getElementById("freq").value);
            currentSoundSample=0;
            node.connect(context.destination);
        }

        function pause() {
              node.disconnect();
        }

Jimmy的樂高積木修行--虎之卷95頁--手動搖搖窗

手動搖搖窗,很適合用在城堡的巨大鐵窗,開窗時只要輕輕鬆鬆搖幾下就好
寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02

2012年11月21日 星期三

[ Forth.js ] OOP

下為實驗中的Forth.js OOP指令用法,
或是到此下載(forthjstest1.zip )測試檔
class Vehicle weight  power  travelon   end_class
instance Vehicle MyBike
20 to MyBike.weight
new MyCar
2000 MyCar price 
MyCar.price 
1000 +to MyCar.price
: move bra bra bra ;
assign  move MyCar.move 
:method MyCar.stop  bra bra bra ;


以下測試案例,運用see指令,透視每個新建類別(class),物件(object),屬性(attribute)及方法(method)的內部

Example: OOP

<p class="forth" forthcode=' .( (Test1 define class ) ) class Vehicle weight power travelon  end_class see Vehicle '>nil</p>

(Test1 define class )
Scanning Vehicle
(000113) doInstanceAllAttr
(000114) weight
(000115) power
(000116) travelon
(000117) exit

<p class="forth" forthcode=' .( (Test2 class instance ) )  instance Vehicle MyBike see MyBike see MyBike.weight 20 to MyBike.weight see MyBike.weight'>nil</p>

(Test2 class instance )
Scanning MyBike
(000118) doAttr
(000119) MyBike
(000120) exit
Scanning MyBike.weight
(000121) doValue
(000122) 0
(000123) exit
Scanning MyBike.weight
(000121) doValue
(000122) 20
(000123) exit

<p class="forth" forthcode=' .( (Test3 new object) ) new MyCar see MyCar 2000 MyCar price see MyCar.price cr MyCar.price . 1000 to MyCar.price MyCar.price . '>nil</p>

(Test3 new object)
Scanning MyCar
(000130) doAttr
(000131) MyCar
(000132) exit
Scanning MyCar.price
(000133) doValue
(000134) 2000
(000135) exit
2000 1000

<p class="forth" forthcode=' .( (Test4 object method) ) : move ." Just Moving!!!" ; see move assign move MyCar.move     see MyCar.move cr cr MyCar.move cr see MyCar'>nil</p>

(Test4 object method)
Scanning move
(000136) (.")
(000137) Just Moving!!!
(000138) exit
Scanning MyCar.move
(000136) (.")
(000137) Just Moving!!!
(000138) exit

Just Moving!!!

Scanning MyCar
(000130) doAttr
(000131) MyCar
(000132) exit

<p class="forth" forthcode=' .( (Test5 object method) ) :method MyCar.stop ." Just Stopping!!!" ; see MyCar.stop  cr cr  MyCar.stop  cr cr  see MyCar'>nil</p>

(Test5 object method)
Scanning MyCar.stop
(000139) (.")
(000140) Just Stopping!!!
(000141) exit

Just Stopping!!!


Scanning MyCar
(000130) doAttr
(000131) MyCar
(000132) exit

2012年11月15日 星期四

熱氣球在高雄夢時代升空了

上個週日很幸運,去逛展覽時聽到志工阿姨提到,夢時代那邊有熱氣球展,雖然已接近傍晚,眼看大大的紅太陽快貼近地平線,還是趕忙驅車至夢時代,想說至少讓Jimmy小朋友看一眼熱氣球也好

不過到了現場,才發現熱氣球才剛剛準備加熱升空,第一次看到熱氣球,尤其是加熱時噴出的巨大火焰的震撼感,讓Jimmy小朋友超興奮

Jimmy的樂高積木修行--虎之卷115頁--滑輪應用

寄件者 scratchlab02
寄件者 scratchlab02

2012年11月9日 星期五

[ Forth.js ] Version 1.0.1

Jimmy's papa在本機測試include指令沒問題,不過貼到部落格倒是怪怪的,可能與某些東西衝突到了,有空再除錯


JimmyScratchLab Forth.js(a fork of JeForth) Demo

Example: Append to TagId='div1':
    <script type="text/forth">
         : c c" pi = 3.14" >tag h1   >tag div >tagid div1 ;  c
    </script>
    <div id='div1'></div>



Example: Show Table
<script type="text/forth">
    : showtable     c" WORD" >tag th >tag tr c" Stack" >tag th >tagnode  >tagid table1
         c" .tag" >tag td >tag tr c" ( str <tagname> --  )" >tag td >tagnode  >tagid table1
         c" >tagid" >tag td >tag h1 >tag tr c" ( x|node <tagid> --  )" >tag td >tagnode  >tagid table1    
         c" >tag" >tag td >tag tr c" ( x|node <tag> -- node )" >tag td >tagnode  >tagid table1 
         c" >tagnode" >tag td >tag tr c" ( node x|childnode -- node )" >tag td >tagnode  >tagid table1
    ;   showtable 
    </script>
    <table id='table1' border="1"></table>



Example: include
    <script type="text/forth">
         c" ./forth/testcase.f" include
    </script>
    <p class="forth" forthcode=" x "> </p>

nil




Example: 9*9
<p class="forth" forthcode=": 9*9 9 for cr r@ 9 for dup r@ * 2 .r space next drop next ; 9*9">nil</p>

nil




Example: fib1
<p class="forth" forthcode=" : fib1 1 1 begin over . swap over + dup 10000 > until 2drop ; fib1">nil</p>

nil




Example: fib2
<p class="forth" forthcode=" fib2 ">nil</p>

nil




Example: abs
<p class="forth" forthcode='-16 abs -20 abs -12 abs -9 abs -3 abs -11 abs -8 abs .s c" abs ok!" .tag h1'>nil</p>

nil




Example: version
<p class="forth" forthcode=" .( *** ) version . .( *** ) ">nil</p>

nil

test

Jimmy的樂高積木修行--虎之卷148頁

最近Jimmy小朋友拿到了發條積木,虎之卷裡有幾頁與發條積木相關的作品都能做了
寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02

2012年11月3日 星期六

[ Forth.js ] Run Forth words code on your web page

Jimmy's papa搞定了可直接執行內嵌在網頁標籤上符式程式碼(Forth code),如下
    <script type="text/forth">
        : fib2 1 1 begin over . swap over + dup 20000 > until 2drop ;
    </script>
    <p>9*9:</p>
    <p class="forth" forthcode=": x 9 for cr r@ 9 for dup r@ * 2 .r space next drop next ; x">nil</p>
    <p>fib 1:</p>
    <p class="forth" forthcode=" : fib1 1 1 begin over . swap over + dup 10000 > until 2drop ; fib1">nil</p>
    <p>fib 2:</p>
    <p class="forth" forthcode=" fib2 ">nil</p>
如此一來會增加網頁程式設計師對Forth語言的興趣吧??? 哈哈....應該還有一段遙遠的路要走吧!!
寄件者 scratchlab02
如果你看到底下的內容與上圖相同,則執行成功!!!

JimmyScratchLab Forth.js(a fork of JeForth) Demo

9*9:

nil

fib 1:

nil

fib 2:

nil

2012年10月30日 星期二

JForthBlocks--Include Forth sourcecode file

Jimmy's papa已做好include積木,可引入並執行Forth檔,同時也加入註解"\"積木,為了JForthBlocks的Web環境,註解"\"積木花了不少時間修正,適應由積木產生的註解字串,而非只有來自檔案內容的註解

隨著JForthBlocks收錄的積木(Forth words)越來越多,Jimmy's papa實在很擔心會一時疏忽讓bug住了進來,有了include積木,Jimmy's papa就可以寫一些測試案例(Test Case)隨時測試
寄件者 scratchlab02
請直接將積木XML,貼至XML編輯區,便可見上圖出現的積木
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="text_cquote" notchtype="LEFT_RIGHT" inline="false" x="1121" y="1274"><title name="STRING">./forth/testcase.f</title><value name="NEXTWORD"><block type="utility_include" notchtype="LEFT_RIGHT" inline="false"></block></value></block><block type="text_backslash" notchtype="LEFT_RIGHT" inline="false" x="1118" y="1316"><title name="STRING">Jimmyscratchlab 附註 執行測試案例</title></block></xml>
目前testcase.f的檔案內容
\ 試印出 99 乘法表 
: x 9 for cr r@ 9 for dup r@ * 2 .r space next drop next ; x

2012年10月29日 星期一

[Javascript] XMLHttpRequest同步與非同步取檔

在本機未使用Web Server的情況下測試網頁Javascript程式,若需要讀取檔案,以Web File API需搭配INPUT tag但只限本機檔案, Jimmy's papa也測試過
var file=File(path) //insecure exception
但會產生insecure例外

如果要讀取網頁路徑下的檔案,則需借助AJAX,也就是運用XMLHttpRequest物件
    var xmlhttp,fname;  
    if (window.XMLHttpRequest) xmlhttp=new XMLHttpRequest();    
    if (xmlhttp == null) alert("Your browser does not support XMLHTTP.");
    /*異步時,在open與send之前用這段程式碼*/
    //xmlhttp.onreadystatechange = function() {
    //    if (xmlhttp.readyState==4) {
    //        alert(xmlhttp.responseText);}}
    xmlhttp.open("GET", fname, false);//false為同步,true為異步
    xmlhttp.send(null);
    /*同步時,在open與send之後用這段程式碼*/
    if (xmlhttp.status == 200 || xmlhttp.status == 0) { //0為本機開檔 
        alert('xmlhttp.status '+xmlhttp.status);
        alert(xmlhttp.responseText);  
    }else{  
       alert(xmlhttp.statusText);}  

2012年10月27日 星期六

將Forth當做Web Script?

底下兩段程式碼,可看到已經有人把Ruby與Processing移植到Web,將各自的指令語法或原始碼檔夾入HTML標籤,做為Web Script執行

由於現今Javascript已然成為Web Assembly,或許許多常見的程式語言皆可如此

<script type="text/ruby">
#class Foo; def initialize; @foo = 'whee'; end; end; f = Foo.new; f
Time.now
</script>
<script src="/processing.js"></script>
<canvas datasrc="blendColor.pjs" width="200" height="200"></canvas>


Jimmy's papa在想,如果其他程式語言都能成為網頁腳本,那對Forth來說應該也不成問題呀!

<script type="text/forth">
/ 試印出 99 乘法表
: x 9 for cr r@ 9 for dup r@ * 2 .r space next drop next ; x
</script>
或是
<script type="text/forth" src="/9x9.f"></script>
不過想歸想,實作時或許會遇到很多有趣的挑戰吧!!

2012年10月17日 星期三

JForthBlocks--Forth說 I,J,K 即非 I,J,K 是名 I,J,K

Jimmy's papa為了讓Jimmy小朋友認認字,收收心,偶而會要他念幾頁金剛經,

經中須菩提有云
【 世尊說:我見、人見、眾生見、壽者見, “Because (when) the Tathagata speaks of the view of an ego, a Personality, a being and a life, 即非我見、人見、眾生見、壽者見,是名我見、人見、眾生見、壽者見 “it is not really, (but) is (expediently) called the view of an ego, a personality a being and a life.” 】。
雖然不甚了解此段經文的意義,反正是經典,小朋友有唸有保佑(BoBee)啦!!

不過今天寫Forth小範例時,使用Loop Index卻遇見非預期的結果,讓Jimmy's papa見識到了
Forth說 I,J,K 即非 I,J,K 是名 I,J,K
寫慣一般程式語言的人,或許看了書上的Forth程式碼會主觀認定I是最內迴圈索引,J是外迴圈索引,K是外外迴圈索引

不過事實上Forth的I,J,K是指返回堆疊(Return Stack)當下時間點實際暫存的迴圈體索引, 所以光看程式會以為外外迴圈的索引值要用K,但實際執行取索引值時,返回堆疊(Return Stack)或許只有外外迴圈一個迴圈體而已 ,所以只能用I取索引值
寄件者 scratchlab02
寄件者 scratchlab02
底下是XML,直接貼到XML編輯區,便能自動載入積木程式
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="processing_Setup" notchtype="LEFT_RIGHT" inline="false" x="54" y="20"><value name="NEXTWORD"><block type="variable_value" notchtype="LEFT_RIGHT" inline="false"><title name="NAME">psjObj</title><value name="NEXTWORD"><block type="procedures_callnoreturn" notchtype="LEFT_RIGHT" inline="false"><mutation name="psjObj"></mutation><value name="NEXTWORD"><block type="math_PushNumber" notchtype="LEFT_RIGHT" inline="false"><title name="NUM">230</title><value name="NEXTWORD"><block type="math_PushNumber" notchtype="LEFT_RIGHT" inline="false"><title name="NUM">230</title><value name="NEXTWORD"><block type="math_PushNumber" notchtype="LEFT_RIGHT" inline="false"><title name="NUM">230</title><value name="NEXTWORD"><block type="processing_BackgroundByValues" notchtype="LEFT_RIGHT" inline="false"></block></value></block></value></block></value></block></value></block></value></block></value></block><block type="procedures_callnoreturn" notchtype="LEFT_RIGHT" inline="false" x="55" y="58"><mutation name="psjObj"></mutation><value name="NEXTWORD"><block type="math_PushNumber" notchtype="LEFT_RIGHT" inline="false"><title name="NUM">0</title><value name="NEXTWORD"><block type="processing_FillByGray" notchtype="LEFT_RIGHT" inline="false"></block></value></block></value></block><block type="compile_define_highword" notchtype="Top_Bottom_Right" inline="false" x="55" y="96"><title name="NAME">MyHighWord</title><statement name="STACK"><block type="math_PushNumber" notchtype="TOP_BOTTOM_RIGHT" inline="false"><title name="NUM">20</title><value name="NEXTWORD"><block type="math_PushNumber" notchtype="LEFT_RIGHT" inline="false"><title name="NUM">0</title></block></value><next><block type="control_DoLoop" notchtype="Top_Bottom_Right" inline="false"><statement name="STACK"><block type="control_i" notchtype="TOP_BOTTOM_RIGHT" inline="false"><value name="NEXTWORD"><block type="math_PushNumber" notchtype="LEFT_RIGHT" inline="false"><title name="NUM">2</title><value name="NEXTWORD"><block type="math_Mod" notchtype="LEFT_RIGHT" inline="false"><value name="NEXTWORD"><block type="math_TwoSlash" notchtype="LEFT_RIGHT" inline="false"><value name="NEXTWORD"><block type="comment" notchtype="LEFT_RIGHT" inline="false"><title name="COMMENT">為何用I不用J,這是Forth有趣的特性,因為此時間點Return Stack只存在一個迴圈體</title></block></value></block></value></block></value></block></value><next><block type="math_PushNumber" notchtype="TOP_BOTTOM_RIGHT" inline="false"><title name="NUM">25</title><value name="NEXTWORD"><block type="math_PushNumber" notchtype="LEFT_RIGHT" inline="false"><title name="NUM">0</title></block></value><next><block type="control_DoLoop" notchtype="Top_Bottom_Right" inline="false"><statement name="STACK"><block type="stack_dup" notchtype="TOP_BOTTOM"><next><block type="procedures_callnoreturn" notchtype="TOP_BOTTOM_RIGHT" inline="false"><mutation name="psjObj"></mutation><value name="NEXTWORD"><block type="math_PushNumber" notchtype="LEFT_RIGHT" inline="false"><title name="NUM">25</title><value name="NEXTWORD"><block type="control_j" notchtype="LEFT_RIGHT" inline="false"><value name="NEXTWORD"><block type="math_Multi" notchtype="LEFT_RIGHT" inline="false"><value name="NEXTWORD"><block type="stack_rot" notchtype="LEFT_RIGHT" inline="false"><value name="NEXTWORD"><block type="control_i" notchtype="LEFT_RIGHT" inline="false"><value name="NEXTWORD"><block type="math_Add" notchtype="LEFT_RIGHT" inline="false"><value name="NEXTWORD"><block type="math_PushNumber" notchtype="LEFT_RIGHT" inline="false"><title name="NUM">20</title><value name="NEXTWORD"><block type="math_Multi" notchtype="LEFT_RIGHT" inline="false"><value name="NEXTWORD"><block type="math_PushNumber" notchtype="LEFT_RIGHT" inline="false"><title name="NUM">20</title><value name="NEXTWORD"><block type="math_PushNumber" notchtype="LEFT_RIGHT" inline="false"><title name="NUM">8</title><value name="NEXTWORD"><block type="processing_DrawRect" notchtype="LEFT_RIGHT" inline="false"><value name="NEXTWORD"><block type="comment" notchtype="LEFT_RIGHT" inline="false"><title name="COMMENT">此I非彼I</title></block></value></block></value></block></value></block></value></block></value></block></value></block></value></block></value></block></value></block></value></block></value></block></value></block></next></block></statement><next><block type="stack_drop" notchtype="TOP_BOTTOM"></block></next></block></next></block></next></block></statement></block></next></block></statement></block><block type="procedures_callnoreturn" notchtype="LEFT_RIGHT" inline="false" x="58" y="431"><mutation name="MyHighWord"></mutation><value name="NEXTWORD"><block type="comment" notchtype="LEFT_RIGHT" inline="false"><title name="COMMENT">JimmyScratchLab Demo</title></block></value></block></xml>

2012年10月11日 星期四

JForthBlocks--使用[IF]...[ELSE]...[THEN]積木

使用[IF]...[ELSE]...[THEN]積木可以讓Forther選擇控制哪些程式碼段落需要編譯與解譯,哪些段落則不需要

在開發Library時,因為各個Forth系統不一定實作Library所用到的符式詞(Forth word),需要用到[IF]...[ELSE]...[THEN]積木適時補上缺漏

以下範例說明,如何選擇哪些段落需要執行,可到JForthBlocks線上試玩版 jforthblocks.appspot.com試玩看看

寄件者 scratchlab02
寄件者 scratchlab02

2012年10月9日 星期二

Jimmy的樂高積木修行--虎之卷30頁

凡走過必留痕跡,紀錄Jimmy的積木組裝修行,簡單的小組件,Jimmy很快就組完了

寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02

Jimmy的樂高積木修行--虎之卷26頁

凡走過必留痕跡,紀錄Jimmy的積木組裝修行,雖然看似簡單,但因為手上的鏈條不夠長,也沒有適合的大齒輪,Jimmy花得時間比預期久

寄件者 scratchlab02
寄件者 scratchlab02

2012年10月7日 星期日

新貢品LEGO TECHNIC 9398 四輪驅推動車

凡走過必留痕跡,這是Jimmy童心未泯的叔叔貢獻的LEGO TECHNIC 9398,組裝完後拍特寫謹此留念,接下來它的命運就是拆散進入Jimmy的積木箱,它的大輸出動力馬達及彈簧避震支架是少見的積木配件,將來Jimmy想組裝的機器人就可以考慮運用這些特殊組件

寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02

2012年10月6日 星期六

[UFO]高雄左營上空的不明飛行物體

Jimmy's papa外出散步時,經常會抬頭看看天上的雲朵或星星月亮,讓長時間注視電腦螢幕的眼睛能舒緩一下,有天晚上經過華夏路時,赫然發現前方大樓上方有個閃著紅藍光的不明飛行物體,沒有盤旋也沒有移動,我和Jimmy's 媽看了快十分鐘的時間,它還是滯留不動

後來回家時,往蓮潭的方向一望,發現夜空中竟然有兩個一高一低的閃著紅藍光的光點,叫家人過來看,Jimmy's grandma也說微笑公園那邊常做運動的老人家也經常看到這一閃一閃的物體

現在,只要Jimmy's papa抬頭看到那兩三顆經常看到的星星,就會覺的越發可疑....


以下這些網友拍到的不明物體,很像我那天見到的,想不到2010年就有人看到啦!!! ps.最近左營萬年祭,Jimmy's papa行經蓮潭會館平交道前,等待火車通過時,抬頭赫然又看到那個飛行物,好多人都拿起手機拍照,應該是有人施放遙控的飛行器,是交通單位嗎?

2012年10月5日 星期五

[符式相關活動]魔法自走車 Arduino eForth 程式設計 研習 競賽 第一期活動已 開放報名

臺灣符式推廣協會正在舉辦『魔法自走車趣味競賽』,主辦單位還提供免費課程及器材,教大家如何以精幹剽悍的符式(Forth)語言控制硬體

可惜Jimmy's papa住在路途遙遠的高雄,否則也很想報名參加啊!!!

2012年9月29日 星期六

Jimmy的樂高積木修行--虎之卷135頁

為了決定每次修行的目標,我們父子倆都會小小地爭執一番,Jimmy喜歡做炫炫的車子,我則偏好簡單又能學得技巧,且半小時能搞定的項目,這次我倆妥協的結果,先讓Jimmy做他選的小車車的主體架構,然後再做我挑的第135頁小組件
寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02

2012年9月26日 星期三

JForthBlocks--Import New Blocks(.FS檔自動轉成新積木)

萬歲!!!JForthBlocks終於可以將.FS檔(Forth Library File)自動轉成新積木了

幫JForthBlocks做新積木是件繁瑣又累人的差事,Jimmy's papa已經將這部份自動化,讓使用者自行載入自己定義的Forth Library檔案,便可自動產生新積木,不用再做苦工了,不知道其他的程式語言的函式庫轉積木的難度如何,改天Jimmy's papa試著轉轉看

打從第一次接觸MIT Scratch,Jimmy's papa就夢想有朝一日能在Scratch-like tool上有豐富的函式庫支援,JForthBlocks能成功邁向這個目標一小步,真的很感謝Blockly與JeForth等專案相關開發者的貢獻哩!!!

打開文字編輯器先定義如下的My Library.fs,並存檔
: 3dup dup dup dup ;
: 4dup dup dup dup dup ;
: 5dup dup dup dup dup dup ;

請按Import Library
寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02

2012年9月21日 星期五

gForth--載入FFL(Forth Foundation Library)

FFL,一個通用的Forth詞庫(library),提供各類包括特殊資料型態,資料結構,雜錯與亂數,格式解析與檔案讀寫等等符式詞

Jimmy's papa已經玩好一陣子Forth,但總覺得沒有強大的library支援,就好像領導人背後沒有智庫運籌帷幄,事事校長兼撞鐘,實在成不了大事,所以今天抽空試試在Linux上執行gForth,然後執行FFL提供的範例,初步測試還蠻成功的

接下來,就是好好學習如何使用FFL了
寄件者 scratchlab02

2012年9月20日 星期四

Jimmy的樂高積木修行--虎之卷209頁

這次的修行,不知是否是虎之卷的作者設下的難題,Jimmy小朋友做好了這個超簡單的小組件,可以刷牙洗臉,準備上床睡覺蓋棉被純聊天(這似乎是除了看卡通玩平板外,Jimmy最期待的幸福時光),不過Jimmy's papa接過手試玩了一下,發覺齒輪卡死動彈不得,研究一下只要拆掉其中一個小齒輪,便能順利轉動,順便教Jimmy觀察大小齒輪轉速的差別

今天的心得是,虎之卷是有安排陷阱的,再簡單也不能傻傻的看圖照做,要動腦筋哩!!!

有四個齒輪,互相牽制動不了
寄件者 scratchlab02
拆掉一個就OK啦!!!
寄件者 scratchlab02
寄件者 scratchlab02