2010年5月31日 星期一

遊戲類型(九) RTS 即時戰略遊戲 (Real-Time Strategy)

即時戰略遊戲之遊戲過程是即時進行而不是採回合制。通常,標準的即時戰略遊戲會有資源採集、基地建造、人員訓練、科技發展等元素。在玩家指揮方面,即時戰略遊戲通常可以獨立控制各個單位或使用群組式的控制。
(Command & Conquer Red Alert 3: Uprising, 紅色警戒3:起義時刻)

Android程式設計(八) 使用者介面設計-3

使用Hierarchy viewer
Hierarchy Viewer是Android SDK提供的一項工具,可用來檢視應用程式使用者介面之階層架構,觀察其它應用程式UI設計架構。說明如下:
1. 在Android虛擬裝置執行測試程式。
2. 執行Android SDK之tools子目錄hierarchyviewer.bat檔,啟動Hierarchy Viewer。
3. 按下「Start server」按鈕。
4. 在Hierarchy Viewer左側面版可看到目前執行中的虛擬裝置,右側面版則是目前虛擬裝置中已啟動的程式 (包括背景執行程式)。其中 表示目前作用中視窗。
5. 點選想檢視的程式 (預設是),然後按下「Load View Hierarchy」。


2010年5月28日 星期五

Android程式設計(七) 使用者介面設計-2

使用ADT使用者介面編輯器
針對Android應用程式使用者介面設計,ADT已提供一個相當方便的版面編輯工具,支援所見即所得 (What You See Is What You Get,WYSIWYG) 方式來編排版面及設定屬性。
1. 開啟HELLO專案中的「res/layout/main.xml」檔,切換到「Layout」頁籤。
2. 從Views工具箱點選介面元件(例如TextView),然後拖曳到面版上。

3. ADT會自動為介面元件給定元件ID,預設ID為「介面元件類型+編號」,例如TextView01。我們可依程式需要刪除或修改ID值 (注意要保留「@+id/」部份),如果程式與該介面元件間需要互動,就必須保留或修改ID值;反之,就可以刪除ID值。
4. 透過屬性窗格修改介面元件之其它屬性值。

2010年5月27日 星期四

遊戲類型(八) RPG角色扮演 (Role-playing Game)

角色扮演遊戲由玩家扮演虛擬世界中的一個或者幾個隊員角色,在特定場景下進行遊戲。角色屬性(如生命值、法力、力量、靈敏度、智力)會隨遊戲情節發展而成長。
(Torchlight, 火炬之光)

2010年5月26日 星期三

Android程式設計(六) 使用者介面設計-1

Android預設是使用介面顯示與程式邏輯分離方式,使用介面描述檔來描述UI版面的配置與介面元件之排列,再由程式依據介面描述檔內容顯示。這種方式不但程式簡潔,也便於後續修改維護。
Android提供的介面元件可概分為三類:
 版面配置類:用來配置各種顯示介面的版面,例如Layout、Tab。
 顯示介面類:顯示與輸入介面,例如文字、按鈕、輸入欄位等。
 狀態提示類:用來提示使用者應用程式相關訊息之介面,例如進度條、等待圈。
檢視HELLO專案程式碼,OnCreate ()方法的最後一行指令setContentView (R.layout.main) ,意思就是依據layout資源檔中的main.xml檔內容做為目前的顯示介面 (View)。
打開HELLO專案中的「res/layout/main.xml」檔,main.xml就是預設的介面描述檔,其預覽畫面就是目前Hello程式的執行畫面。
切換到main.xml頁籤,檢視main.xml文件內容。
元素表示使用線性版面配置,其android:orientation屬性值為"vertical",表示這個介面的版面配置方式是從上而下排列其內含的介面元件;目前android:layout_width屬性值及android:layout_height屬性值都是"fill_parent",表示版面寬度與高度都為「填滿整個上層元件」。
目前元素內只有一個子元素,表示在版面中加入一個文字檢視元件,其android:layout_width屬性值設為"fill_parent",表示版面寬度為「填滿整個上層元件」;android:layout_height屬性值設為"wrap_content",表示隨著文字欄位行數機動地調整介面的高度;android:text屬性表示文字檢視元件所要顯示的文字,目前屬性值為"@string/hello"表示從資源檔中尋找名為hello的字串資源
對照BMI專案中的「res/values/strings.xml」檔,內容如下:
<?xml version="1.0" encoding="utf-8"?><
resources>
    <string name="hello">Hello World, Hello!</string>
    <string name="app_name">Hello Android</string>
