2014年6月30日 星期一

期末專案

此為遊戲畫面 遊戲中的人物必須閃躲炸彈
這是操作畫面 當手觸碰到左上方的按鈕時
會自動按下鍵盤的方向鍵左鍵
操作畫面2,當手碰觸到右上方的圖片按鈕時會自
動按下鍵盤的方向鍵右鍵
期末專案透過BCB影像差異值,來做控制。製作兩個按鈕 分別為向左,向右。
之後兩個按鈕分別對應著鍵盤上的LEFT,RIGHT,然後來玩自己設計的小遊戲閃躲炸彈。
遊戲中吃到一個炸彈將會-80分,必須在限定的時間內讓分數保持在-3000分以上 不然就算死亡遊戲失敗。反之只要可以撐過限定時間就算成功。

2014年6月29日 星期日

期末專案報告

構想 :
平常在玩OSU這節奏遊戲
因為在手機上可以藉由觸控去進行點擊
因此才會思考是否能藉由顏色擷取去進行鼠標的控制
藉此來玩OSU

影片
https://www.youtube.com/watch?v=q_DqX3cyKJw&feature=youtu.be




互動視訊期末

構想 :

一開始只想做一張圖片,但後面想想有點過於單調,所以加入了另一張惡魔卡讓玩家必須躲過才不會被扣分


遊戲畫面 :



遊戲規則 :

遊戲規則相當簡單用手指或者是小道具來碰觸畫面上的天使和惡魔,碰到天使則加10分,反之碰到惡魔就扣10分,記分表在右下角,而時間限制是30秒。

而當玩家碰到天使時,惡魔的位置也會隨機變動,但碰到惡魔時,天使的位置並不會受到影響。

實際Demo影片 :

心得 :

上這門課讓我學到了很多,很喜歡老師的上課方式,有很多開放我們寫程式的時間,尤其是最後一個禮拜在製作專題的過程,卡住時能詢問同學然後一起解決問題,最後感謝最辛苦的老師,也感謝同學的幫忙!!



期末專案

這次我要做的期末專題有點類似一個趕羊的遊戲
當初的構想是在螢幕中央放一個U狀的物體
將四處移動的圖片移動至U形圖的缺口中便算是得一分
不過因為能力的問題只簡單的做了一個能將圖片移動的小程式
先取好背景後再利用色彩差異的方式判斷該不該反彈






心得:
這學期的互動遊戲製作很有趣,也不會到太艱難,跟著老師的範例一步一步做,
有問題就和同學討論或是問老師,基本上都能順利通關,很感謝同學的鼎力相助,
讓程式不好的我能順利完成自己的期末專案,雖然結果不是自己預期的,
但是是努力的成果,也讓我很滿足了!!


2014年6月27日 星期五

互動視訊遊戲製作 期末作品

報告:
我所做的是以觸碰虛擬物件的方式作為操控器去操控另一款我所寫的打磚塊,我利用影像截取背景後與目前影像去比對,而產生的差異值作為開關,差異值在不同的地方會輸入不同的虛擬鍵盤代碼而其輸入的代碼則對應打磚塊移動的的操控。







心得:
    說實在話 ,我不是很喜歡這門克的開發環境,儘管他是物件導向不過與我自己所擅長的程式語言相比他的程式碼有些複雜、麻煩,使我在一開始的時候吃了不少苦。
    但是儘管如此,在熟悉之後,就算是我也明白,這環境是"正確的",他十分扎實的告訴我們是如何去作這些影像處理的,比起其他語言的內部函式搞定,他雖然繁瑣,但卻可以讓你非常精細的一個一個像素去處理,在學這門克的當中,我野我也把影像處理好好的再複習一次了。

期末專案

這次我要做的目標原本是希望做成象是雷電...但是難度比想像中的差很多就是

了。一台自己的飛機,加上很多台敵機會一直過來,但是和傳統遊戲不一樣靠

的不是子彈,而是依賴觸控來進行攻擊和防禦。這個題目主要的困難度是在於

幾個地方。一,操控,因為是將圖片這個”物件”放入影像裡面,所以轉到影像

中的物件,一個移動不能只是物件的移動!,你需要每次移動都把圖片的位置

(XY值),和iblockX,Y值都一起變動不然之後的所有東西都感應不到!。

二,影像難以同步,如果用傳統的DELAY TIME的話會因為影像的複雜度而時快

時慢,但是如果直接用FRAME TIME的話可以大幅的改善同步的問題。

三,攝影機在鏡頭很近時感應不佳,會時好時壞,這個比較難以修正,實在想

不太出解決方法。

四,按鍵輸入,要同時使用鍵盤和視訊想得很久,要讓程式能持續的讀取鍵盤

指令這點讓我吃足了苦頭,最後是找到了FORM裡有個KEY PRESS的事件可以觸

發,在研究了之下發現不能把按鈕放到版面上,可以點選的物件放到版面上都

