以前的視窗老師跟我要兩年前在課堂上的這個臨時作業...
不過當時我覺得我做的太爛了所以沒有存檔
所以現在就加上當時沒做的功能重寫一次,當作練習
遊戲就是簡單的記憶翻牌遊戲(俗稱對對碰)
因為這只是練習用,所以跟尋常的對對碰無異
只有增加當時沒寫的一點點小功能
像是按鈕數可以動態決定(不過最大11*7,因為螢幕不夠用了=__=)
還有增加音效或小限制
按鈕可以設奇數個,多出來的那一個是擾亂用的XD
圖片使用神奇寶貝珍鑽版的圖片
理由一是變化多,理由二是好找,理由三是格式相同且不會太大
每次開始遊戲的圖片是從151隻裡面隨機挑出來的
為什麼不用493隻?因為版面最大也只能挑出38個
全部圖片都包進去實在太佔空間了
順便提醒一下,如果按鈕數超過50個,並在100秒內過關
會有驚喜喔( ̄ー ̄)
遊戲下載(184 kb,需要.NET Framework 2.0)
會比平常大的原因是因為大部分是圖啦
原始碼(請不要進行二次散布,遊戲中需要的圖片、音效存在bin\debug中)
-----
由於程式實在是太過簡單,所以我嘗試簡短了變數的宣告
比方說一般的設計應該會宣告按鈕陣列
還有記憶按鈕實際編號的數字陣列
但其實數字陣列可以不用另外宣告
因為VB的每個物件都有Tag屬性
可以讓你放置數字或文字等任何東西,就像備註一樣
這麼好用的東西怎麼可以不用呢?
還有,有些人會把選項的設定再宣告一個全域變數使用
(例如選項的Form設定X,Y大小,在遊戲畫面的Form又宣告一個X,Y紀錄)
這其實也是多此一舉
只要確定選項在遊戲進行時不會被改掉
直接去抓別的Form的物件的變數不就好了?
另外就是翻牌失敗牌面會暫留後翻回去
這段我以前竟然看到有人用Timer來寫
不用這麼麻煩啦,直接用Thread.Sleep暫停畫面就好了
(缺點是快速連按時會有lag的感覺)
還有一些很基本的方法
像是用AndAlso跟OrElse來取代And跟Or
這種我就不說了(我還是說了嘛)
以寫視窗程式來說,VB絕對比知名的C,C++,Java還好用
只要靠著拉物件跟口語化的程式語法
絕對可以讓寫程式變成一種樂趣
大家也來寫視窗程設吧~
----
本日分享歌曲 AiM - 誰より
- 10月 18 週六 200822:34
簡單的翻牌遊戲
文章標籤
全站熱搜

