Java:写一个gameEngine类

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_41374099/article/details/100908578

前言

就是个普通的class而已,没什么功能。去年做过一段时间的游戏引擎,那也不过是在写类罢了。这次写的类一是熟悉一下Java,二是留个框架给后面做Java GUI设计打个基础——虽然GUI设计是个很无聊的事,干嘛不用QT做?


//gameEngine .java
package demllie.violet;

public class gameEngine {
	//That gameEngine
	//the static variable  be used to one reference only
	public static gameEngine m_p;
	
	
	//gameEngine's data
	private static int m_count;//count for reference
	private double m_data;
	private int m_num;
	
	//variables which the method of gameEngine can returns
	private enum M_FLAG{
		RUN,
		STOP,
		ACTIVATE,
		DEACTIVATE,
		KILL,
		RESTART,
		END
	};
	
	//gameEngine method
	public gameEngine() {//default constructor
		m_data=0;
		m_num=0;
		m_p=this;
	}  
	public gameEngine(double data,int num) { //completed constructor
		this.m_data = data;
		this.m_num=num;
		m_p=this;
	}
	
	public double getData() {return this.m_data;}
	public int getNum() {return this.m_num;}
	public void changeData(double data) {this.m_data=data;}
	public void changeNum(int num) {this.m_num=num;}
	
	public void run() {
		System.out.println("gameEngine runing ....... count:"+(++m_count));		
	}

	public void changeTheEngine(gameEngine p) {
		this.m_data=p.m_p.m_data;
		this.m_num=p.m_p.m_num;
	}
	
}


其中有两个静态变量需要注意一下。
static gameEngine m_p;
这个在gameEngine类内部声明的静态变量是为了在创建了新的对象的时候,能够时候通过旧的引用来使用新的引用!!!
这个变量的初始化我都放在构造函数里面,所以每次创建一个新对象时,这个变量就会指向它。
旧的对象的数据使用:my.data
新的对象的数据使用:my.m_p.data

static int m_count;
这个就是普通的引用计数,比如计数run()函数被使用了几次。注意这个静态变量的初始化不能放在类里面。我采用方法是不初始化,反正Java变量默认为零。

测试一下,

//test1.java
package dengine;
import demllie.violet.gameEngine;


public class test1 {

	public static void main(String[] args) {
	
		gameEngine my=new gameEngine(23,45);
		
		my.run();
		my.m_p.run();
		my.m_p.m_p.run();
		System.out.println("my.m_p:"+my.m_p+"   ,my:"+my);
		
		
		System.out.println("gameEngine info>>");
		System.out.print("data:"+my.getData()+",num:"+my.getNum()+"\n");
	
		
		gameEngine you=new gameEngine(12,1200);
		System.out.println("you.m_p:"+you.m_p+"   ,you:"+you);
		
		
		my.changeTheEngine(you);
		System.out.println("my.m_p:"+my.m_p+"   ,my:"+my);
		
		my.run();
		System.out.println("gameEngine info>>");
		System.out.print("data:"+my.getData()+",num:"+my.getNum()+"\n");
		
		
	}

}

测试结果

gameEngine runing ....... count:1
gameEngine runing ....... count:2
gameEngine runing ....... count:3
my.m_p:demllie.violet.gameEngine@15db9742   ,my:demllie.violet.gameEngine@15db9742
gameEngine info>>
data:23.0,num:45
you.m_p:demllie.violet.gameEngine@6d06d69c   ,you:demllie.violet.gameEngine@6d06d69c
my.m_p:demllie.violet.gameEngine@6d06d69c   ,my:demllie.violet.gameEngine@15db9742
gameEngine runing ....... count:4
gameEngine info>>
data:12.0,num:1200

再测试一下,

//test2.java
package dengine;
import demllie.violet.gameEngine;;


public class test2 {
	
	public static void main(String[] args){
		
		gameEngine my=new gameEngine(1,2);
		my.run();
		System.out.println("gameEngine info>>");
		System.out.print("data:"+my.getData()+",num:"+my.getNum()+"\n");
		
		gameEngine she = new gameEngine(3,4);
		she.run();
		System.out.println("gameEngine info>>");
		System.out.print("data:"+she.getData()+",num:"+she.getNum()+"\n");
		System.out.print("data:"+she.m_p.getData()+",num:"+she.m_p.getNum()+"\n");
		System.out.print("data:"+my.getData()+",num:"+my.getNum()+"\n");
		System.out.print("data:"+my.m_p.getData()+",num:"+my.m_p.getNum()+"\n");
	
	}

}

测试结果

gameEngine runing ....... count:1
gameEngine info>>
data:1.0,num:2
gameEngine runing ....... count:2
gameEngine info>>
data:3.0,num:4
data:3.0,num:4
data:1.0,num:2
data:3.0,num:4

猜你喜欢

转载自blog.csdn.net/weixin_41374099/article/details/100908578