發表文章

目前顯示的是 2021的文章

繪文字填圖 Emoji Paint

圖片
這個遊戲的靈感是源自兒子的學校課本裡面,有個叫不插電程式課的書本裡面得到的。書裡面有一類型的題目就是把圖畫裡的數字填上對應的色塊,全部填滿後就能夠得到一張馬賽克風格的圖案。 利用這個概念,再結合之前製作的 繪文字刮刮樂 的分類資料,使用emoji製作了一個馬賽克像素風的填圖小遊戲。 玩 / Android 底下是這個小遊戲的製作技術重點。 圖片馬賽克化 把圖片馬賽克化的原理很簡單,簡單的講就是: 先把整張圖片根據馬賽克大小作切割。 對每一塊切割下來的馬賽克圖塊裡面的所有像素的顏色計算平均值。 使用計算出來的平均顏色填滿馬賽克圖塊。 對所有馬賽克圖塊作同樣處理,這樣就完成了把一張圖片馬賽克化了,接下來底下說明一些實作細節。 1、繪文字填圖的馬賽克分為大中小三種尺寸,為了在手機上最後呈現的畫面尺寸大小適中,把canvas的大小設定為400x400px。為了方便計算,三種馬賽克方塊的大小分別為:16x16、25x25及40x40,16、25及40正好都可以整除400。在遊戲主選單最下方選擇馬賽克尺寸後,就會以這個大小對400x400尺寸的原圖作馬賽克化的切割。如果選擇最小尺寸的馬賽克,則原圖被切割成25x25個圖塊。如果選擇中等尺寸的馬賽克,則原圖被切割成16x16個圖塊。若選擇最大尺寸的馬賽克,則原圖被切割成10x10個圖塊。 2、計算每個馬賽克圖塊的平均顏色的方法很直接,就是對圖塊中每一個Pixel加總後,再除以Pixel總數得到平均值。需注意的是,加總再求平均的計算是要對顏色的RGB值各別作。最後把得到的平均的RGB值,再組成一個新的顏色作為整個馬賽克圖塊的顏色。 function sumRgb(data, x, y, cw, ch) {   var rgb = [0, 0, 0];   for (var i = 0; i < cw; i++) {     for (var j = 0; j < ch; j++) {       var idx = 4 * ((x + i) + (y + j) * canvas.width);       rgb[0] += data[idx];       rgb[1] += data[idx + 1];       rgb[2] += data[idx + 2];     }   }   for (var i =

勇者小白

圖片
勇者小白是一個簡單的冒險小遊戲,主要由三大系統構成:任務系統、對話系統和背包系統。由小遊戲和過場劇情對話把遊戲故事串連起來,目前小遊戲數量己經有30個,還在持續增加中。這些小遊戲和故事,大部份由我設計製作,有些是和兒子一起設計由我製作。 從我兒子幼兒園開始就就只會讓小孩玩勇者小白,後來女兒也開始玩了。其間也試著引導小孩幫忙設計內容,雖然效果還不明顯,不過多少也為生活增加點樂趣。遊戲裡面的資源儘量都是網路上的免費資料,而有些是自己簡單製作的,但也有些就是借用的,那天有問題時再作更換。 總之,勇者小白會持續不斷的增加內容。 試玩  / Source ;----- 很久之前我就想要製作一個冒險類的小遊戲,所以某天靈感來了很快的寫了幾頁的故事大綱。 早上起床的時候發現小白不見了 一出門外星人巨大的太空船蓋住整個天空,廣播說要你們好看 跟爺爺說明,爺爺說出一段古老的傳說,需要3把神兵利器才能把外星人打跑,分別是(xx,yy,zz-要命名) 突然發現爺爺用來抓癢的手牌不求人是其中一把神兵(布)-獲得(布) 爺爺說張媽媽家有另一把神兵,於是去找張媽媽 張媽媽在她家門口曬衣服,她說她家的傳家之寶封印在洞穴內,被祖先保管著要通過考驗才能取得 到洞穴,用手牌不求人解開封印,進去後通過考驗(倉庫番),和祖先對話取得寶箱,打開是空的... 回去找張媽媽說明-原來她把傳家之寶拿來當曬衣杆-獲得(石頭) 從張媽媽得知另一把神兵是由小香家保管的 小香正在作美勞作業,(取得布和石頭前她只會在門口玩),發現她桌上有一把美勞用的剪刀,不過要拿棒棒糖來換 跑到雜貨店去,結果沒有錢,回去找爺爺要5塊再到雜貨店買棒棒糖(要今天的零用 錢) 拿著棒棒糖去和小香換到剪刀,但是沒有神力不能用 此時小香爸爸出現,他說他的傳家之寶是一段咒語,可以附與剪刀神力變成神之剪刀,不過還缺少桿子的部份 到搖滾阿凱家去,向他借打鼓棒,不過要先幫他找回偷跑的小烏龜 找小香爸爸但少了烏龜的眼淚才能施咒,回去找阿凱的小烏龜 需要一個瓶子到雜貨店玩轉蛋取得(找爺爺要但今天給過了,雜貨店老闆給一個 打工機會賺5塊) 親了小烏龜一下讓他大哭,趕快用瓶子裝獲得烏龜眼淚 再回去找小香爸爸,組合成神之剪刀-獲得(剪刀) 到飛碟處,用猜拳打倒魔王 警報響起,飛碟要爆了,趕快進到機艙,解除爆炸裝置(解謎) 魔王:謝謝你,小白。你真是個勇者! 過關 同