會影響讀取鍵盤的效果。
開始的畫面,下面為自機。
在正下方的為玩家的飛機,失敗條件為讓敵機飛過玩家,撞到玩家。
失敗後(範例為撞到玩家)會顯示出擊落對方的玩家數。

心得:
  這次的實作是我寫過最大的程式之一,在想做特別的玩法這一點上想了很久,起先有用鍵盤的想法是因為大部分的視訊遊戲在不精確的情況下很容易使玩家變的煩躁,但是視訊的有趣,和在遊戲中的分量也想好好地把握住才做的。剛開始就在如何使用鍵盤上傷足了腦筋,後來又在如何讓物件能夠在視訊上動態的互動,摸索了很久,雖然這只算是一個半成品但是讓我很滿足。

 影片連結:
https://www.youtube.com/watch?v=FVUDLy0VAyU&feature=youtu.be

HW2

https://www.youtube.com/watch?v=--VH_oVj97A&feature=youtu.be

HW2


期末專案 --- Super Block

系級: ICAC3 00450460 白欣羽
主題: Super Block (超級方塊)

---------------------------------------------------------------------------------------------

設計概念:

我做的小遊戲是用彈珠敲方塊
彈珠碰到方塊
彈珠反彈
方塊消失再隨機出現
方塊第一次是固定位置
接下來就是隨機出現
互動方式: 利用差異偵測控制桿子移動
利用人的移動來偵測畫面左右邊白點多寡
左邊白點多 桿子往左移
反之往右移
遊戲時間60秒
敲到一次方塊得五分
中途沒接到球也會遊戲結束
(遊戲圖片皆是自己設計的)
---------------------------------------------------------------------------------------------

我需要用人來和遊戲互動
所以我使用鏡像使背景反轉
才不會有左右邊相反的操作上困難
鏡像後:

---------------------------------------------------------------------------------------------

差異偵測:

我只偵測最下面10行
偵測方式: 以畫面中間為分界
左邊偵測到的白點較多
桿子左移
右邊偵測到的白點較多
桿子右移

左移

右移

---------------------------------------------------------------------------------------------

遊戲畫面擷取:
遊戲開始
time =60 sec
彈珠由底部中間出發
彈珠碰到磚塊
磚塊就會消失並隨機換到下個位置
沒接到彈珠
遊戲結束(Game over!)
並顯示分數和評語
計時時間到
遊戲結束(Time's up!)
也會顯示分數和評語
評語有三種
10分以下
10分到30分之間
30分以上

---------------------------------------------------------------------------------------------

影片:



---------------------------------------------------------------------------------------------

心得:

經過這一學期的課以後 對於C++Builder比較了解
也對於寫程式用更深的認識
雖然還是沒辦法寫出很厲害的程式
但是已經有進步的 > <
這也是來上中文授課的目的之一
最有學到東西的時候
真的就是開始寫程式的這個星期
每天從早寫到晚
雖然寫出來的程式還不是很完美
過程實在是很讓人崩潰
可是寫完以後真的是超級開心的!
感謝老師每天陪我們到很晚很晚
也感謝同學們互相討論互相幫助
覺得上完這堂課很充實很值得

謝謝大家

期末專案-WedCam操作滑鼠使用手機模擬程式


本次期末專案題目為 WebCam 操作滑鼠使用模擬智慧型手機的程式,藉由視訊來模擬人手使用智慧型手機的方式,主要採取的技術是使用顏色偵測來操作滑鼠,達到操作滑鼠的目的,以下將以個步驟來講解其中所有有用到的技術。

一.  顯示畫面和擷取畫面

顯示畫面為 WebCam 操作的基本,故不再次敘述,然而擷取畫面是採用差異偵測中所用到的背景擷取技術,用 WebCam 抓三十張照片之後用像素數平均來抓出背景。

圖一 顯示畫面和擷取畫面的介面

二.  選取滑鼠移動的顏色以及滑鼠點擊左鍵的顏色

建立背景後畫面移動到image 畫面先用滑鼠點選第一次顏色為滑鼠移動的顏色,第二次點選的顏色為滑鼠點擊的顏色。


圖二 擷取顏色表單

三.  畫面轉換和鏡像處理

畫面轉換的技術是使用差異偵測中的背景轉換成畫面技術,在原技術中比較顏色差異的階段改為判斷顏色是否是我們所選取的顏色,如果是我們所選取的滑鼠移動顏色則轉換為顏色一(程式中設定為白色),如果偵測到的顏色是滑鼠點擊的顏色則轉換為顏色二(程式中設定為綠色),如果不是上述的兩個顏色則轉換黑色,作為背景不偵測,當轉換完成後就使用鏡像處理技術來使我們操作滑鼠時可以更加順利。

圖三 鏡像處理和轉換成8*8風格畫面示意圖

四.  準心位置抓取

本階段技術為本次專題最為困難的技術階段之一,藉由偵測畫面中的顏色作為準心標準,會先從X軸判斷把每段X軸開頭做判斷,而X軸的開頭為i*4 i代表的是現在掃描到的行數,而每一格皆為4Byte 所以要乘與4,在Y軸判斷會比較麻煩,人在使用畫面時會把畫面想像成一個二維矩陣來做判斷,但實際畫面的處理為一維矩陣,故在我們使用第二列第一行的位置時實際的位置為第一行位子後在加一個位子,所以在經過多次的實驗後找出計算公式出來,計算公式為 4*(J*width+i) jY的行數),j*width+i 為計算出二維矩陣轉換為一維矩陣的位置,然而每個位置皆是 4byte 故要乘與 4 之後才是真正的位置,藉由兩個迴圈的計算我們可以找出擁有最多白點的 X 軸與 Y 軸,之後會使用 X 軸與 Y 軸的交界處作為準心位置。
圖四 畫面計算輔助示意圖

