2019年2月28日 星期四

用VB程式語言設計"大家來找碴"小遊戲(2)

在前一文"用VB程式語言設計"大家來找碴"小遊戲(1)"用到語法:MsgBox("訊息內容"),來達成提示訊息的遊戲互動,如下:

第一,依據遊戲規則建立程式雛形(以下程式範例假設有5個不同處):
比較左右圖片,在右圖上每次以滑鼠點選不同處,就有提示找到訊息,如果點錯,也會提示答錯訊息。

但是遊戲如果沒有音效,就會少了趣味,因此本文說明修改程式,以音效取代提示訊息...

<本文開始>------------------------------------------------

第二,修改程式碼,用音效取代提示訊息。

比較左右圖片,在右圖上每次以滑鼠點選不同處,就會發出"tada"音效(微軟舊作業系統音效),如果點錯,也會發出"uhoh"音效(ICQ音效)


[程式撰寫]此處只用一種語法:My.Computer.Audio.Play("..\..\Resources\音效檔名.副檔名")取代MsgBox("訊息內容"),令電腦播放音效。

  1. 到網路下載"tada.wav"及"uhoh.wav"音效檔。
  2. 將音效檔複製到Resources資料夾內。
  3. 開啟程式碼編輯視窗,先在Label1程式碼區塊內的敘述"MsgBox("訊息內容")"末端,按Enter鍵,跳下一空白行輸入:My.Computer.Audio.Play("..\..\Resources\tada.wav")
  4. 再將Label1程式碼區塊內的敘述"MsgBox("訊息內容")"前端輸入'符號(半形單引號),讓該行敘述變成註解而無法執行。用註解取代刪除敘述,一方面可以呈現程式碼修改歷程,一方面也可以避免日後反悔而重寫。你會在程式碼編輯視窗看見以下內容,紅色標示表示你輸入的程式碼:
    Public Class Form1

        Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.ClicK
            'MsgBox("你找到了!")
            My.Computer.Audio.Play("..\..\Resources\tada.wav")
        End Sub
    End Class
  5. 重複3.及4.的作法,完成Label2~6的程式碼編輯。
  6. Label6是用來當作相同處,所以播放音效檔名改成uhoh.wav

............程式已經可以播放音效了,你可以按 ▶開始 玩玩看........................


2019年2月25日 星期一

成語猜謎


始終如一,從一而終,一成不變
顛三倒四
接二連三
屈指可數?
一心一意
無中生有
三五成群
四分五裂
三長兩短


用VB程式語言設計"大家來找碴"小遊戲(1)

本文藉由Visual Basic(VB)程式語言來設計"大家來找碴"的小遊戲,並分成幾個篇幅來模擬以初學者如何來逐步改良遊戲,區分篇幅用意其實表示任何程式都是經由一再修改,才會愈改愈好,沒有程式設計是一步登天的。
首先,你必須對Visual Basic這套軟體操作介面要有基本概念,不過會想讀下去應該對VB已經有基本概念...


第一,依據遊戲規則建立程式雛形(以下程式範例假設有5個不同處):

比較左右圖片,在右圖上每次以滑鼠點選不同處,就有提示找到訊息,如果點錯,也會提示答錯訊息


[表單設計]

  1. 設定表單背景圖:從網路上找人家已經設計好的左右對照圖片,當然也可以自己用影像處理軟體來做圖,但比較麻煩,找現成的就好,然後在Form1屬性BackgroundImage匯入作為專案資源檔。
  2. 置入6個標示:用Label1~5來標示5個不同處,再用Label6當作相同處。但是Label如同圖層概念,Label6會蓋住Label1~5,所以要將Label6移到最下層(按滑鼠右鍵設定),如此滑鼠才可以點到Label1~5。
  3. 調整標示大小:配合不同處大小調整Label1~5的尺寸(尺寸範圍表示滑鼠點選的作用區),不要重疊,然後調整Label6尺寸蓋住整個右圖,如下圖(本圖已將Label6屬性BackColor改為透明色以凸顯5個不同處)。
  4. 去除標示背景顏色:將Label1~6屬性BackColor改為透明色(Transparent,在下拉選單中間Web標籤第1項可以找到),如下圖。
  5. 清除Label1~6屬性Text的內容




