發表文章

目前顯示的是 2月, 2018的文章

Scratch 3 遊戲:貪吃蛇(Snake Game)

圖片
若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 貪吃蛇遊戲的遊戲規則: 蛇不斷地往前進。 用鍵盤上、下、左、右來控制蛇前進的方向。 吃到食物時,蛇尾會變長。 碰到牆壁或蛇尾時,遊戲結束。 那要如何製作一個簡易的貪吃蛇遊戲呢?請看下圖: 上圖中紅色為蛇頭,紫色為蛇的尾巴,尾巴一開始會在(5, M)的位置,當蛇頭由(2, E)往(2, D)移動時,程式只需要把蛇尾搬到(2, E)的位置就行了(也就是蛇頭上未移動前的位置),這樣就可以製造出蛇在移動的效果了。而 此觀念剛好可以用鏈結串列(Linked list)來實作 。 根據「 阿玉Scratch作品集:貪吃蛇 」以Scratch來實現可以使用兩種方式: 畫筆。 分身。 使用畫筆時,遊戲開始後,蛇尾會一直增加。 使用分身的話,就可以實作類似上面鏈結串列的方法。 於是筆者自己做了一個 : https://scratch.mit.edu/projects/205043655/ 製作步驟 步驟一: 新增兩個角色:「蛇」與「Apple」 角色「蛇」會有兩個造型:「頭」與「身體」 步驟二:角色「蛇」程式積木 步驟三:角色「Apple」程式積木 好,那在Scratch中使用分身的方式來製作貪吃蛇時,需要注意什麼那些事呢?

家用工作桌組裝

圖片
若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 最近筆者坐著的時間太長了,所以購入 哈特氣壓無段式升降站立桌 來試試,本篇介紹筆者的組裝紀錄與心得。 組出來的成果如下圖: 收到的包裝盒: 零件與說明書 說明書寫得很詳細,有附轉動六角螺絲的工具,但 需額外準備一隻十字螺絲起子 。 步驟一:從桌面背面柱子組起 ,未組好前如下圖  此步驟的說明書 組好後 步驟二:桌腳的柱子組裝, 未組好前如下圖 此步驟的說明書 組好後 步驟三:將桌面與桌腳組合 ,此步驟的說明書 此步驟最好有兩人以上來安裝,這樣子會比較容易將桌面的柱子對齊桌腳的柱子。 組好後 基本上這套的組裝方式不難,但 千萬別用電動螺絲起子來安裝,以免損壞結合處的結構 。

代數:年齡問題

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 問題:「五年前小明的年齡是哥哥的1/3,現在小明的年齡是哥哥的1/2,請問小明現在幾歲?」 解法: 假設小名現在x歲,哥哥為y歲。 五年前小明的年齡是哥哥的1/3 ==> 可列出底下式子(1):\[\Large x - 5 = \frac{y}{3} \] 現在小明的年齡是哥哥的1/2 ==> 可列出底下式子(2):\[\Large x = \frac{y}{2} \] 將式子(2)帶入式子(1)得到式子(3):\[\Large\frac{y}{2} - 5 = \frac{y}{3} \] 式子(3)可得到\[\Large y = 20 \] 帶入式子(2)得到\[\Large x = 10 \] 所以小名現在為十歲。

MIT App Inventor 2 Spinner 下拉選單範例

圖片
若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 在 如何設計Android手機遙控Otto 中,筆者用了Button元件來示範,但若跳舞的指令一直增加時,就要一直增加按鈕元件,若指令有二十幾個時,版面會不好看,那有沒有比較容易一點的方式? 本文將使用Spinner元件來簡化這個問題,首先假設有四個跳舞指令如下: 索引 Otto指令名稱 Otto指令 1 抖左腳 a 2 抖右腳 b 3 抬左腳 c 4 抬右腳 d 於是程式用了兩個清單(list),一個是指令名稱,一個是指令本身: 把指令名稱指定給Spinner選單,若使用者選擇 抬左腳 ,  抬左腳 在 指令名稱 清單(上圖的左邊)的索引(位置)是 3 ,對應到 指令 清單(上圖的右邊)會找到 c 這個指令。 範例下載處 (註:只能供APP Invetor的範例,mBlock部分可參考 如何設計Android手機遙控Otto )

用 Corona SDK 寫遊戲

圖片
若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 Corona SDK 下載 https://coronalabs.com/products/corona-sdk/ ,需註冊帳號才能下載。Corona SDK為跨平台的開發工具,可用來設計手機與桌上電腦程式。Corona 用的語言是Lua,底下網址提供線上Demo http://www.lua.org/demo.html 。 安裝好 Corona SDK後,必須以註冊好的帳戶登入: 登入後,可看到底下畫面,選擇 New Project: 輸入程式名稱並選擇Blank專案: 此時Corona SDK會開啟專案資料夾: 同時會詢問用哪個軟體開始main.lua檔案,筆者是用 Visual Studio Code 來開啟: 在開始寫程式前,可以在 Visual Studio Code 裡安裝 Corona Tools : 在此先以官方提供的 BalloonTap範例 來講解Corona SDK的遊戲設計觀念,圖檔說明如下: 檔案名稱 大小 (寬×高) 用途 background.png 360 × 570 背景圖。 platform.png 300 × 50 讓氣球停止的平台。 balloon.png 112 × 112 氣球。 而在程式方面,分為底下步驟來處理: 讀取背景圖 讀取平台圖 讀取氣球圖 建立物理模擬 事件處理 計分 讀取背景圖 程式碼如下: local background = display. newImageRect ( "background.png" , 360 , 570 ) background. x = display. contentCenterX background. y = display. contentCenterY 程式碼第一行讀取background.png檔案,結果如下圖,背景沒有填滿整個視窗畫面。 那要怎麼讓背景圖填滿畫面呢?程式碼第二、三行可以幫我們達成這件事: 讀取平台圖 程式碼如下: local platform = di...

