2012年7月31日 星期二

JForthBlocks--ProcessingJS Noise亂數範例試作

Jimmy's papa是以邊做範例順便測試的方式,幫JForthBlocks抓抓bug長肉肉,每實作一個範例,就好像同時牽了好幾隻寵物上街一般,腦子要同時顧到Forth語言,JeForth VM,Blockly,ProcessingJS各種不同的面向,呵呵,未來還可能為了JForthBlocks後端多個GO語言耶!!所以進度很慢很慢.......

這是個很簡單的範例,但是讓我重拉積木了好幾次,原因是ProcessingJS第一次執行的OnDraw霸佔了Stage,讓我後續的修改都無法執行,後來是用了exit()才解決這個bug
寄件者 scratchlab02
寄件者 scratchlab02


底下是修改過的原始範例及出處

float xoff = 0.0;

void draw() 

{

  xoff = xoff + .01;

  float n = noise(xoff) * width;

  line(n, 0, n, height);

}

2012年7月29日 星期日

姆潘巴現象(Mpemba effect)--熱水會比冷水先結冰

姆潘巴現象(Mpemba effect)--熱水會比冷水先結冰 (“熱水結冰竟然比冷水快?”)
聽聞英國皇家化學學會(The Royal Society of Chemistry)祭出1000英鎊的解答金
Jimmy's papa晚上做夢時,似乎有天人(外星人?!)解說譬喻.....
.....
行Javascript之道者
得聞Forth之法,心嚮往之,於壇中月發數十文,隔月寂之
行Smalltalk之道者
得聞Forth之法,心嚮往之,於壇中月發一二文,數年不止
.....

好難理解啊...1000英鎊與我無緣啊...

2012年7月26日 星期四

JForthBlocks--ProcessingJS Distance2D範例試作

這是參考ProcessingJS.org Demo--Drawing lots of simultaneous circles to create an impressive effect.,Jimmy's papa重新以JForthBlocks改寫一次

從以下的積木工作區截圖可以發現,九成可以與ProcessingJS程式碼對應到,其中的float size區域變數宣告,是為了暫存dist(mouseX, mouseY, i, j)的運算結果,這在Forth語言根本可免,只要直接將運算結果暫時堆到返回堆疊(Return Stack)即可,要用時再堆回資料堆疊(Data Stack)

float max_distance;



void setup() {

  smooth();

  noStroke();

  max_distance = dist(0, 0, width, height);

  loop();

}



void draw() 

{

  for(int i = 0; i <= width; i += 20) {

    for(int j = 0; j <= width; j += 20) {

      float size = dist(mouseX, mouseY, i, j);

      size = size/max_distance * 66;

      ellipse(i, j, size, size);


    }

  }

}
寄件者 scratchlab02

2012年7月24日 星期二

世界第八奇蹟--人之聖殿

來過高雄,曾經仰望華麗的光之穹頂而發出讚嘆聲的朋友們,應該對位於義大利號稱世界第八奇蹟的Damanhur, 也會發出同樣的讚嘆,Jimmy's papa在想,如果高雄市長能到義大利請到這群藝術家,好好地將每個捷運站化為藝術聖堂,說不定高捷財務馬上就能轉虧為盈囉!!!

Damanhur--Temples of Humankind

360度全景導覽

2012年7月16日 星期一

JForthBlocks -- 滑鼠按鍵事件處理(MousePressed EventHandler)

花許多精力整合一款視覺積木化程式工具,卻無法實現滑鼠或鍵盤的各種觸發事件處理,那就有點遜掉了,所以Jimmy's papa無論如何也要把此教程的詳細流程貼出來,也順便讓大家認識認識selfid這個立即詞(immediate word),同時要注意工作區上有各自分開的積木群,JForthBlocks沿用Google-Blockly的處理順序方向,是由上到下,由左至右,所以如果積木左右順序的積木沒有拼接好,導致有上下的落差間距,所產生出來的程式碼(code)可能錯置到不同的段落

JForthBlocks線上試玩版 jforthblocks.appspot.com

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

2012年7月13日 星期五

JForthBlocks -- 取得螢幕寬高值及堆疊操作技巧

Jimmy's papa在這裡示範如何以ProcessingJS取得螢幕寬高值,且在不依賴變數情況下僅藉由堆疊操作技巧便能成功執行取得相關數值

JForthBlocks線上試玩版 jforthblocks.appspot.com執行
寄件者 scratchlab02
寄件者 scratchlab02

按Run Program
寄件者 scratchlab02

會自動切換到Stage,此時可看到灰色區塊,表示ProcessingJS初始成功
寄件者 scratchlab02

透過.s積木,可在Forth Console觀察到目前堆疊內容有一個ProcessingJS物件(Object)
寄件者 scratchlab02
寄件者 scratchlab02

堆疊已經有兩個ProcessingJS物件(Object)
寄件者 scratchlab02
寄件者 scratchlab02

成功取得瀏覽器Screen寬度1001,同時堆疊也剩下一個ProcessingJS物件(Object)
寄件者 scratchlab02
寄件者 scratchlab02

接著將ProcessingJS物件(Object)置於堆疊頂端
寄件者 scratchlab02
寄件者 scratchlab02

再複製一個ProcessingJS物件(Object)
寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02
寄件者 scratchlab02