期末專案 - KUTAR之發氣球與機智搶答
這個期末專案的靈感是來自學長的作品 - 小朋友上樓梯與下樓梯
小朋友上、下樓梯操作很簡單,下樓梯只要控制左右,上樓梯除了左右還有跳的動作。
我這兩個遊戲也很簡單,只要點滑鼠左右鍵即可,相當好上手!
不過可別光看遊戲操作簡單就認為沒什麼挑戰性,遊戲的速度可是會隨著時間越來越快,滑鼠點太慢或太快都可能導致失誤,失誤一次遊戲就結束了。
而且這系列遊戲還挺奸詐的呢!有的時候遊戲會做假動作騙你,或者是場景突然變化混淆你的視聽。
所以說這遊戲可是相當考驗手速、反應與節奏感!
第一款 - 發氣球
遊戲說明:遊戲中你要發氣球給來遊樂園玩的kutar們,kutar有兩種,分別是大kutar與小kutar,大隻的要給大氣球,小隻的要給小氣球。如果發錯或發的太慢就算失敗了,此時主角可是會變胖以表示尷尬、難過或遭遇挫折。
第二款 - 機智搶答
遊戲說明:遊戲中畫面上方會出現問題與答案選項,你必須要在極短時間內正確回答,否則對方比你搶先一步回答就失敗了(當然對方一定會答對,所以你要搶答)。
遊戲影片(二合一):
心得:
我發現以程式碼模擬滑鼠和鍵盤事件比我當初想像的要簡單多了,原本以為是要寫網路port方式或是把輸入指令動態寫到.dll檔裡,然後遊戲再去讀它。後來老師有在落格貼模擬滑鼠和鍵盤事件的連結,裡面有程式碼可以參考,不過還是因為一些程式語法不熟悉,轉換成bcb的語法上碰到一些問題,後來同學告訴我用兩行程式就能辦到(mouse_event中mouse down與mouse up),再加上我只有滑鼠部分要輸入而沒有鍵盤輸入,程式似乎又變的更加簡單,結果程式碼一加還真的偵測到滑鼠就會點,當場愣了一下,只不過滑鼠會瘋狂亂點還要再加上一些條件限制才行,雖然程式碼簡單還是要感謝同學的一席話。
另外關於一些程式技巧,這程式的主角就是callbackfunction了,這callbackfunction裡包含了轉換視訊畫面成圖片、然後圖片跟背景色彩值相減、然後依臨界值把相減後圖片的轉成黑白(為了去掉雜訊還要轉換成Block,想像成圖縮小再放大的模樣)、最後假如白點出現在某個區域就要去產生滑鼠或鍵盤事件,使得遊戲接受到指令開始遊戲。一個callbackfunction有這麼多事要做,而且還要每秒做三十次,光想就知道電腦一定很喘,遊戲的流暢與否關鍵就在這了,因此在這個callbackfunction裡能不做事的就盡量別放進來,這大概是我在這們課所體會最深之一了。
2011年6月23日 星期四
2011年5月24日 星期二
Week15
過去的作品中我最喜歡的作品是2010作品集的小朋友上、下樓梯兩個。
喜歡的原因是他的遊戲與視訊程式是分開的,這樣遊戲就不用在bcb上寫了,如此遊戲的發展性會比較強、遊戲內容豐富。
我的期末專案也想從這種模式下進行,因為畢竟用bcb做遊戲有種綁手綁腳的感覺,加張圖片要先放在陣列裡面,還要考慮在不同的 video format 下該如何放入,用bcb寫也還可能會發生意想不到的問題,例如色彩值不對、該如何避免色彩值相減後超出範圍...等問題。
所以我考慮用Flash來完成遊戲的部分,因為我有修過一門多媒體遊戲設計的課程,對Flash的操作有一定程度的了解,當時也做了4~5個作業,擁有了一些現成的程式。
假如我視訊程式與遊戲是分開的,或許遊戲設計上不是我煩惱的問題,該煩惱的是行程間該如何溝通?視訊程式如何判斷你做了什麼動作?
例如我做了揮拳的動作會發動技能一;做了雙手交叉發動技能二;雙手舉高發動技能三...等,有些動作不夠明顯程式也無法判別...這都是要傷腦筋的地方。
但我也有點擔心時間不夠,畢竟期末也不遠矣,若時間不足也可能在bcb上完成遊戲就好。
在看了小朋友上、下樓梯作品後雖然感覺挺簡單的可以很快完成,但實際上自己做又怎能確定會花多久時間呢?
喜歡的原因是他的遊戲與視訊程式是分開的,這樣遊戲就不用在bcb上寫了,如此遊戲的發展性會比較強、遊戲內容豐富。
我的期末專案也想從這種模式下進行,因為畢竟用bcb做遊戲有種綁手綁腳的感覺,加張圖片要先放在陣列裡面,還要考慮在不同的 video format 下該如何放入,用bcb寫也還可能會發生意想不到的問題,例如色彩值不對、該如何避免色彩值相減後超出範圍...等問題。
所以我考慮用Flash來完成遊戲的部分,因為我有修過一門多媒體遊戲設計的課程,對Flash的操作有一定程度的了解,當時也做了4~5個作業,擁有了一些現成的程式。
假如我視訊程式與遊戲是分開的,或許遊戲設計上不是我煩惱的問題,該煩惱的是行程間該如何溝通?視訊程式如何判斷你做了什麼動作?
例如我做了揮拳的動作會發動技能一;做了雙手交叉發動技能二;雙手舉高發動技能三...等,有些動作不夠明顯程式也無法判別...這都是要傷腦筋的地方。
但我也有點擔心時間不夠,畢竟期末也不遠矣,若時間不足也可能在bcb上完成遊戲就好。
在看了小朋友上、下樓梯作品後雖然感覺挺簡單的可以很快完成,但實際上自己做又怎能確定會花多久時間呢?
2011年5月10日 星期二
Week12
這次的作業加入了一些圖塊,未來可能用於生命值、時間等計算,或是畫場地、牆壁之類的會用到。除了直接改掉Image某區塊的色彩值以外,我覺得也可以用Panel、Image、Label、Button等元件來完成,Image應該最常用,生命條、圖畫、場地都可以用之。
2011年5月9日 星期一
Week11
這禮拜作業除了可以顯示攝影畫面、擷取攝影畫面外, 還能把攝影畫面用Image顯示(也就是轉換成用影像元件顯示)。 開關打開時Image會不斷刷新,開關關掉則暫停。
在這個作業中因為我的攝影機也是跟部分人一樣是YUY2的, 所以我必須完成YUY2轉RGB的程式碼,在之前上課中老師有講解YUY2是什麼以及在記憶體中如何擺放等等, 下課後我也去觀摩老師怎樣寫程式碼,所以心裡大概知道怎麼做了。
不過大概事情隔了太久、或是一知半解的情況下,在家中程式寫了不久就卡關了...主要還是因為記憶體的擺放有些模糊,所以我就参考學長YUY2轉RGB的程式碼完成了此次作業。
但是事情沒這麼簡單,我程式一執行還是產生out of range錯誤訊息,後來才發現我的Format忘了設好大小(240x320),設定完後還有一個問題:顏色不太對,我想這必定跟RGB色彩值有關係不然就是轉換矩陣的係數有誤,所以我只好畫了7個拉bar來拉(分別代表Y1,Y2,U,V,矩陣係數的值),總算湊出比較近原色的畫面。
2011年4月19日 星期二
Week7
2011年3月27日 星期日
hw6