物聯網 NodeMCU 範例:以網頁控制 LED 燈

圖片
若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 本文將使用有聯網能力的 NodeMcu來實作一個用網頁上的按鈕來控制 LED 燈,參考的資料官網的教學影片: 所需軟體: Arduino IDE ESP8266 core for Arduino TUNIOT 此部分請參考本部落格文章:【 物聯網 NodeMCU 開發環境建立 】來建立環境。 硬體材料: NodeMCU x 1 Breadboard x 1 任意顏色LED x 2 電阻 Resistor 330 ohm x 2 麵包板 Breadboard x 1 硬體電路: 一顆LED的長腳接 NodeMCU D1 一顆LED的長腳接 NodeMCU D2 LED的短腳接 NodeMCU GND 完成圖: TUNIOT積木: 此範例的XML檔可在此下載 。 成果影片:

如何設計Android手機遙控Otto

圖片
在 Otto機器人動作之程式碼分析 後,並了解Otto的程式碼概念後,我們就可以著手以 mBlock 來設計所有的舞步,並搭配藍牙無線技術,讓Android手機可以來控制自己設計出來的Otto動作,而本文將要說明如何做到這些目標。會分成底下幾個部分來說明: Otto的mBlock舞步程式設計 Otto的mBlock藍牙程式設計 MIT App Inventor程式設計 先使用 MIT App Inventor 設計Android手機程式,在著手設計mBlock程式;或是先設計mBlock程式,在設計Android手機程式,都是可行的流程。不過筆者比較習慣先從Otto本身的mBlock程式設計開始,而在設計之前有件事要先想好:「 手機App與Arduino的溝通方式 。」 本文會使用藍牙當成Arduino與Android手機溝通的媒體,如上面投影片提到的所用的文字語言不一樣,雙方可能也無法順利溝通。因為是手機要來控制Otto機器人,那麼手機就會先發送訊息給Otto, Otto收到訊息後不見得會做預期的動作 ,所以要先定義好兩者的溝通方式。筆者訊息的設計方式為 手機端傳送 小寫字母 s 到 otto,otto收到 小寫字母 s 後做抖右腳的動作。 小寫字母 s 訊息傳送過程如下圖: 手機的藍牙會先送給Otto上的藍牙模組,藍牙模組再透過TX/RX兩個腳位與Nano通訊。 mBlock 積木設計 在mBlock裡,可以使用 <串口可讀取字節數> 與 <串口讀取一個字節> 兩個積木來取得藍牙模組送來的訊息。下圖中的馬達歸位與 抖右腳 為自訂積木,抖右腳可參考筆者 Otto機器人動作之程式碼分析 一文,而馬達歸位就是將四個Servo的角度設定為90度。( 注意:此部分不需要將藍牙模組接到Nano上。 ) 接著可以使用 Arduino IDE 中的序列埠監控視窗(Serial Monitor)工具來測試 mBlock 的程式,而 mBlock的串口通訊預設速率為115200 。 此時,Otto要抖右腳三次才算正常, 這時可以把藍牙模組接到Nano上 。接著可進行Android手機程式設計。 MIT App Inventor積木設計 在MIT App Inventor部分,...

使用Sonic Pi 創作音樂(Creating Music with Sonic Pi)

圖片
若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 介紹 Sonic Pi 官網: http://sonic-pi.net/ 。Sonic Pi是一套以類似Ruby的程式語言(Ruby-based)來製作音樂並可錄製成*.wav檔。Sonic Pi除可運行於Raspberry Pi上,也可以運行在其他系統: 而且又是免費下載,筆者就安裝起來玩玩看,官網也有線上可以播放的音樂。 操作介面 播放音樂 首先,可以使用 play 這個指令,此指令格式如下: 1 2 play 數字 數字代表著音符。 音符說明可參考此網頁: http://computermusicresource.com/midikeys.html 在程式區輸入,試著改變 70 這個數字,例如85、96、50等任意數字。 1 play 70 接著一次用多個play指令看看有什麼不一樣: 1 2 3 play 62 play 73 play 84 在每個音符(tone)之間暫停一秒: 1 2 3 4 5 play 62 sleep 1 play 73 sleep 1 play 84 至此可以用play   數字 的指令來製作出一些音樂,但要查樂譜所對應的音符數字是有點麻煩,所以可用底下的指令: play 音符名稱 例如github上的 小星星 就是用 play 音符名稱 指令來完成的,對創作音樂有興趣的人可以試試這套軟體。 進一步學習資源 http://www.sonicpiliveandcoding.com/

棋盤擺放問題

圖片
若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 西洋棋是個8x8的棋盤,總共有64個格子,若要在這個棋盤上放上任意數量的城堡並且符合下面三個條件之城堡最多個數為何? 一行最多只能有4個城堡同時存在。 一列最多只能有4個城堡同時存在。 對角線最多只能有4個城堡同時存在。 此三點請參考下面的圖形說明: 答案是能放32個城堡。 那麼城堡要怎麼擺才能放到32個?底下為筆者想出來的答案: 那麼還有其他的解法嗎? 本文的棋盤圖檔事由此網址 https://lichess.org/editor 所產生。