</resources>
可看到hello字串資源內容即是「Hello World, Hello!」。
操作練習:
1. 開啟「res/layout/main.xml」檔,在最後加入一個< TextView >子元素,內容如下:
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="@string/copyright"/>
2. 開啟「res/values/strings.xml」檔,加入一個字串資源,字串名稱 "copyright",字串內容 "南開科技大學電子工程系"。
3. 重新編譯執行程式,就可看到剛才新加入的文字。

Android程式設計(七) 使用者介面設計-2

2010年5月23日 星期日

遊戲類型(七) RAC賽車遊戲 (Racing Game)

由玩家駕駛車輛與電腦或其他玩家操控的車輛比賽並試圖獲取勝利,強調場景及車輛操控的真實感,過程中經常營造駕駛汽車的速度感和刺激感。
(Need for Speed: Shift, 極品飛車13: 變速)

2010年5月17日 星期一

遊戲類型(六) PUZ 益智類遊戲 (Puzzle Game)

益智類遊戲融合基本數理或物理原理,玩家必須應用工具或道具解決每一關卡之問題,可能包含動作要素,要求心靈手巧。
(Crazy Machines II, 瘋狂機器2)

2010年5月15日 星期六

遊戲類型(五) MUG音樂遊戲 (Music Game)

玩家必須配合音樂與節奏做出動作(依畫面指示按鈕、踏舞步、操作模仿樂器的控制器等)來進行遊戲,當玩家的動作與節奏吻合即可增加得分,相反情況下則會扣分。
(High School Musical 3: Senior Year DANCE!, 歌舞青春3畢業舞會)

Android程式設計(五) 觀察Activity生命週期

Android提供Log函式可以讓我們在程式碼中加入稽核記錄,再利用LogCat工具來檢視記錄,透過Log記錄來檢查程式程行的軌跡,可協助我們分析程式。
應用程式要引用Log函式很簡單,只要import android.util.Log,程式中就可使用Log函式。為方便我們管理或識別記錄,Android提供5種Log函式:
Log.v  完整(verbose)
Log.d  除錯(debug)
Log.i  通知(info)
Log.w  警告(warn)
Log.e  錯誤(error)
這些Log函式的第一個參數是自訂的工作記錄標籤,以方便區隔不同activity/service所建立的記錄,第二個參數為要寫入的工作記錄訊息內容。
以下以追踨activity的生命週期為例,說明如何應用Log功能來觀察activity狀態切換時onXX()方法之執行順序。
1. 建立LC-LOGGER專案
(1). Project Name: LC-LOGGER
(2). Build Target: Android 1.5
(3). Application Name: Life Cycle Logger
(4). Package Name: android.logger
(5). Create Activity: Logger
2. 覆寫onXX()方法
    執行「Source」功能表「Override/Implement methods…」命令,覆寫onDestroy、onPause、onRestart、onRestoreInstanceState、onResume、onSaveInstanceState、onStart及onStop方法
3. 使用Log函式記錄適宜之訊息
    在每一個onXX方法最後加上Log.d()函式,例如:
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        Log.d("SSWU", "onDestroy");
   }
4. 以除錯模式執行程式
5. 切換到「Debug」環境配置,觀察LogCat窗格內容

按下LogCat窗格「+」圖示則可設定訊息過濾器(Log filter),例如只要顯示被標示"SSWU"標籤的記錄,方便觀察Activity狀態變化時記錄的LOG訊息。

2010年5月12日 星期三