[程式撰寫]此處只用一種語法:MsgBox("訊息內容"),令電腦提示訊息。

  1. 在Label1上用滑鼠點兩下,開啟程式碼編輯視窗,在游標處輸入:MsgBox("你找到了!"),你會在程式碼編輯視窗看見以下內容,紅色反白表示撰寫的程式碼:
    Public Class Form1

        Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
            MsgBox("你找到了!")
        End Sub
    End Class

    註:上述程式碼表示~當你用滑鼠點一下Label1,程式提示"你找到了!"的訊息。
  2. 重複1.的作法,完成Label2~6的程式碼。
  3. Label6是用來當作相同處,所以提示訊息改成:MsgBox("你找錯了!")


............程式已經可以執行了,你可以按 ▶開始 玩玩看........................


2019年2月24日 星期日

1支專業手電筒比5支一般手電筒好用(1)

一般人對於手電筒的認識在於發光及照明,不會有太多的需求,也不願花大錢去買;但隨著使用環境多元化,後來就會發現家裡的廉價手電筒愈來愈多,結果就是裡面電池放太久腐蝕內部無法使用。如果那些浪費掉的錢拿來買專業的手電筒,量少質精,一方面較易保養維護,一方面手電筒本身功能也較能符合較多用途,肯定是可以獲得較大的使用滿意度。

選購專業的手電筒,要注意甚麼?筆者認為一定要同時考慮以下三者:1.最大輸出(以流明度表示),2.最大射程(以公尺表示),3.最大光強(以燭光表示)千萬不要以為買流明度愈高(一般說法是最亮)愈好,因為專業手電筒會針對不同的使用環境有不同的設計,你要選擇的是適合你慣用環境的手電筒

不過,找專業的手電筒先花點時間先了解以下的基本名詞:光通量(lm:流明)、光強(cd:燭光)又名光度、(cd/m^2:燭光每平方米)又名輝度。

物理量
計量單位
單位符號
注釋
光通量
流明
lm(lm= cd*sr)
單位時間內由光源所發出或由
被照物所吸收的總光能。
發光強度(光強或光度)
燭光
cd(cd= lm/sr)
光源在給定方向上,每單位
立體角(sr)內所發出的的光通量。
亮度(輝度)
燭光每平方米
cd/m2
單位面積(平方米)光源在給定
方向上,在每單位立體角內所
發出的總光通量。

相關名詞補充:
  • 光通量:表示光源整體亮度。
  • 光強:1燭光的點狀光源所發出的總光通量為4π流明,一支普通蠟燭的發光強度約為1cd。光強亦可視為中心光斑的發光強度,光強愈高射程愈遠 。
  • 亮度:亮度和光度這兩個量在一般的日常用語中往往被混淆使用,亮度表示人眼對發光體發光或被照射物體表面反光之強度而實際感受的物理量。換言之,當任兩個物體表面在照相時被拍攝出的最終結果是一樣亮、或被眼睛看起來兩個表面一樣亮,它們就是亮度相同。

好,現在來看看以下某品牌兩支專業手電筒的規格:
  • 最大输出 1000 流明
  • 最大射程 185 m
  • 最大光强 8600 cd
  • 最大输出 1000 流明
  • 最大射程 803 m
  • 最大光强 161300 cd

同樣是1000流明,兩者最大射程與最大光強為何差異懸殊?為何規格沒有最大光度呢?其實這些涉及到燈珠與燈杯的設計,即使相同的燈珠,也會因為燈杯設計不同而有不同的射程與光強。選購專業的手電筒,除了要了解規格外,也要考慮燈珠燈杯設計,才能符合你的需求。