史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   生活話題、日常閒聊、喇勒唬爛灌水區 (http://forum.slime.com.tw/f23.html)
-   -   一個用程式設計的小魔術 (http://forum.slime.com.tw/thread288331.html)

魔術王子 2018-05-22 11:34 PM

一個用程式設計的小魔術
 
這並不是新的電腦魔術,而是之前的魔術再重新設計的
一直以來就想利用電腦來設計魔術,不過一直不知如何著手
後來因為覺得"想的牌不見了",這個魔術很容易設計,所以就設計了
沒想到竟然慢慢的克服了許多技術上的瓶頸,總算設計出7個比較容易設計的小魔術
現在這個成是應該算是比較完整的
寫程式算是一種興趣,所以小王子絕大部分都會附上原始碼,但魔術的機密是不可以洩漏的,所以無法提供原始檔,但關於洗牌展牌的程式碼,就比較沒關係,這次小王子有另外附在裡面
等到這幾個魔術都修改完畢,有了新靈感,再繼續分享新的魔術程式給大家
https://drive.google.com/file/d/19kr...ew?usp=sharing

魔術王子 2018-05-25 11:03 PM

感覺大家對1945這個魔術很感興趣,所以重新設計,也加入了語音
https://drive.google.com/file/d/12xy...ew?usp=sharing

魔術王子 2018-05-26 10:48 PM

第三個魔術,改的不多,重點是將語音也加入執行檔內
https://drive.google.com/file/d/1oPQ...ew?usp=sharing

mini 2018-05-27 03:45 PM

引用:

作者: 魔術王子 (文章 2373866)
第三個魔術,改的不多,重點是將語音也加入執行檔內
https://drive.google.com/file/d/1oPQ...ew?usp=sharing

好像有點怪怪的bugs~
整個表演是可以正確演譯一次...是沒錯的

魔術王子 2018-05-27 04:44 PM

引用:

作者: mini (文章 2373872)
好像有點怪怪的bugs~
整個表演是可以正確演譯一次...是沒錯的

其實有很多(包含前面兩個)!!!:on_52::on_52::on_52:
因為找到可以將語音加入執行檔,讓我急著更新,反而影響到程式的運作:on_44:
其實前面兩個,我也不是很滿意啦,所以我打算全部再重新來過:on_81:
所以下次更新會拖延一點時間,到時再拜託大家幫忙"找碴":on_13::on_45:

mini 2018-05-27 05:15 PM

其實不用急
畢竟是個人"無料"興趣

魔術王子 2018-05-27 10:28 PM

引用:

作者: mini (文章 2373874)
其實不用急
畢竟是個人"無料"興趣

有聽過"旗正飄飄"吧
就是程式設計時,邏輯打結的話,就加個變數當旗標
現在我設計程式能不用變數都盡量不用變數,尤其是使用Public類型的變數
而在視覺化設計的工具元件有一個很有趣的現象,就是每個元件都有Tag的屬性
但卻少人用
所以我設計程式通用的數值很少將變數設成Public,而是使用Tag來替代
一開始設計這些程式時,我放了很多的Panel元件來當給使用者的訊息傳遞,所以Panel的Tag屬性就被我拿來當通用變數
因為在測試中,所以想加多少就加多少,後來成功了,要正式設計,覺得Panel元件太多了
就慢慢縮減,問題來了,這程式元件本來就不多,Panel再縮減,就造成這些通用變數沒地方存放
最後就出現很多無法預期的錯誤,再加上找出好方法,求好心切,然後就越設計越爛

https://drive.google.com/file/d/1rB3...ew?usp=sharing
這是重新設計的第一個魔術,就是這個魔術讓我有想要設計成程式的念頭,所以成為第一個設計的程式,不過並不算完成,因為語音只加一點點,但整體上是可以執行的,麻煩大家幫我測試看看有沒有什麼問題,謝謝

mini 2018-05-28 02:15 PM

程式正常

小聲地說: 手癢用截圖軟體拍了一次才知原理
所以這裡做個保證 > 【沒有程式作弊】
P.S.對了那個牌移動能否讓它迅速點 (洗牌時間就做得很流暢)
PHP 語法:

    Private Sub mouse_move(ByVal eX As IntegerByVal eY As Integer)
        
On Error Resume Next

        Dim X 
As Single
        Dim Y 
As Single
        Dim dx 
As Single = (eX Cursor.Position.X) / i位移量
        Dim dy 
As Single = (eY Cursor.Position.Y) / i位移量
        
For As Integer 1 To i位移量
            X 
Cursor.Position.dx
            Y 
Cursor.Position.dy
            Cursor
.Position = New Point(XY)
            
Threading.Thread.Sleep(i延遲)
        
Next
    End Sub 

此程式碼是截錄至 "模擬mouse線性移動" 的功能(可做到 規定在多少時間內完成直線移動),供你摻考
===========
.Tag的見解
在視覺化程式語言裡 可以說是個"多型"的變數 (事實上算是個包裝好的class容器 而非變數)
求快速設計 或 短暫應用 時很好用
不過程式碼稍微巨量時就不大會去用到(怕未來會發生使用時被"他人"呼叫更改的不可預期事件 ;或 未來發生多線程牴觸之問題)
一般都是宣告個 "結構",再宣告變數使用這個"結構" (更正統點就是包裝成 class)
當變數(不夠用時)要增加就直接增加 "結構"裡的"成員"
程式就能大而不亂

多型變數在VB裡很常見
最近的JAVA 10才正式使用起 多型變數(是靠編譯器去做未來分析來達成,骨子裡其實並非多型變數)
但C/C++應該是沒有才對?
魔王不提還不知道
原來C/C++也可如此間接使用 "多型變數"的概念 ??

魔術王子 2018-05-28 11:03 PM

引用:

作者: mini (文章 2373887)
程式正常

小聲地說: 手癢用截圖軟體拍了一次才知原理
所以這裡做個保證 > 【沒有程式作弊】
P.S.對了那個牌移動能否讓它迅速點 (洗牌時間就做得很流暢)
...

原本第一張卡試想利用亂數取的,這樣比較不容易出現破綻
但考慮到人的記憶是不可能做到的,所以才用這種方式,但也印證同一套魔術不能表演三次的鐵定律,就算是電腦程式也是一樣的
畢竟小王子說過程式所有的流程都是依照表演的程序設計的

移動牌的程式小王子會盡力試試修正

魔術王子 2018-05-30 08:41 PM

設計好了
https://drive.google.com/file/d/1rB3...ew?usp=sharing

另外這是部分原始檔
https://drive.google.com/file/d/1oh4...ew?usp=sharing

魔術王子 2018-06-03 05:24 PM

"1945"修改好了,一套蠻有趣的小魔術,幸好還能夠用電腦程式實現出來,讓大家可以藉由程式同樣體驗到魔術的樂趣
小弟已經盡最大努力讓程式感覺起來像是魔術師在表演魔術的情景,不過應該還有很大的改進空間,再麻煩大家多給點意見,謝謝大家捧場

https://drive.google.com/file/d/1VLD...ew?usp=sharing

魔術王子 2018-06-14 10:06 PM

第三個魔術"你以為這樣就結束了嗎"修改好了

https://drive.google.com/file/d/1zVk...ew?usp=sharing

mini 2018-06-15 02:25 PM

魔術好像無法結束...
還有第一次切牌時
無法只切一次嗎? (得不到"完成切牌後"接下來該如何的提示)

魔術王子 2018-06-15 08:42 PM

引用:

作者: mini (文章 2374040)
魔術好像無法結束...
還有第一次切牌時
無法只切一次嗎? (得不到"完成切牌後"接下來該如何的提示)

因為語音的關係,語音未結束前是無法結束程式
切牌部份確實有些問題,最大問題是在上次切牌尚未結束,又再按一次左鍵就會出錯
本來以為解決了,但測試時有遇過,只是機率低加上這個程式欠太久了
這兩天會盡量處理,謝謝

魔術王子 2018-06-17 09:20 PM

引用:

作者: 魔術王子 (文章 2374034)
第三個魔術"你以為這樣就結束了嗎"修改好了

https://drive.google.com/file/d/1zVk...ew?usp=sharing

多工的設計雖然好用,但對於簡單需要的程式來說,反而成為無法預知的陷阱
雖然有修改了,也測試過正常,但應該還會有不少無法預料的狀況吧
另外就是程式在表演完5秒後就會關閉


所有時間均為台北時間。現在的時間是 04:34 PM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1