Android程式設計(四) Activity生命週期

Activity是Android應用程式的基本作業單元,一個activity從被建構執行到結束,會經歷不同的狀態,包括Starting、Running、Paused、Stopped及Destroyed。
每一個activity狀態切換完全由Android系統管控。任一時刻只會有一個Activity處於Running狀態,其它Activity都會被強制進到其它狀態。Android系統在變更activity狀態前,會透過呼叫activity的onXX()方法來通知該activity。因此,應用程式必須視需要覆寫這些方法,讓Android系統適時地為activity執行特定作業,說明如下:
● onCreate(Bundle)
Activity第一次被啟動時會執行onCreate,可在onCreate進行只需執行一次的初始化作業。
● onStart
表示activity即將變為可視狀態 (visible)。
● onResume
Activity即將進入執行中狀態 (Running),表示activity已顯示完成,可以開始與使用者互動。
● onPause
Activity即將進入暫停狀態 (Paused),通常是因為別的activity被啟動。一旦activity進入暫停作業中狀態並不保證可以再回到執行中狀態,因此如果需要儲存程式的狀態,應該在onPause()方法中進行。
● onStop
Activity即將進入停止狀態 (Stopped),此時使用者已不能與activity互動。如果系統資源不足,Android系統可能會直接將你的process終止,而不會經歷停止狀態 。
● onRestart()
Activity從stopped狀態再次被啟用。
● onDestroy
Activity即將被終止 (Destroyed)。如果系統資源不足,Android系統可能會直接將你的process終止,而不會呼叫onDestroy。
● onSaveInstanceState(Bundle)
onSaveInstanceState預設會儲存每一介面元件的狀態。通常,activity無須覆寫此方法。
● onRestoreInstanceState(Bundle)
onRestoreInstanceState預設將activity回復到之前onSaveInstanceState()方法儲存的狀態。一般而言,activity無須覆寫此方法。

Android程式設計(五) 觀察Activity生命週期

遊戲類型(四) FTG 格鬥遊戲 (Fighting Game)

格鬥遊戲由玩家操縱自己選擇的角色,以武術打鬥的方式與電腦或其他玩家控制的角色進行對戰,通常採三戰二勝制,必須在回合時間內擊倒對手。
(Dead Or Alive 4, 生死格鬥4)

2010年5月8日 星期六

Android程式設計(三) 專案架構

建立Hello Android專案
點選功能表命令『File/New/Android Project』建立新專案。相關設定如下:
  •  Project Name: 專案所在的資料夾名稱。
  •  Build Target: 選擇應用程式的Android平台版本。
  •  Application Name: 應用程式標題。
  •  Package Name: 套件名稱,JAVA套件名稱即是對應到程式檔的目錄結構。
  •  Create Activity: 建立專案主類別。勾選此項後可指定類別名稱,依照Java命名習慣,類別使用開頭大寫的形式。
  • Min SDK Version: 應用程式所支援的最低SDK版本,3表示SDK1.5版。
專案架構
檢視「Package Explorer」視窗中的HELLO資料夾,內容如下:
src資料夾:Eclipse會依據設定的套件名稱在src目錄下建立子目錄結構來存放應用程式原始檔。 gen資料夾:存放自動生成的檔案,至少會有一個名為R.java的檔案,該檔案用來提供應用程式資源索引 (識別碼)。應用程式必須透過R.java檔中自動產生的「R」類別來存取這些資源。
Android X.X資料夾:Android SDK之類別、方法,方便程式開發者參考。
Assets資料夾:存放多媒體檔案。
res資料夾:存放應用程式用到的資源檔案。不同的資源會分別放置在不同子目錄,預設有「layout」、「values」及「drawable」子目錄。
  • layout子目錄:儲存應用程式的介面描述檔 (XML格式)。介面描述檔用來描述螢幕所使用的介面元件及其版面編排。
  • values子目錄:儲存應用程式參數值描述檔 (XML格式)。參數值描述檔記錄應用程式之字串 (string.xml)、陣列 (arrays.xml)、顏色 (colors.xml)、樣式等資源設定。
  • drawable子目錄:儲存應用程式之圖片、圖示資源。1.6之後版本的SDK,drawable子目錄之下又分為drawable-hdpi、drawable-mdpi及drawable-ldpi三個子目錄,用來儲存不同解析度之資源檔。

