HC-SR04 與 NewPing Library的結合

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

最近在臉書上看到一篇文章:「原來超音波只要用echo腳位就好」。原作是在Microbit上使用,筆者就開始想在Arduino上試試看,底下為筆者搭配Arduino New Ping的成功做法。


硬體材料:
  • Arduino UNO R3 板子 x 1
  • 杜邦線母對母 x 7
  • 330歐姆電阻 x 1
  • Arduino Sensor Shield x 1
  • HC-SR04 x 1
  • SSD1306 I2C 0.96 吋 OLED 顯示模組 x 1
  • 麵包版 x 1

硬體電路:


接線方式:
將HC-SR04 接在麵包版上,使用330歐姆的電阻將HC-SR04的 Echo 與 Trig 給接在一起。
HC-SR04  的 Echo 接到 Arduino Sensor Shield  Pin 12
OLED 的 SCL 接到 Arduino Sensor Shield  SCL
OLED 的 SDA 接到 Arduino Sensor Shield  SDA


安裝 Arduino New Ping 與 OLED的程式庫:

https://github.com/adafruit/Adafruit_SSD1306

https://github.com/adafruit/Adafruit-GFX-Library


Arduino IDE 程式碼:
示範影片:

git 的五四三

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

用git來做版本控制也有一段時間了,本篇就來聊聊 git 的一些事。

