跟我來玩IGFrame(一)HelloWorld
各位轉載請註明出處,謝謝合作~作者:ioozhuangzi
各位好~寫了N久的Java2D遊戲架子IGFrame終於扔出來了。雖然寫了很久,但現在回頭看看,其實也沒啥複雜的東西,只是自己繞的彎路太多了而已o(∩_∩)o...
書歸正傳,且說自己寫架子,自己用,實在沒啥意思,扔出了大家圍觀一下,提提意見和bug啥的對我還是好處多多呢。為了這個目的,在下就得講講這玩意該怎麼用。
首先,你要會Java這門程式語言,而且還要了解一些關於awt和swing的東西,至少至少要了解Java的Graphics~因為我的封裝並沒有完全的遮蔽底層。
由於俺文筆能力有限,可能寫出的東西您沒有看懂,那真是抱歉了,你可以留言或者加IGFrame的Q群(210816248~驗證:IGFrame),咱們再一起討論。
下面開始~對了,你得先匯入相關的jar包~別說這你也不會哦~都在lib資料夾裡,全匯入到你的專案裡吧。還有,我用的開發工具是eclipse,其實用別的也無所謂了,用記事本也OK!吼吼~
先說兩個類,GFrame和GModel。
GFrame:主框架控制類,本架子的主要功能配置與控制都由該類完成。
GModel:一個實現了IGModel介面的遊戲週期模型類,該類提供了執行週期及事件處理的介面。
本架子的執行過程大致如下:
在GModel里根據上圖描述定義了相關介面。
public void onLoad()//初始化載入
public void onUpdate()//更新幀
public void onRender(Graphics2D g2d)//渲染幀
//注意更新幀的方法會在渲染幀方法之前執行
public void onExit()//退出
//處理鍵盤事件,一般不直接用這個方法
public void onKeyProc(GKeyEvent evt)
//處理鍵盤事件,一般不直接用這個方法
public void onMouseProc(GMouseEvent evt)
//鍵盤按下
public void onKeyPressed(GKeyEvent evt)
//鍵盤釋放
public void onKeyReleased(GKeyEvent evt)
//滑鼠按下
public void onMousePressed(GMouseEvent evt)
//滑鼠釋放
public void onMouseReleased(GMouseEvent evt)
//滑鼠移動
public void onMouseMoved(GMouseEvent evt)
//滑鼠拖動
public void onMouseDragged(GMouseEvent evt)
//滑鼠單擊
public void onMouseClicked(GMouseEvent evt)
//滑鼠移入視窗
public void onMouseEntered(GMouseEvent evt)
//滑鼠移出視窗
public void onMouseExited(GMouseEvent evt)
第一步,我們來建立一個遊戲週期模型類,繼承GModel類,然後重寫(Overwrite)上訴要用到的方法。注意,不一定要重寫全部方法,按照自己的需求而定,因為GModel預設是空實現,也就是什麼都不幹~比如我的遊戲只是用到了滑鼠點選,那我就只需要重寫onMousePressed方法即可。
程式碼:
package org.ioo.igframe.test;
import java.awt.Color;
import java.awt.Graphics2D;
import org.ioo.igframe.core.GFrame;
import org.ioo.igframe.core.GModel;
import org.ioo.igframe.event.GKeyEvent;
import org.ioo.igframe.event.GMouseEvent;
import org.ioo.igframe.event.IGEvent;
/**
* IGFrame HelloWorld
* @author: ioozhuangzi
* @version: 0.1a
* @Copyright: IGFrame
*/
public class HelloWorld extends GModel {
private static int width = 640;//定義視窗寬度常量
private static int height = 320;//定義視窗高度常量
int x, y;//定義了兩個成員變數
//初始化載入
public void onLoad() {
//在這裡初始化你的遊戲
x = 10;
y = 20;
}
//更新幀
public void onUpdate() {
//在這裡更新遊戲裡每一幀
}
//渲染幀
public void onRender(Graphics2D g2d) {
//在這裡繪製(渲染)每一幀
//在這用到了Java的Graphics2D,
//咱先別管他是幹啥的,就把它當成一支畫筆吧
//下邊這句設定了“畫筆”要使用的顏色
g2d.setColor(Color.GREEN);
//這句會在座標為(x, y)的位置繪製出Hello World!的字串
g2d.drawString("Hello World!", x, y);
}
//鍵盤按下
public void onKeyPressed(GKeyEvent evt) {
//這裡處理了鍵盤按下事件,下邊的程式碼判斷了我們按下了那個鍵,
//按下對應的鍵,會在控制檯上列印資訊
//GkeyEvent物件封裝了鍵盤訊息,
//使用其getKeyCode方法可以獲取到鍵盤程式碼
if(evt.getKeyCode() == IGEvent.VK_UP) {//上
System.out.println("按下了上鍵");
}
else if(evt.getKeyCode() == IGEvent.VK_DOWN) {//下
System.out.println("按下了下鍵");
}
else if(evt.getKeyCode() == IGEvent.VK_LEFT) {//左
System.out.println("按下了左鍵");
}
else if(evt.getKeyCode() == IGEvent.VK_RIGHT) {//右
System.out.println("按下了右鍵");
}
}
//鍵盤擡起
public void onKeyReleased(GKeyEvent evt) {
//當你按下的鍵擡起時觸發這個方法,判斷鍵位的方法同鍵盤按下
}
//滑鼠移動
public void onMouseMoved(GMouseEvent evt) {
//滑鼠在窗口裡移動會觸發這個方法,
//通過下邊的程式碼獲取當前滑鼠所在的座標
// int mx = evt.getMouseX();//x座標
// int my = evt.getMouseY();//y座標
}
//滑鼠按下
public void onMousePressed(GMouseEvent evt) {
//滑鼠在窗口裡按下會觸發這個方法,
//通過下邊的程式碼獲取當前滑鼠按下時所在的座標
// GMouseEvent物件封裝了滑鼠的訊息,
//使用getMouseX或getMouseY獲取滑鼠的所在座標
//使用getButtonCode方法獲取滑鼠按鍵程式碼
int mx = evt.getMouseX();//x座標
int my = evt.getMouseY();//y座標
//以下判斷是按下了滑鼠左鍵還是右鍵
if(evt.getButtonCode() == IGEvent.MOUSE_LEFT_BUTTON) {//左鍵
//根據按下左鍵的位置更新了成員變數x、y
x = mx;
y = my;
}
else if(evt.getButtonCode() == IGEvent.MOUSE_RIGHT_BUTTON) {//右鍵
}
}
//滑鼠擡起
public void onMouseReleased(GMouseEvent evt) {
//滑鼠擡起是觸發這個方法,用法跟按下差不多
// int mx = evt.getMouseX();//x座標
// int my = evt.getMouseY();//y座標
}
//退出
public void onExit() {
//退出程式,做一些收尾工作,
//比如釋放資源,存檔啥的(當然一般不建議在這寫存檔)~
}
}
建立完了模型之後,我們來寫main方法,話說對於一個程式來說入口肯定是必要的,而我們的架子配置也寫在這。main方法寫在哪都無所謂,我把他寫在了剛才的模型類裡了。
該輪到GFrame出場了~GFrame裡的方法基本都是用來配置架子的,比如視窗寬高、FPS等等。其它的方法使用會在以後用到時在講。
public static void main(String[] args) {
GFrame gFrame = new GFrame("IGFrame HelloWorld",//視窗標題
new HelloWorld(),//剛才寫的遊戲週期模型物件
50, //fps(視窗重新整理率)
width, height);//寬高
gFrame.setShowFPS(true);//設定顯示fps
gFrame.showFrame();//顯示視窗
}
有了main方法,二話不說先執行~哈哈,看到視窗了麼?還有綠色的HelloWorld!
在視窗的任意位置點選滑鼠試試,文字是不是在那出現了~
按下鍵盤的上下左右按鍵,控制檯會打出資訊。
OK~第一講完工~其實有以上的東西,你已經可以寫遊戲了。
-------------------------------------------
IGFrame下載請到這裡~
http://blog.csdn.net/ioozhuangzi/article/details/17607359 感興趣或者有疑問的各位可以留言或加Q群210816248~驗證:IGFrame