AndroidManifest.xml檔:每個Android應用程式都需要一個AndroidManifest.xml檔案,用來聲明Android應用程式的功能規格,應用程式所建立的Activity、Service以及Intent Receiver等。 
檢視HELLO專案程式碼
第1行為應用程式套件名稱宣告。第3行與第4行程式碼為import敘述,對Android應用程式而言,android.app.Activity及android.os.Bundle是二個最基本會使用到的套件。
第6行開始為應用程式Hello類別程式。Hello類別繼承自Activity類別,目前這個程式中只有複寫onCreate ()方法,其內容很簡單,第10行先執行父類別內定之OnCreate ()作業後,然後在第11行叫用setContentView ()方法設定目前顯示內容。

Android程式設計(四) Activity生命週期

遊戲類型(三) FPS 第一人稱視角射擊遊戲 (First Person Shooter)

第一人稱視角射擊遊戲是以主視角進行的射擊遊戲。顯示畫面模擬由主角視角所觀察到的遊戲世界,並由玩家進行射擊、運動、跳躍、對話等等活動。
(Battlefield: Bad Company 2, 戰地:叛逆連隊2)

2010年5月6日 星期四

遊戲類型(二) AVG冒險遊戲 (Adventure Game)

冒險類遊戲強調故事線索的發掘,主要考驗玩家的觀察力和分析能力。有點類似RPG,但遊戲中玩家操控的主角本身屬性能力一般是固定不變並且不會影響遊戲的進程。
(Machinarium, 機械迷城)

2010年5月5日 星期三

遊戲類型(一) ACT 動作遊戲 (Action Game)