0
4
8
12
16
20
24
28
32
36
40
44
48
52
56
60
64
68
72
76
80
84
88
92
96
100
104
108
112
116
120
124
128
132
136
140
144
148
152
156
160
164
圖五 計算輔助圖

五.  滑鼠點擊顏色偵測

做點擊動作只須確定有無點擊故不需要像滑鼠移動一樣找出準心,而在這部份採用的是顏色判斷,藉由判斷畫面中的綠點數量來作為判斷滑鼠是否有點擊,如果綠點的數量有超過一定的數量時判斷滑鼠點擊,也可藉此來避免著雜訊干擾。

六.  滑鼠移動

在準心移動時滑鼠也會移動,但實驗過程中發現有時會因為雜訊干擾導致準心跳動太大導致滑鼠無法操縱,為了解決這個問題所以給程式一個判斷式來判斷是否是有效的,會有兩個變數 OldMouseXOldMouseY 來儲存上個點的位置,在新的點出現時會使用勾股定理計算出新的點與舊的點的位移量,如果在允許範圍內則可以移動,如果超過允許範圍則不移動但此方法會犧牲速度提升精準度。(下圖為計算滑鼠移動的計算示意圖)

圖六 為計算滑鼠位移量示意圖

七.  尚未解決的問題

在滑鼠移動的步驟中有時會發生滑鼠無法移動的不明狀況,當程式重開之後又可以使用,然而最大的問題還是背景的問題,如果背景太雜亂以及選取當作滑鼠移動和按鍵的顏色選取不好的話容易發生雜訊太多無法抓取正確的準心移動。
操作滑鼠最大的困難點就是滑鼠的操作權會被 WebCam 奪取,造成無法操縱滑鼠關掉程式,原本是打算使用第三顏色做完關閉程式的方式,然而時間不足故無法完成。

八.成果展示影片



期末專案

開發環境:C++Builder XE2
遊戲名稱: 一球入魂(很難贏的足球遊戲)


開發過程:

因為我是用範例程式來改所以問題沒有很多有的問題像是取背景要鏡像忘記設參數還有算足球虛擬物件跟差異偵測實體物件也就是白點2者碰到的時候會發生的事件因為我把足球分成9部分所以有時候會算到亂掉整個開發過程中我覺得最難的部分就是算參數


遊戲內容:
當手觸碰到足球足球會往反方向前進,當足球碰到兩邊黑色方塊之後會顯示訊息哪個玩家贏了遊戲時間是30秒如果在時間內沒有碰到兩邊黑色方塊會顯示平局
執行畫面:









心得:
程式工作坊的第一天跟第二天都是在跟上進度 因為有範例程式所以問題沒有太多的問題+上我只是小改範例程式所以問題不多 然後到第三第四天的時候都做到放空眼神渙散所以是一個非常特殊的經驗... 做重要的是我覺得有學到東西 然後寫程式不再單單只是寫程式 不在全部都是數字跟文字的結合 還有物件參與 讓寫程式更快樂


互動遊戲製作期末專案


遊戲設計:
        一開始的構想是想跟彈珠台一樣設計成可以控制兩邊的桿子上下,掉到底部就Game Over!
不過因為寫程式的能力太有限了所以進展十分緩慢。
程式下方會有一顆到處移動的球(可以換圖片)、一根可以控制中間、右偏、左偏三種方向的桿子(用手摸到桿子會變化方向),上方有兩顆磚塊被球碰到可以持續得分,不過BUG很常出現。


遊戲畫面:
        一開始先擷取背景
            
         開啟遊戲就會直接開始有40秒的時間



       觸摸桿子一次就會向右偏(速度會越來越快)

       觸摸桿子一次就會向左偏(速度會越來越慢)



         碰到磚塊就會持續一直加分

           結束畫面會跳出視窗並顯示分數

遊戲影片:

(有字幕版)
https://www.youtube.com/watch?v=jRrMMvhkixs
(無字幕)
          
心得:

         我在最後一個禮拜實際開始自己寫的時候才慢慢深入課程的內容,平常的作業都沒辦法像實際動手做來的有收穫。雖然我的程式能力不好,花了很多時間也沒辦法做出和我當初的想法一樣的作品。不過老師和同學幫助了我很多,即使裡面還有一大堆的BUG還沒解決,我也覺得從這堂課收穫了很多,也是一次難得的體驗。