作為Adventure Game,AVG的圖文部分向來便是整個游戲的核心之一,所以本回將以圖像繪制為中心講解AVG的CG生成問題。(CG,即Computer Graphics,直譯可稱[計算機圖形],此處以其為AVG開發中圖形部分的代稱)。

在小時候,我們或許會被AVG游戲的華麗特效所折服。但現在,我們都知道完成那些不過是程序員的最基本能力罷了,即使不是專業的游戲開發者,也可以輕易做到。
眾所周知,Java中圖像繪制是非常容易的事情,無論您是通過ImageIO、ImageIcon或Toolkit.getDefaultToolkit().createImage乃至其他方式取得Image(或BufferedImage),處理的方式都完全相同的,即通過Graphics。
Graphics是一個抽象類,因此通常需要Image來引入其實例。
在Java AWT相關包內,Graphics的基本用法如下所示。
但是,對于一些高級效果,則需要通過Graphics2D解決。
Graphics2D同樣是一個抽象類, 繼承自Graphics ,并且擴展了 Graphics,提供了對幾何形狀、坐標轉換、顏色管理和文本布局更為復雜的控制。它是用于在Java平臺上呈現二維形狀、文本和圖像高級特性的基礎類。
由于Graphics2D是Graphics的子類,故此可以直接轉換Graphics獲得。
在Java AWT相關包內,Graphics2D的基本用法如下所示。
無論代碼構建的如何復雜,Java繪圖的基本流程也僅僅是Image-> Graphics->Paint罷了,只需利用一個循環的repaint函數,我們就可以無數次重復這一流程。由于在我先前其它博文中已多有涉及,故此處不再贅述。
說到底,AVG游戲中的CG產生,也無非是一次次將圖像混合后展現出來,是這一流程的簡單再現。
具體合成關系如下圖所示:

就我個人認為,在2D的AVG中,分層僅需區別前景及背景兩層即可。
原因在于,Graphics或Graphics2D在drawImage時,將順序繪制圖像,舊圖會被新圖所覆蓋。故此,即使圖像再多,也不過是在交替背景前景產生的過程,一次次覆蓋,一次次交替,最終令唯一的CG被繪制到屏幕上去。
因而我們也可以得出一個AVG游戲開發的最基本概念,即圖像添加時,背景圖像添加應始終在前,前景圖像添加需始終在后,圖像的活動部分始終作為前景,而將非活動部分始終作為背景。
在本文的示例程序中,具體實現代碼如下(詳細請下載):
下一次,我們將開始講解AVG的劇情發展及腳本定制。
示例代碼界面如下圖:



、
示例程序下載地址:http://download.csdn.net/source/999273(源碼在jar內)
浙公網安備 33010602011771號