摘要:開張大吉...
[VB.net] 再談使圖片捲動的「拉霸遊戲機」(六) - 實做一個水果盤遊戲機
水果盤的主要元件「圖片捲動控制項」及把它們做成九個一組的「拉霸控制項」都完成了,就可以繼續安排使用者介面的佈局和計算得分的邏輯,配上音效後基本上已經可以運作了。
先說一下計算獎分的條件:
1.因為允許了 User 自行選擇結果圖片的開出範圍,所以獎分的計算要有充分的靈活彈性。否則當 User 只選擇一種圖片時盤盤都是清一色莊家會輸光光。
2.使用圖片數越少則連成線的機率越大,所以有必要先建立一張機率表做為參考。
[VB.net] 再談使圖片捲動的「拉霸遊戲機」(五) - 把水果盤控制項做成 DLL 組件
現在已經完成了兩件工程,分別是:
1.單獨一個「圖片捲動」的 Usercontrol。
2.已經可以把九格「圖片捲動」控制項合成一組,並有控制轉出的連線數和分析結果的機制了。
接下來就可以把它們輸出為 DLL 組件日後就可以直接拿來應用了,這個動作具體作為是:
1.為這兩個控制項各準備一個 16*16 的工具圖示 .ico 檔。
[VB.net] 再談使圖片捲動的「拉霸遊戲機」(四) - 做成九格水果盤
直覺上做成九格的工程不大,可是實際上並不容易,因為一個實用的「水果盤」除了要能正常的呈現出所要的圖片外,還要能精確的控制轉出的結果,以及對隨機轉出的結果有自動判讀的能力。
例如「控制轉出的結果」:
1.我要轉出任意「一條連線」的結果,但不能每次都是連在同一個位置,也不能總是同一個號碼的三連線。
2.我要轉出任意「三條連線」的結果,但任意三條連線成立的同時,因為連線位置間的相互關係有可能讓結果多於三條連線,這要避免。
3.我要精準的控制把 「135792468」號的圖片分別出現在井字圖的第1到9的空格裡,要自然的「轉出來」而不是突然蹦出來。
4.其他…
[VB.net] 再談使圖片捲動的「拉霸遊戲機」(三) - 做成獨立的控制項
要做成九個一組的水果盤控制項,首先要把捲動功能做成單一的控制項(Control),然後再用九個拼成新的控制項。
接下來就先把前文的「拉霸遊戲機2」發展成獨立的控制項:
先考量對外至少需要有哪些屬性、方法、事件:
屬性:
1.[停止] 唯寫屬性,設為 True 時可將停止轉動。
2.[忙碌中] 唯讀屬性,控制項轉動中為 True,停止時為 False。
3.[播放速度]讀寫屬性,提供可設定每二次畫格移動的間隔毫秒數。
4.[畫格總數]唯讀屬性,提共外部取得所有圖片的總高度。
5.[結果圖號]唯讀屬性,傳回轉動停止時所在的圖片編號。
6.[捲動方向]讀寫屬性,供讀取或設定轉動的方向。
方法:
1.[啟動]開起始一次畫好的轉動。
2.[停止]停止轉動。
3.[圖片變色]當圖片成為三連線之一時,或其他特定條件下(例如有設 luckey number)用來強化圖片呈現效果。
[VB.net] 再談使圖片捲動的「拉霸遊戲機」(二) - 控制捲動結果和加上運動函數
經過初步測試圖片捲動看似可以了,但是要實際拿來用的話還要補上很多東西,先處理這些吧:
1.要能控制轉動的結果,也就是要讓它正確的轉出事先定義的結果圖片。
2.要能從前一次轉動最後停駐的那張圖片開始運轉,不能每回都從第一張開始。
3.每次的轉動時間長度要不同,這樣將來要做水果盤遊戲時才不會九格幾乎同時停止。
4.要加上運動函數讓轉動顯得自然(起動時由慢至快→然後維持在最高速→停止前由快漸慢到停止)。
[VB.net] 再談圖片輪播「拉霸遊戲機」如何讓影像在圖片中捲動(一) - 先讓它會動
前面貼文談過的(圖片輪播器)是用整張圖片置換的方式,畫格安排的要點是要使最後一張畫格和第一張畫格的差異最小,如此週而復始可達到視覺上的流暢,進而有「無縫接合」的質感。
這回再來試做一個類似「拉霸遊戲機」那種讓多張圖片首尾銜接,在一個圖框裡循環轉動的控制項。
[VB.net] 程式中使用外掛字形檔的方法(二)經由資源檔載入外掛的字形
前文實作了外掛自訂字形的基本方法,藉由編譯時把要加掛的字形檔屬性[複製到輸出目錄]設為 True,使在建立封裝包時把字形檔加入組建資料夾。之後 User 在安裝程式後字形檔就會帶進去供使用了。
但是有時我們不想字形檔直接外露在用戶的資料夾,或是一些小型的 demo 程式不需經過封裝的過程,只想建立一個單獨的 exe 執行檔的情況下就可以用 PrivateFontCollection 類別的 AddMemoryFont() 方法了。
接下來再實作一個直接從資源包帶入字形的 demo 程式:
[VB.net] 程式中使用外掛字形檔的方法(一)經由實體字形檔載入
有些場合我們會用到一些特殊的字形到程式裡,像是條碼形的 39 碼或是在遊戲程式中放上「數位效果」的字形…
當然我們可以先安裝字形檔再從程式中引用它們,但要 User 先安裝字形才能執行程式不是理想的做法,而且 User 未必喜歡在它的系統上加裝一些其他的字形,所以我們經常會用暫時安裝的手法把字形檔帶過去,當程式執行中使用它,再於程式結束時移除它們。
[Vb.net] 如何在表單顯示動態的圖示 Icon (三)製作圖片輪播控制項
雖然 VB.net 可以直接使用 GIF or SWF 呈現動畫效果,但為了顯示的流暢(同步)和能建立動態的表單圖示,和方便一些細節的控制,這裡還是自己做一個控制來用。
1.首先要建立一組或多組連續的影格來用。
2.為了應用上的方便我先把一系列的影格圖片合併成一張圖,要用時再根據圖寬除以圖高來得到共有多少個影格。
3.下面是幾個例子
[Vb.net] 如何在表單顯示動態的圖示 Icon (二)
[Vb.net] 如何在表單顯示動態的圖示 Icon (二)
[Vb.net] 如何在表單顯示動態的圖示Icon(一)
有時我們會想用動態圖做為表單的 Icon,也可在表單最小化時動態呈現在最下方的工作列。
最初想法簡單的以為用一個 Gif 動態圖取代 Icon 的 image 就成了,可是在 icon 中找不到和 Image 或 bitmap 相關的直接屬性可以設定。
後來找到了(MSDN 的說明)後用以下方法達成了目的...
[VB6][VB.net] 發送「魔術封包」執行「網路喚醒」的實作。
最近工作上要用到 WOL 功能,把過去用在 VB6 上面的方法改用 VB2010 重新整理了一下:
發送「魔術封包」對電腦執行「網路喚醒」(Wake On Lan)的作法。(各通訊 Port 用途參考)
附帶說明一下:
主機要能被喚醒,網卡需支援 WOL 且主機 BIOS 要開啟此功能,同時網卡進階設定要選接收魔法封包(Magic Packet)。
[VB.net] 如何實現「非同步下載」檔案?(四)讓自製的下載方法也能做到非同步(ASYNC)。
1.若只要防止介面被鎖住,Application.DoEvents() 方法可以動態調整各工作的先後順序。
2.所以若要下載中能顯示 ProgressBar、UI 不會被鎖住、下載也不會停滯的話,就要使用以下「非同步(ASYNC)」技術了。
3.另開執行緒(跨執行緒處理 UI 更新需用 Invoke 方法配合 Delegate 委派,完成時的 Callback 回呼程序也要自理)。
4.使用工具箱的 BackgroundWorker 控制項(不需另外處理 UI 更新,也不必自理事件回呼)。
[VB.net] 如何實現「非同步下載」檔案?(三)使用 Socket 直接和 FTP Server 建立連線下載檔案。
前文提到使用 System.Net.FtpWebRequest 類別從 FTP 取得檔案長度有些不理想的地方,主要有:
1.在某些非微軟 IIS 的 FTP Server 下載時,即便是從 Response 裡面拿到了 ContentLength,數據却還是 –1。
2.雖然可把 Request 的 Method 設為 DownloadFile,然後從 StatusDescription 找到夾在 '(' 和 'Bytes)' 之間的數字把它挖出來但有些不值得了。
3.所以又花了好幾天時間改寫了查詢檔案長度的函式,改用更底層的元件 Socket 和 Server 溝通,直接用 SIZE
[VB.net] 如何實現「非同步下載」檔案?(二)從 FTP 下載時如何先得到 File Size。
前文提到使用 System.Net.WebClient 類別的 DownloadFileAsync() 方法從 FTP Server 下載檔案時,由於事先沒有該檔案的長度資料,以致在需要用到 ProgressBar 時呈現進度會有不便之處。
接下來就要分享一下從 FTP 取得檔案長度的手法。
1.先從 VS.net 的現有類別下手,在 System.Net 命名空間有個 FtpWebRequest 類別,顧名思義應該是向 FTP 發出要求的可用物件。
2.另外在 FtpWebRequest 裡面有一個方法叫做 GetResponse(),看起來正是我要的東西。
3.查看了這兩個物件的用法,試寫了一段程式碼:
[VB.net]如何實現「非同步下載」檔案?(一)使用 System.Net.WebClient 類別的 DownloadFileAsync() 方法。
1.命名空間 System.IO 裡面有個 Class 叫做 WebClient,它提供了一些下載遠端檔案的方法。
2.其中 DownloadFileAsync 和 DownloadDataAsync 二個方法是非同步的,它會在作業期間以事件 DownloadProgressChanged() 傳回下載進度,也會在完成時用事件 DownloadDataCompleted 或 DownloadFileCompleted() 通知呼叫端取回下載結果。
3.基本用法很簡單,程式碼只要幾行就可以了:
[VB.net]身分證字號驗證程序(二)- 改用 Class 重寫及加入產生新字號的功能
前文貼了身分證字號基本的驗證部分,這幾天又加上了「字串產生器」功能並且重做了介面。非專業製作的效果及功能未盡完美是必然的,不過還是要分享一下過程和經驗。
[VB.net]身分證字號驗證程序(一)
[VB.net]身分證字號驗證程序
自製 ProgressBar 控制項(三)為控制項建立關於視窗 (About Box)
自製 ProgressBar 控制項(三)
- 1
- 2