動作遊戲強調玩家的反應能力和手眼的配合。動作遊戲的劇情一般比較簡單,但比較有刺激性,情節緊張,聲光效果豐富。
(James Cameron's Avatar: The Game, 阿凡達)

Android程式設計(二) 模擬器設定與操作

1. 點選功能表『Window/Android SDK and AVD Manager』。
2. 由「Android SDK and AVD Manager」對話視窗左側列表中選擇「Virtual Devices」節點,按下右側面板之「New…」按鈕。

3. 指定虛擬裝置名稱及規格,點撃「Create AVD」建立虛擬裝置。
4. 由「Android SDK and AVD Manager」對話視窗按下右側面板之「Start…」按鈕啟動模擬器。

5. PC鍵盤與模擬器軟體按鈕對應:
Ctrl+F12切換螢幕方向;Alt+Enter切換全螢幕;F6切換軌跡球模式;F2 or Page-up開啟功能表; ESC-->Back; Home-->HOME; F7-->電源按鈕;

Android程式設計(三) 專案架構

2010年5月3日 星期一

Android程式設計(一) Eclipse IDE設定


一、安裝J2SE SDK
  1. 下載J2SE SDK安裝檔,網址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
  2. 執行所下載的J2SE SDK安裝檔以啟動安裝程序(例如:jdk-7u7-windows-x64.exe),安裝時使用預設值即可。
二安裝Eclipse IDE for Java Developers
  1. 下載Eclipse IDE for Java Developers壓縮檔,網址:http://www.eclipse.org/downloads/
  2. 將Eclipse壓縮檔(例如:eclipse-java-juno-win32-x86_64.zip)解壓縮到磁碟即可。
三、安裝ADT Plugin for Eclipse
  1. 點選Eclipse功能表『Help/Install New Software…』,開啟「Install」視窗。
  2. 按下「Add…」按鈕,開啟「Add Site」視窗。
  3. 在「Add Site」視窗之Name欄輸入ADT(自訂),Location欄輸入https://dl-ssl.google.com/android/eclipse/,之後按下「OK」按鈕關閉「Add Site」視窗。

  4. Eclipse會至指定網址檢查更新程式。勾選「Developer Tools」後按下「Next」按鈕繼續。

  5. 完成安裝後重新啟動Eclipse。
四、安裝Android SDK初始套件
  1. 連線到http://developer.android.com/sdk/index.html點擊「DOWNLOAD FOR OTHER FLATFORMS」連結,再選擇合適的Android SDK安裝檔。
  2. 將Android SDK Starter Package壓縮檔(例如:installer_r21.1-windows.zip)解壓縮到磁碟即可。
五、線上更新Android SDK套件
  1. 點選Eclipse功能表『Window/Preferences』開啟「Preferences」視窗。
  2. 點選左側面板「Android」節點,確認右側面板中「SDK Location:」欄正確設定到Android SDK Starter Package之磁碟目錄。
 3. 點選Eclipse功能表『Window/Android SDK Manager』。
 4.由「Packages」清單中勾選想要安裝的套件,之後按下「Install package...」按鈕。


5. 整個安裝作業需要些時間,完成後點撃「Close」按鈕結束安裝作業。


使用ADT bundle
ADT bundle是一個Android開發工具統綑包,已經將二、三、四項打包在一起。ADT bundle有32位元版本及64位元版本,只要安裝Java SDK後,將下載的ADT bundle解壓縮,即可開始使用。ADT bundle內只預先裝載最新平台版本的Android SDK及模擬器,也沒有SDK範例及文件。

Android程式設計(二) 模擬器設定與操作

2010年5月2日 星期日

電腦遊戲發展(二)

1970年代,隨著電子計算機技術快速成長,其成本越來越低。1971年的Nolan Bushnell開發了第一台商業化電子遊戲機,並在1972年創辦了世界上第一家電子遊戲公司–雅達利公司(ATARI,Nolan Bushnell也被譽為「電子遊戲之父」。到了1970年代後期,隨著蘋果電腦的問世,電腦遊戲才真正開始了商業化的道路。當時,電腦遊戲的圖形效果還非常簡陋,但是遊戲的類型化已開始慢慢成形。
從1980年代開始,PC機大行其道,多媒體技術也開始成熟,電腦遊戲則成為了這些技術進步的推手。到了1990年代,3D技術日益成熟,尤其是3Dfx公司推出巫毒卡(Voodoo)3D顯示卡更為電腦遊戲帶動了另一股熱潮。
到了1990年代中期,電腦軟硬體技術的進步及區域網路的高度發展,開始有了區域網路連線遊戲,為電腦遊戲的發展開拓另一條路。
進入21世紀,由於網際網路與行動加值服務應用普及使遊戲產業結構產生變化,線上遊戲(Online game)成為電腦遊戲市場的主流。同樣是太空射擊遊戲,比較2006 EVE online與1962 SpaceWar,就可見證遊戲科學快速進展。
(2006 Eve online)

2010年5月1日 星期六

電腦遊戲發展(一)

電腦遊戲(Personal computer games, Computer games 或 PC games)是指在個人電腦上運行、提供娛樂功能的電腦軟體。電腦遊戲產業與電腦硬體、電腦軟體、多媒體技術、娛樂電影、網際網路的發展關連甚密。電腦遊戲營造了一個虛擬的空間,從一定程度上讓遊戲參與者可以擺脫現實世界,在另一個世界中扮演現實世界中扮演不了的角色,提供遊戲參與者不同於真實世界的體驗和享受
Space War被認為是世界上第一款真正意義上、可娛樂性質的電子遊戲。1962年,麻省理工學院的學生Steve Russell和他的幾位同學設計了一款雙人射擊遊戲–「Space War」。Space War模擬了一個包含各種星球的宇宙空間,在這個空間裡,重力(引力)、加速度、慣性等等物理特性一擁俱全,而遊戲規則非常簡單,玩家可以互相用各種武器擊毀對方的太空船,但要避免碰撞星球。

(1962 SpaceWar)