一、git是Local端的版本控制
這一點特別提出來的主要原因是:因為網路上有很多的 git hosting服務,結果似乎有些人覺得git是遠端版本控制。這一點看看下圖來說明(圖來源:https://softwareengineering.stackexchange.com/):
alt text
請不要再將github與git混為一談了,因為github是提供git hosting的線上服務,不是git而已喔!


二、git是方便管理文字檔的版本控制軟體
有很多人會問:「git可不可以做為Word之類的文件版本控制啊?」

「用git做Word文件版本管理的話,會累死人喔!」

原因如下:
1. 預設的Word文件格式不是屬於文字檔案(若存成 xml 檔案等之類的文字格式除外)。
2. Word文件的軟體大多有追蹤修訂的功能,可作為簡易的Word文件版本控制。
3. 對一般電腦使用者而言,git 不好入門,因為git最初目的是給軟體開發者用的。

恩,「那有什麼方便使用的版本控制體可以推薦給一般電腦的使用者呢?」
筆者認為,要做版本控制的話,首先要養成寫文件紀錄的習慣,不然怎麼可能會記得檔案的:
1. 修改歷程。
2. 為了什麼修改。
3. 是誰修改的。
..等資訊呢?

版本控制軟體是方便我們來做以上的資訊紀錄,若沒有良好的寫文件紀錄習慣,例如有人只會寫版本一、版本二、版本三...。這樣子來使用版本控制軟體,根本就不知道做了那些修改啊!

三、自學資源
要學git的話,底下為筆者覺得不錯的教學網站。
連猴子都能懂的Git入門指南| 貝格樂(Backlog)

30 天精通Git 版本控管
GIT基本使用教學
Learn Git Branching
Git tutorial
Become a git guru

四、git 的開發歷史
git 是 Linus Torvalds 開發出來的,他在2005年時因為要放棄使用BitKeeper軟體,但又不想回到沒有BK的日子,於是花了約10天的時間打出第一個git版本。git避免許多人所犯的錯誤,而且又是開源的,所以才會在很短的時間內成為版本控制的新星。對git的歷史有興趣的人可以到wikipedia了解詳情。

以上是筆者目前想到的,若有想到其他的,日後再補充了。

Scratch 遊戲:簡易憤怒貓(Building a Fake Angry Birds Game with Scratch Programming)

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

在製作簡易憤怒貓之前,先來看一下 Angry Birds 此款遊戲試怎麼玩的。點一下連結 Angry Birds Project on Scratch Website 挑一個自己喜歡的玩玩看,玩的時候請注意鳥是怎麼移動的
註:此篇文章將會修改Scratcher所分享的專案,來改成簡易版的憤怒鳥。

Angry Birds有用到「萬有引力」的物理觀念,於是我們可以找和這主題有關的專案。但筆者找到「Scratch砲彈射擊與簡易物理運算」一文有詳細說明「加速度」、「反作用力」等觀念,讀者可以參考看看。筆者將採用Scratcher laecych 所分享的 大砲-反彈分身版 範例來製作。

遊戲試玩:


專案網址:https://scratch.mit.edu/projects/263003817/

可以增加遊戲的功能:
1. 計分方式。
2. 關卡設計。
3. 特殊道具。
4. 自由發揮。

Tinkercad Circuits:NeoPixel Ring 光控燈

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

本文使用TinkerCad Circuits來示範NeoPixel Ring的應用:「光控燈」

材料(Materials):
  1. Arduino UNO R3 x 1
  2. NeoPixel Ring x 1
  3. Small Breadboard x 1
  4. 10K ohm Resistor x 1
  5. Photoresistor x 1

電路(Circuit):

光敏電阻Photoresistor的訊號接在UNO A0,NeoPixel的In接在UNO的D2。

程式碼(The Code):

示範影片(Demo Video):




範例連結(Example Link):
https://www.tinkercad.com/things/cqEGU6pHE5s

Tinkercad Circuits:NeoPixel Ring 水流模擬

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

本文使用TinkerCad Circuits來示範NeoPixel Ring的應用:「水流模擬」

材料(Materials):
  1. Arduino UNO R3 x 1
  2. NeoPixel Ring x 1
  3. Small Breadboard x 1
  4. 1K ohm Resistor x 2
  5. Pushbutton x 2


電路(Circuit):

兩顆按鈕分別接在UNO的D3與D4,NeoPixel的In接在UNO的D2。

程式碼(The Code):

示範影片(Demo Video):




範例連結(Example Link):
https://www.tinkercad.com/things/9p6iQyMyfO6

Tinkercad Circuits:LED 模擬走馬燈

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

本文使用TinkerCad Circuits來示範LED燈的應用:「走馬燈看板」。

材料(Materials):
  1. Arduino UNO R3 x 1
  2. Small Breadboard x 10
  3. 220 ohm Resistor x 10
  4. LED x 10


電路(Circuit):



十顆 LED 燈的陽極(Anode)分別接到 UNO 的數位腳位 2 ~ 11。

程式碼(The Code):
無使用陣列版本
使用陣列版本
示範影片(Demo Video):


範例連結(Example Link):
https://www.tinkercad.com/things/70zn6GiiAsQ

Tinkercad Circuits:溫度警報器(Temperature alarm)

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

本文使用TinkerCad Circuits來示範溫度感測器的應用:「溫度警報器」。當溫度越高時,蜂鳴器的聲音就越快發出聲響,LED亮越多顆。

材料(Materials):
  1. Arduino UNO R3 x 1
  2. Small Breadboard x 1
  3. Buzzer x 1
  4. 100 ohm Resistor x 1
  5. LED x 5
  6. 1K ohm Resistor x 5
  7. Temperature Sensor x 1


電路(Circuit):


程式碼(The Code):





示範影片(Demo Video):


範例連結(Example Link):

Tinkercad Circuits:一個腳位偵測多顆按鈕(Multiple Buttons with One Analog Pin)

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

本文要說明如何使用一個Arduino Analog Pin 來偵測多個按鈕(Push Buttons)的其中一顆按鈕是否有被按下。

材料(Materials):
  1. Arduino UNO R3 x 1
  2. Buzzer x 1
  3. 10K ohm Resistor x 4
  4. Pushbutton x 3
  5. 100 ohm Resistor x 1
  6. Small Breadboard x 1
電路(Circuit):


程式碼(The Code):

示範影片(Demo Video):


範例連結(Example Link):
https://www.tinkercad.com/things/cUy3ztLD8cy

寫程式用的雲端 IDE(Cloud IDE for Programming)

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

要寫程式之前,得先將工具準備好,當所使用的程式語言有好多種,那前置作業就會很多,若只是要練習語法之類的話,那麼雲端 IDE 是個不錯的選擇,目前常見免費且不用建立帳號的雲端 IDE 有下面幾個:

Here are some cloud IDEs for programming. And we don't need a account to use them.

  1. ideone: http://ideone.com/,教學:https://www.techmarks.com/ideone-online-coding/
  2. codepad: http://codepad.org/,教學:https://www.youtube.com/watch?v=8izi7QDEOHk
  3. CodePen:  http://codepen.io/,教學:https://www.minwt.com/webdesign-dev/html/11470.html
  4. JSFiddle: https://jsfiddle.net/,教學:https://blog.miniasp.com/post/2011/02/07/Useful-tool-jsFiddle-Online-Editor-for-the-Web
  5. Tutorialspoint: http://www.tutorialspoint.com/codingground.htm,教學:https://codegym.tech/coding-ground/
  6. Jdoodle: https://www.jdoodle.com/,教學:https://www.youtube.com/watch?v=idN5QmUS8-8

其中的 Tutorialspoint 網站所提供的工具最完整,它除了多樣的程式語言外,還提供了一些 Terminal,如 MySQL、PowerShell、Node.js 等,此外 Tutorialspoint 也有豐富的教學資料,值得一看。 另外 CodePen 和 JSFiddle 只提供前端開發用的JavaScript + HTML + CSS。至於這些雲端 IDE 的使用方式大同小異,先在網頁上寫完程式碼,之後再按下類似 Run 的按鈕就行了。 祝各位 Happy Coding。

Arduino控制WS2812三色燈條

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

本文用到的材料為:
  • WS2812B LED 燈條 x 1
  • Arduino UNO x 1
  • 杜邦線公對公 x 3

安裝 FastLED 程式庫
打開Arduino 的程式庫管理工具(草稿碼 ==> 匯入程式庫 ==> 管理程式庫)

搜尋FastLED

安裝好FastLED就可以看到內建的範例程式


Arduino電路

  • LED燈條 5V 接 Arduion 5V
  • LED燈條 GND 接 Arduion GND
  • LED燈條 ID 接 Arduion Pin 5

接好電路後,筆者使用【檔案 ==> 範例 ==> FastLED ==> ColorPalette】來試試看,ColorPalette的Demo影片如下:

因為程式裡設定使用 50 顆 LED,所以此燈條沒有全部亮。

Python Expressive Puzzlers 8: Does Equal

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

底下的Java程式會輸出什麼結果?
1
2
3
4
5
6
7
8
public class DosEquis {
  public static void main(String[] args) {
    char x = 'X';
    int i = 0;
    System.out.print(true  ? x : 0);
    System.out.print(false ? i : x); 
  }
}

輸出結果會是XX嗎?根據 JLS 15.25的說明(true ? x : 0)的運算結果會是char型別,而(false ? i : x)的運算結果會是int型別。所以輸出結果為X88

而 Python 只有 <expression1> if <condition> else <expression2>的語法,沒有 Java 的 conditional operator 的語法,於是不會有這樣子的Pitfall。

Python Expressive Puzzlers 7: Swap

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

底下兩個Java Class分別會輸出什麼結果?
1
2
3
4
5
6
7
8
public class CleverSwapOne {
  public static void main(String[] args) {
    int x = 1984;
    int y = 2001;
    x ^= y ^= x ^= y;
    System.out.println("x = " + x + "; y = " + y);
}
}

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
public class CleverSwapTwo {
  public static void main(String[] args) {
    int x = 1984;
    int y = 2001;
    x ^= y;
    y ^= x;
    x ^= y;
    System.out.println("x = " + x + "; y = " + y);
  }
}
CleverSwapOne會輸出x = 0; y = 1984,而CleverSwapTwo會輸出x = 2001; y = 1984。為什麼會這樣子呢?

根據JLS 15.7 的說明:「Evaluate Left-Hand Operand First」也就是CleverSwapOne 的執行順序如下:
1
2
3
4
5
6
7
// The actual behavior of x ^= y ^= x ^= y in Java
int tmp1 = x; // First appearance of x in the expression
int tmp2 = y; // First appearance of y
int tmp3 = x ^ y; // Compute x ^ y
x = tmp3; // Last assignment: Store x ^ y in x
y = tmp2 ^ tmp3; // 2nd assignment: Store original x value in y
x = tmp1 ^ y; // First assignment: Store 0 in x

如同原作所說:「 Do not assign to the same variable more than once in a single expression.」

那Python呢?
1
2
3
4
5
6
7
8
9
x = 1984
y = 2001

x ^= y
y ^= x
x ^= y

x ^= y ^= x ^= y
print('x = ', x, 'y = ',  y)

「特洛伊木馬病毒程式設計--使用Python」讀後感

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

特洛伊木馬病毒程式設計--使用Python  此書在前言部分就說明,請以學術研究的角度來看待此書。這讓筆者想起多年前曾去參加一個資安的活動,內容是說明什麼是buffer overflow、stack overflow、SQL injection 等主題,而近幾年隨著 python 程式語言的流行,也越來越多用 python 來寫一些五花八門功能的程式。

而導讀部分也提到只要權限夠(通常用Kernel mode),用C/C++指標的功能可以存取到特定記憶體位址,進而做一些特異功能。此書透過檔案讀寫、網路功能、執行緒、鍵盤紀錄等四大程式功能來完成一個可收集 Windows User 按了哪幾個鍵盤。

而熟悉如何使用這四大功能的人,大概也不想看這本書了吧!底下列出一些參考資源給有興趣的人去研究。


依照這四大功能,此書從網路程式觀念開始慢慢地建立讀者的基本Socket程式觀念,接著說明如何用網路程式來傳送檔案以及通訊協定的介紹。之後,多工程式常用的執行緒上場了。然後就是最後一項功能:鍵盤紀錄(這方法限制在Windows系統上)。

OK,那麼本書的特洛伊木馬病毒程式範例到底是什麼呢?因為本書的範例是在虛擬機器上測試,而且相關的防火牆也需要關閉,也得開啟權限讓程式執行。而這離真正的木馬程式還有一段路要走。不過作者也提到,只要將程式修改,或是將觀念融會貫通並實作出來,就有機會越來越接近真實的木馬程式了。

BTW,書中提到一個數字:「1337」,想了解此數字代表什麼意思,請參考這裡 ]-[3I23那裡 7]-[3I23

Python Expressive Puzzlers 6: Multicast

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

底下的Java程式會輸出什麼?
1
2
3
4
5
public class Multicast {
  public static void main(String[] args) {
    System.out.println((int) (char) (byte) -1);
}
}

結果不會是 -1。幸運的是有條簡單的規則來說明:「Sign extension is performed if the type of the original value is signed; zero extension if it is a char, regardless of the type to which it is being converted.」也就是 byte -1  === sign extension ==> char 65535 === zero extension ==> int 65535。

而 Python Built-in type 不多,筆者只試了底下兩行:
print(int(str(bytes(-1))))
print(int(chr(bytes(-1))))

輸出結果會是什麼呢?

Python Expressive Puzzlers 5: The Joy of Hex

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

下面的程式碼會輸出什麼結果?
1
2
3
4
5
public class JoyOfHex {
  public static void main(String[] args) {
    System.out.println(Long.toHexString(0x100000000L + 0xcafebabe));
  }
}

答案當然不會是1cafebabe。這是因為 0xcafebabe 會被擴展成 0x100000000L 的 long 型別,也就是從 int 變成 long。那這會讓 0xcafebabe 變成 0xffffffff cafebabeL ,原因是因為 0xcafebabe 的最高位元為1,當十六進制與八進制的最高位元為1時,Java會當成是負數來處理,也就是一直補1到左邊的高位元裡。而 0x100000000L + 0xcafebabe 就會變成
0x00000001 00000000L
+ 0xffffffff cafebabeL

運算結果為 0xcafebabe 。只要將 0xcafebabe 補上L變成 0xcafebabeL 就可以避免這個問題。 

那Python呢?
print(hex(0x100000000L + 0xcafebabe))

Python Expressive Puzzlers 4: It’s Elementary

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

底下Java程式的執行結果是什麼?
1
2
3
4
5
public class Elementary {
    public static void main(String[] args) {
        System.out.println(12345 + 5432l);
    }
}

答案是 17777 。數字1和小寫的L(l)是不一樣的。所以"Java Puzzlers"作者建議如下:
「 Always use a capital el (L) in long literals, never a lowercase el (l).」
在long literals時,請用大寫的L。

那Python呢?
print(12345 + 5432l)

上述片段的Python程式碼是從VS code複製過來的,此IDE幫我們將小寫L標上不同的顏色了!

Python Expressive Puzzlers 3: Long Division

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

長整數的處理在每個程式語言都不同,例如我們會預期底下的Java程式碼會輸出 1000
1
2
3
4
5
6
7
public class LongDivision {
  public static void main(String[] args) {
    final long MICROS_PER_DAY = 24 * 60 * 60 * 1000 * 1000;
    final long MILLIS_PER_DAY = 24 * 60 * 60 * 1000;
    System.out.println(MICROS_PER_DAY / MILLIS_PER_DAY);
  }
}
但是結果卻是5。這是為什麼呢?Java在處理整數數字時是以 int 的型態來處理的,上述的程式碼雖然有指定用 long 的型態,但是  24 * 60 * 60 * 1000 * 1000 與 24 * 60 * 60 * 1000 都是以 int 的型態來進行運算的。int的最大值為 2147483647 。其中 MICROS_PER_DAY 的結果超過 int 最大值,溢位(Overflow)了。只要將程式改成下面就可以輸出 1000 的結果了。
1
2
3
4
5
6
7
public class LongDivision {
  public static void main(String[] args) {
    final long MICROS_PER_DAY = 24L * 60 * 60 * 1000 * 1000;
    final long MILLIS_PER_DAY = 24L * 60 * 60 * 1000;
    System.out.println(MICROS_PER_DAY / MILLIS_PER_DAY);
  }
}
"Java Puzzlers"一書提醒讀者:「When working with large numbers, watch out for overflow—it’s a silent killer.」

那在 Python 裡呢?
1
2
3
MICROS_PER_DAY = MICROS_PER_DA 24L * 60 * 60 * 1000 * 1000
MILLIS_PER_DAY = 24L * 60 * 60 * 1000
print(MICROS_PER_DAY / MILLIS_PER_DAY)

Python Expressive Puzzlers 2: Time for a Change

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

這個謎題是跟浮點數(float)有關的議題。請問底下Java程式會出現什麼結果?
1
2
3
4
5
public class Change {
  public static void main(String args[]) {
    System.out.println(2.00 - 1.10);
  }
}

回答是0.9的話,是有問題的。筆者使用 JDK 10 來執行得到的結果為0.8999999999999999。這是為什麼呢?"Java Puzzlers"一書提到「not all decimals can be represented exactly using binary floating-point」也就是用2進位的表示方式無法精準地表示所有的十進位數字。Java可以用BigDecimal 犧牲效能來獲得精確的數值。
1
2
3
4
5
6
7
import java.math.BigDecimal;
public class Change {
  public static void main(String args[]) {
    System.out.println(new BigDecimal("2.00").
    subtract(new BigDecimal("1.10")));
  }
}
那 Python 的結果呢?
1
print(2.00 - 1.10)

Python Expressive Puzzlers 1: Oddity

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

Python Puzzlers 系列文章皆參考"Java Puzzlers: Traps, Pitfalls, and Corner Cases"一書的內容,轉到 Python 語言中並看看這些陷阱會不會發生。

謎題一:判斷奇數
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
public class Oddity {

public static boolean isOdd(int i) {

return i % 2 == 1;

}



public static void main(String[] args) {

        for(int i = -3; i <= 3; i++)

            System.out.println(i + ":" + Oddity.isOdd(i));

}

}



x

此書提到在 java 中,上述的程式碼有1/4的機率會不對,為什麼呢?原因是負奇數 % 2 會得到 -1。例如 -5 % 2 = -1 而 -1 == 1 不成立。那在Python中呢?請執行底下程式就知道結果了:
1
2
3
4
5
6
def isOdd(n):
  print( n%2 )
  return n % 2 == 1
for i in range(-5, 5):
  print(i)
  print(isOdd(i))

VoxelSDK Calibration Wizard on Windows

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

本篇文章介紹如何在Windows平台執行 TI 的 Calibration Wizard For 3DTOF Cameras 程式。所需要的軟體如下:
請在 Visual Stduio Code 安裝 Python extension for Visual Studio Code
在安裝Python、PCL、Voxel SDK的過程中請選擇將Add xxx to the system PATH for all users。

Python 的 System Path

PCL 的 System Path

QT Extras可以不用安裝

VoxelSDK 的 System Path

選擇 PCL資料夾

選擇QT資料夾


下載 https://github.com/3dtof/calibwizard 壓縮檔

將壓縮檔解壓縮,在 Visual Studio Code 中開始此資料夾。

開啟後會見到下圖,其中 CalibrationWizard.py 為主程式。

此時還需安裝相關的python套件,指令如下:
python -m pip install --user --upgrade pip
python -m pip install 
--user numpy
python -m pip install --user matplotlib
python -m pip install --user PySide
python -m pip install --user pyqtgraph
python -m pip install --user opencv-python
python -m pip install 
--user scipy

安裝好後就可以執行了,執行結果如下影片:


使用TextRank演算擷取關鍵字(Using TextRank to Extract Keywords)

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

本文所提的TextRank演算法是參考 Rada MihalceaPaul Tarau 在 2004所提出的論文"TextRank: Bringing Order into Texts",而此篇論文被引用的次數有逐年增加的趨勢:

TextRank的演算法是在已經產生有權重的圖(Weighted Graph)下進行的,如下圖:

上圖裡,線上的數字(例如 自然 <==5==> 語言 為5)是計算【自然語言】兩個詞再語料中共同出現的次數。假設有下面一段文字:

每天|開心|,|天天|開心|。

那所有詞window size為3之間的共現次數(去除stopwords後再計算)如下表:



然後在使用底下公式不斷地迭代。
公式參數說明:
d:阻尼係數,通常設定為0.85。
Out(Vj):連出去的節點(node)
In(Vj):連進來的節點
WS(Vi):TextRank分數
Wij:節點之間的權重


在論文"TextRank: Bringing Order into Texts"提供了收斂曲線的圖,約20次左右的迭代就會收斂了,如此就可以找出分數比較高的關鍵字了。


參考資料:
[1] TextRank — 文字探勘 — 找出關鍵字 以 八卦版標題為例

桌遊DIY:閃靈快手Geistesblitz

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

前言

閃靈快手是一套適合訓練大腦專注力與反應的桌遊,以第一代為例,遊戲的道具有卡片60張與五種物品,分別為:白鬼、綠瓶、藍書、紅椅、灰鼠。那要怎麼製作這一套遊戲呢?底下說明迷你型的閃靈快手製作方式。

準備材料

卡片60張 ==> 筆者是用【白色卡片紙】或【白色名片紙】
紙箱 ==> 用來製作物品用
紅筆、藍筆、黑筆
剪刀一把


物品製作

本例子使用的物品是:紅圓黑三藍正


準備好後,用剪刀將紙箱剪出 三角形正方形圓形 各一份。
黑筆三角形上色
藍筆正方形上色
紅筆圓形上色
這樣就製作好遊戲的物品了。


卡片製作

選擇下面一個圖案,在一張白色卡片上畫好。依序將60張卡片給畫好,所有卡片盡量圖案與顏色都不一樣。

這樣子就製作好迷你型的閃靈快手囉。

學生DIY成果



有學生畫出不一樣的圖案,我超喜歡的。

課後思考:

1. 有什麼規則來設計此款遊戲?
2. 其他特殊玩法,例如卡片的圖案是國旗的時候,玩家要怎麼做?
3. 在畫卡片的圖案時,有什麼方式可以讓遊戲擴充到五項物品?

心得:
原本想打算直接用五項物品直接做起,最後決定從三項物品做起,因為卡片設計好的話,可以延伸到五項物品再到九項物品等。