小綠好強!@@ 我也想要會做這種東西呢!以後有時間我再來自己翻書研究好了... 到時候在跟你請教^_^
其實這種東西一點都不難做 其他語言我不敢說 但是VB已經很接近script language了 就算是非本科系的學生只要看一下書就會了 有不懂的地方歡迎問我喔~
您好!!無意間點到這個blog 我對這個遊戲還瞞有興趣 不知道可以寄給我整個程式碼??
不好意思喔,因為我怕有人拿我的程式去做壞事 所以程式碼我一般都是不會給別人的 以前有篇加解密程式我也是沒有給人 但如果你有不懂的地方,可在此篇發問 我可以在部落格給你技術支援 若我會的話一定幫你解答 --- 話說我們學校今年視窗課的第二次作業就是這個遊戲 不知道作業截止了沒...
對遊戲有興趣幹嘛要程式碼= ="...
你真是問到我的心坎裡了^^"
想請問一下 像秒數還有次數的程式 那邊要怎麼設定阿 弄好久還是不成功 (期末報告想做這個可是始終弄不出來..)
先設定一個計時器,Interval=1000(一秒更新一次) 然後設定一個變數time 遊戲開始時設定time=60(假設一場60秒) 然後計時器程式打上time-=1 如果time=0時就把相關按鈕的Enable設成false 並顯示時間結束訊息 我是這樣的作法啦
我目前也想學,不知你是用java 寫的嗎,可否mail給我練習呢...謝謝
都說需要.NET Framework 2.0了 怎麼會是java呢
我的期末專題在考慮做這個遊戲 但是有好多問題.. 方便請教你嗎
不方便耶
我想問圖片要怎麼插入呢?3Q
第一種是全部放進ImageList,也就是包在程式中 第二種是放在執行檔的附近 程式直接從硬碟讀取 缺點是圖片可以被使用者複製走 而且如果圖片檔名被修改或刪掉會有錯誤 我當時是用第二種方式
請問 一開始要怎打亂順序阿? 我剛學而已==" 我一直做到當機 EX: for i = 0 to 19 picture1(i)= int(rnd*10)+1 next i 但是他會重複到耶~~ next i
因為你的數據會重複,我是建議用洗牌法比較好 也就是隨機取陣列兩數做交換,重複N次即可 以下是憑我對VB.NET語法的印象寫的範例 Ex. Dim array() as Integer = {1, 1, 2, 2, 3, 3, 4, 4} Dim rand as new Random() For i as Integer = 0 to 1000 Dim a as Integer = rand.next(0, array.Length) Dim b as Integer = rand.next(0, array.Length) Dim temp as Integer temp = array(a) array(a) = array(b) array(b) = temp Next
用出了imagelist 可是我不知道怎麼把它放進各個要翻的排組裡...... 可以提供一些意見嘛?! 最近想做做看這個遊戲~
imageList是不需要"放"進牌組的 我個人的作法是將牌都記錄一個編號 當要顯示的時候,就從imageList取出該編號的圖片即可 將圖片取出的語法是imgList.Images(0) imgList是物件名稱,0為你的List編號
*****
*****
請問可以告訴我這個程式大略的打法嗎?例如需要那些物件或語法?小弟最近研究VB 還是新手 請大大不吝指教
請問可以告訴我這個程式大略的打法嗎?例如需要那些物件或語法?小弟最近研究VB 還是新手 請大大不吝指教
我寫的方法不是正規方法,不確定跟其他人寫的是否相同 首先我這個使用的語言是VB.NET而非傳統的VB 這程式首先你要會用物件陣列,最好能動態產生按鈕的數量 然後你要會洗牌法,也就是對變數隨機交換,做到洗牌的效果 之後就只是簡單的程式邏輯判斷了 點牌之後就將該牌的圖形顯示在按鈕上 當選兩張牌後用if判斷是否是相等的牌,true的話就把分數增加 false的話就把牌翻回去....etc 如果對程式有不懂的地方,歡迎再留言請教
請問下 我動態新增了按鈕9個 但要如何得知使用者點了哪個按鈕? 是不是會用到sender 這個?
是的 先幫每個按鈕設定Name或其他屬性 當按下去後讀取sender.Name就可以知道該按鈕的位置了
請問我用vb6.0要如何放照片?
請問你所謂的放照片的意思是? 把圖片放到按鈕上嗎? 我沒用過VB 6.0,對其語法其實不是很清楚...
不好意思 我剛剛自己嘗試寫了一下 我想用 Image1->Picture->LoadFromFile("0"+IntToStr(Tmp)+".bmp"); 讓每個IMAGE都亂數放 但似乎不行欸:(
欸...好久沒寫VB了 印象中應該是先建立好PictureBox物件後,在觸發條件寫上 PictureBox1.image = Image.FromFile(Application.StartupPath & "\" & rand & ".bmp") rand為亂數取得的變數 當然執行目錄下必須也要包含該檔名的檔案才行 補充一點,要做字串相接的話,使用&會比+更好 用+必須對所有數字變數作轉型,&則不用
*****
請問一下,如果記憶翻牌結束後,怎麼加入文字? (VB6.0)
不太懂你加文字的意思 如果是跳出訊息視窗可以用msgbox 如果是要顯示文字在畫面上的話 可以先建立Label並設定隱藏 在遊戲結束後執行Label1.Visible = True將其顯示
想請問一下,那個圖片怎麼判斷圖片是不是一樣? 如果不一樣想要轉回來 程式碼該怎麼用
1. 我是另外用一個二維陣列去存所有位置的代表數值,這樣應該比較簡單 也可以將代表數值寫在物件的tag屬性 或是寫個繼承button的物件設定新屬性 2. 我是用Thread.Sleep這個方法,暫停執行緒 http://msdn.microsoft.com/zh-tw/library/system.threading.thread.sleep%28v=vs.110%29.aspx 如果判斷兩張圖片不同,Thread.Sleep(毫秒)後設定圖片消失
請問如果我要把picturebox取亂圖後5秒鐘 變回原本面 我應該怎麼下?(我有設timer2500,但是他5秒鐘後就會重新洗牌) 再請問你:如果我要讓他亂數只取兩張一樣的 我應該怎麼改? 我有設亂數 也用了for next 但怎麼用 還是會有地3張 甚至第4張一樣的 拜託 求解
第一個問題最簡單的作法是設定執行緒暫停 如同我前一個留言寫的,作法如下 (TODO部分請換成你要處理的語法) // TODO 顯示圖片 Thread.Sleep(2500); Application.DoEvents(); // TODO 隱藏圖片 第二個問題 請看第八個留言的回覆,謝謝
大大的文章幫了小弟很大的忙!! 但也是用盡了全力才拚奏出來 而且寫出來的程式容量也不小 希望有天能像大大一樣厲害 程式的魅力真是無法抵擋阿
謝謝你的留言
關於那個第8個回復 那這之後要怎麼把它帶入進圖片QAQ??
請修改按鈕的Image屬性
請問大大真的不能分享程式碼嗎QQ
已經附在原文上了 可以的話,請不要進行二次散布,謝謝 若要修改的話還請註明出處...
大大你可以教我做c# windowsform 版的翻牌遊戲嗎 拜託
source code不是都公開了...