這次作業是要擷取兩張不同的照片
第一張當背景(左下),第二張當背景上出現的物體(右下),
第三張是第一張減第二張之色彩值,用來判別是否有東西經過。(右上)
if 第一張色彩值大於第二張色彩值,則第三張 = 第一張 - 第二張
else 第三張 = 第二張 - 第一張
這樣下條件判斷才不會超出範圍(0~256)!
另外我在參考範例程式之前寫了另一個版本
是直接設Pixels的:

雖然簡單可是速度很慢,老師說程式未來這樣每秒取到的影格會比較少,
所以還是改成用指標寫啦。
經由這次的練習後,已經漸漸產生做視訊互動遊戲的感覺了!
從顯示攝影畫面、顯示設定攝影機資訊到擷取攝影畫面,
還能判斷是否有物體經過,看來不久後就能開始做遊戲了!
2011年3月20日 星期日
第56號教室的奇蹟
我覺得老師在教導學生之前,就一定要先管理好秩序,
例如上課不能大聲喧嘩,除了該學生無法專心聽課,其他學生也會被影響。
所以像在國小時才會有風紀股長來管理班上同學,維持好班上秩序。
接著是教導方式,最重要目的之一是如何培養學生主動學習的習慣,
我覺得要讓學生產生主動學習的動機就是興趣了,有興趣,才會想去了解、學習 ; 沒興趣,我想學起來一定很無趣或痛苦。
但有時卻是不得不學的,例如高中時期要學國文、英文、數學、歷史...等甚麼都要學,或許大部分的學生都沒興趣,但為了聯考、為了將來只好硬著頭皮、很無奈的去學,真正感興趣的學生又佔多少比例呢?
”反正撐過去就好了,撐過去就是你的了”老師家長們都這樣告訴我們,
但老師們卻不會告訴我們這些科目有趣的地方在哪,或是真正有用的地方,
好提升同學的興趣、培養學生主動學習的習慣。
不過想想這些科目要教的有趣也很困難和有限,光是一堆考試根本提不上能有興趣。因此這大概只是個幻想罷了,現實是殘酷的,為了家長、為了老師、為了有好學校而讀書,這就是國中高中時期。
到了大學呢,追求的目標不同了,有人是為了畢業後能有份好工作
有人要繼續升學考試,也有人只是想拿到畢業證書,但其實大家都是為了自己而讀的。
因此這時候老師就扮演相對重要的角色了,老師要如何吸引同學學習的慾望呢?
我認為首先學生必須有興趣,老師可以藉由討論"程式"這種東西到底吸引人的地方在哪,例如一個程式可以做出任何你想要做的事情,你想要讓照片變的更美可以靠程式完成;你想要發明你自己獨創的遊戲也可以靠程式完成;你覺得即時通好難用,你也可以自己寫一個。
儘管費力耗時、功能簡陋,但只要是自己寫出來的東西就一定很有成就感,
有成就感就會有興趣,有興趣就會產生主動學習的動力。
但是如果學生本身就是沒有興趣呢?
老師還是可以藉由不同的方式來吸引學生學習,
像是學sql資料庫,大部分學生可能不是這麼的感興趣,
不就是查詢、合併、管理一堆資料而已嗎?
但是再進一步討論到未來的出路,也許未來公司都搶著要、公司不能沒有你,因為資料庫裡的資料是公司的生命,自然待遇好、薪水高...等等,
那麼學生就會有動力想去學!
例如學java呢?老師可以介紹java的特性、優點,例如java跨平台特性可以在
Windows 95、Windows NT、Linux的電腦上執行;物件導向的特性,加上許多函式庫的支援,使得開發應用程式變的更容易...等等。
讓同學了解到java重要性,不得不學。
那老師教導的方法呢?書本上有提到幾點我覺得得不錯的:
1、不帶功課回家。在課堂上學生有30分鐘的時間回答20個問題,
老師用大約5分鐘教,在確定學生們都聽懂以後,大概還剩23分鐘讓他們答題。只要是在課堂上沒完成的,都算家庭作業。因此,讓同學知道利用上課時間全部完成比較好,如果有不懂的地方,可以問同學和老師,而且在教室的環境比家裡好的多。但缺點就是必須犧牲掉上課時間,使老師教的東西變少。
2、不浪費時間,8點上課就準時開始,就算只是在一天的開始浪費幾分鐘,
一整年下來過幾分鐘也會累積成數個小時。
準時上課這個可能就比較難了,老師也是要等同學都來了才可以開始吧,但是準時點老師才能教比較多東西呢。
最後我覺得外國跟台灣的教育比起來還是有很大的差距,
因為台灣的升學制度就是如此,國中讀書要為了考高中,
上了高中後讀書是為了要考大學,考上大學後讀書是比較自由了沒錯,
但是大部分的人還是為了畢業後能有好工作而讀書,
可是未來工作是做跟自己相關科系的比例其實很低,
因為發現那不是真正自己想做、有興趣的,
所以我認為對學習抱有熱情是很重要的。
例如上課不能大聲喧嘩,除了該學生無法專心聽課,其他學生也會被影響。
所以像在國小時才會有風紀股長來管理班上同學,維持好班上秩序。
接著是教導方式,最重要目的之一是如何培養學生主動學習的習慣,
我覺得要讓學生產生主動學習的動機就是興趣了,有興趣,才會想去了解、學習 ; 沒興趣,我想學起來一定很無趣或痛苦。
但有時卻是不得不學的,例如高中時期要學國文、英文、數學、歷史...等甚麼都要學,或許大部分的學生都沒興趣,但為了聯考、為了將來只好硬著頭皮、很無奈的去學,真正感興趣的學生又佔多少比例呢?
”反正撐過去就好了,撐過去就是你的了”老師家長們都這樣告訴我們,
但老師們卻不會告訴我們這些科目有趣的地方在哪,或是真正有用的地方,
好提升同學的興趣、培養學生主動學習的習慣。
不過想想這些科目要教的有趣也很困難和有限,光是一堆考試根本提不上能有興趣。因此這大概只是個幻想罷了,現實是殘酷的,為了家長、為了老師、為了有好學校而讀書,這就是國中高中時期。
到了大學呢,追求的目標不同了,有人是為了畢業後能有份好工作
有人要繼續升學考試,也有人只是想拿到畢業證書,但其實大家都是為了自己而讀的。
因此這時候老師就扮演相對重要的角色了,老師要如何吸引同學學習的慾望呢?
我認為首先學生必須有興趣,老師可以藉由討論"程式"這種東西到底吸引人的地方在哪,例如一個程式可以做出任何你想要做的事情,你想要讓照片變的更美可以靠程式完成;你想要發明你自己獨創的遊戲也可以靠程式完成;你覺得即時通好難用,你也可以自己寫一個。
儘管費力耗時、功能簡陋,但只要是自己寫出來的東西就一定很有成就感,
有成就感就會有興趣,有興趣就會產生主動學習的動力。
但是如果學生本身就是沒有興趣呢?
老師還是可以藉由不同的方式來吸引學生學習,
像是學sql資料庫,大部分學生可能不是這麼的感興趣,
不就是查詢、合併、管理一堆資料而已嗎?
但是再進一步討論到未來的出路,也許未來公司都搶著要、公司不能沒有你,因為資料庫裡的資料是公司的生命,自然待遇好、薪水高...等等,
那麼學生就會有動力想去學!
例如學java呢?老師可以介紹java的特性、優點,例如java跨平台特性可以在
Windows 95、Windows NT、Linux的電腦上執行;物件導向的特性,加上許多函式庫的支援,使得開發應用程式變的更容易...等等。
讓同學了解到java重要性,不得不學。
那老師教導的方法呢?書本上有提到幾點我覺得得不錯的:
1、不帶功課回家。在課堂上學生有30分鐘的時間回答20個問題,
老師用大約5分鐘教,在確定學生們都聽懂以後,大概還剩23分鐘讓他們答題。只要是在課堂上沒完成的,都算家庭作業。因此,讓同學知道利用上課時間全部完成比較好,如果有不懂的地方,可以問同學和老師,而且在教室的環境比家裡好的多。但缺點就是必須犧牲掉上課時間,使老師教的東西變少。
2、不浪費時間,8點上課就準時開始,就算只是在一天的開始浪費幾分鐘,
一整年下來過幾分鐘也會累積成數個小時。
準時上課這個可能就比較難了,老師也是要等同學都來了才可以開始吧,但是準時點老師才能教比較多東西呢。
最後我覺得外國跟台灣的教育比起來還是有很大的差距,
因為台灣的升學制度就是如此,國中讀書要為了考高中,
上了高中後讀書是為了要考大學,考上大學後讀書是比較自由了沒錯,
但是大部分的人還是為了畢業後能有好工作而讀書,
可是未來工作是做跟自己相關科系的比例其實很低,
因為發現那不是真正自己想做、有興趣的,
所以我認為對學習抱有熱情是很重要的。
2011年3月15日 星期二
HW2
2011年3月7日 星期一
HW1

這款遊戲叫做DanceCam,是一種跳舞遊戲。
遊戲中會不定時出現各種方向的箭頭,你必須做出與箭頭相對應的動作才能得分!
但在玩了後可發現其實動作不一定要做的很標準,例如你只要揮動雙手也可以得分。
如果再偷懶點的話用頭左右擺動,甚至是用一根手指也可以玩...只要有判定到的話。
雖然當初設計遊戲的構想是不錯,但在動作的誤判上是缺點之一,
這也是比較傷腦筋的的地方吧!程式要怎麼知道你這是手臂還是手指呢?
另外我也試玩了一款彈吉他的遊戲,跟DanceCam比較不一樣的地方是左手要按住對應位置的弦, 然後右手去撥動它,這動作就稍微精細點了,左手有四個位置要移動。
根據前一款遊戲的經驗,動作不必太標準也是可以得分的!
但我想得分數高低不是重點啦,玩的投入、開心才是重點。
訂閱:
文章 (Atom)