1. 程式人生 > >跟我來玩IGFrame(一)HelloWorld

跟我來玩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) {

                   //在這裡繪製(渲染)每一幀

                   //在這用到了JavaGraphics2D

                   //咱先別管他是幹啥的,就把它當成一支畫筆吧

                   //下邊這句設定了“畫筆”要使用的顏色

                   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物件封裝了滑鼠的訊息,

                  //使用getMouseXgetMouseY獲取滑鼠的所在座標

                  //使用getButtonCode方法獲取滑鼠按鍵程式碼

                   int mx = evt.getMouseX();//x座標

                   int my = evt.getMouseY();//y座標

                   //以下判斷是按下了滑鼠左鍵還是右鍵

                   if(evt.getButtonCode() == IGEvent.MOUSE_LEFT_BUTTON) {//左鍵

                            //根據按下左鍵的位置更新了成員變數xy

                            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