2015年7月2日 星期四

命運卡牌大亂鬥

命運卡牌大亂鬥

動機:
    我最開始並不是要做這個遊戲,一開始我跟同學再討論時想做的遊戲是趕羊的遊戲-把羊趕到圍欄裡就得分,如果把狼趕進去就扣分,但是覺得這樣感覺好爛......。
    所以就又開始構想別的idea,然後有天跟同學走路去裝水來喝時,我突然想到應該可以做卡牌遊戲,而且遊戲性質比較高,然後我真正想說的是其實我做這遊戲只是突然想到的沒有什麼動機.....
    開玩笑的啦!,我會做這遊戲主要是因為在BLOG尋求靈感時,看到了http://vgc-yklee.blogspot.tw/search/label/game這款卡牌遊戲,我覺得好酷喔!!!我一定要做卡牌遊戲!
就這樣我開始做這遊戲了。
遊戲玩法:
    Step 1:    打開視訊鏡頭然後取背景再來按Game Stat 就可以開始遊戲了

    Step 2:    一開始視訊畫面會向下圖全是白的,只有中間有讀取方框,左上跟右上會各別顯示玩家的生命力,中間上面會顯示現在是哪個玩家的回合還有剩餘多少時間

    Step 3:    由玩家1先手,按下Summon然後將卡牌放置中間那個讀取區域,等待4秒,右下會顯示讀取時間,讀取完畢會召喚怪物,怪物召喚出來的第一回合無法執行攻擊,按下左邊的End結束這回合,換玩家二招喚怪物
玩家1召喚出怪物後的畫面

    Step 4:    雙方玩家都召喚出怪物後,進攻那方能觸碰怪物來叫出攻擊選單,藉由觸碰攻擊選單來選擇要進行攻擊怪物,觸碰對方怪物選擇要攻擊哪知怪物
觸碰怪物叫出攻擊選單

觸碰攻擊選單後會有紅框標示選擇的怪物

    Step 5:    若是守備那方的場上已經沒有怪物,而進攻的那方還能攻擊,進攻那方選擇攻擊以後,守備那方的玩家頭像會跳出來,觸碰守備玩家的頭像能對守備那方的生命值造成傷害
玩家1的頭像是蝙蝠俠OwO

    Step 6:    就這樣持續到其中一方的生命值歸0
玩家二獲勝的畫面

遊戲使用到的技術:
    1.  差異偵測
    2.  將圖片存到陣列
    3.  從資料夾裡取圖片
    4.  使用Callback Function更改視訊畫面
    5.  struct
    6.  Random

心得:
    跟我最初構思的有點差異,一開始我想的遊戲元素比較多元,除了攻擊應該還有其他選項可以操作才是,現在就只能如標題一樣完全只能靠運氣,召喚的卡牌能力值是隨機的,所以哪一方能獲勝就只能交由命運時之門的選擇了......。
    
    還有視訊畫面一開始我沒有想把它變全白然後再用差異偵測將偵測到的物件變色,後來改成這樣,是因為我從上課看到老師在差異偵測練習那邊有用到這個,我就一直很想把這個使用在我的遊戲裡,而且想一想用這個或許能將遊戲添增更換場地的元素,不過後面沒完成就是了,然後視訊畫面就變成現在這副模樣了。

(絕對不是因為我去背去了3天,還是去不乾淨,所以才改成這樣的)

    我想這支程式大概是我就讀資工系以來寫過最長的程式碼吧!  雖然不盡理想,不過好加在最後動畫那邊有寫出來,不然我覺得我不如一開始寫趕羊就好了,要不然這個遊戲就只有攻擊這個選項,沒有其他元素好玩...。
    在寫這支程式時,我卡關了好幾次,像一開始要讀取卡片那裏就讓我卡了一個禮拜左右吧!  我一開始想做的讀取方式是只要把卡片放進去,偵測到是卡片就讀取,不然就不動作,不過我想不到如何做,最後就只能依靠button了,再來就是觸碰怪物後會產生攻擊選單,這也讓我卡了一個禮拜,而且這一關卡的很莫名其妙,我最後也不太清楚是怎麼解決的,因為我沒有改程式碼,但是有一天他就work了,我在猜是因為光源的關係,因為後來好像是有天不知道為什麼視訊畫面會有很嚴重的色差,我就用白紙當鏡頭的背景,然後我寫的攻擊選單就work了! 也是因為這次卡關,讓我養成只要有問題就會去Check 8 * 8畫面(我一開始就有做這個功能,可是在遇到這個問題以前,我很少使用這個功能...),最後一關就是守備方場上無怪物且攻擊方想攻擊守備玩家時,該如何選擇玩家,一開始我的想法是只要守備方場上無怪物,攻擊方選擇守備方的場地就能攻擊守備玩家,我依然想不到怎麼寫,還好這禮拜是在學校寫,我從老師那裏得到了不錯的意見,也就是讓守備方頭像出現,再讓攻擊方選擇頭像做攻擊,至於如何判定守備方場上已無怪物,則是受到一位同學的概念所啟發,因此這關我很快就解決了,除了這些大關卡,我在寫這程式時也常常遇到手殘出錯的問題,像是複製了以後忘了改變數,而且因為從未寫過這麼長的程式碼,所以一直找不到究竟哪裡出錯,還好有同學幫我找到,真的很感謝幫助我的老師跟同學! 不然我想我應該無法在這最後一個禮拜完成可以demo的版本。

作業補交:
將畫面改成特定色調

    



沒有留言: