跟我来玩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下载请到这里~

感兴趣或者有疑问的各位可以留言或加Q群210816248~验证:IGFrame
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值