Hello World是任何人必须开发以理解一门新语言或一个新平台的第一个程序:在这个教程里将解释如何使用MarteEngine写一个最简单的Hello World例子。
我们的Hello World例子像你展示如何在屏幕上写一个单独的字符串“Hello World”,它还解释了MarteEngine的一些核心概念。
Main class
在我们的例子中Main class是一个执行应用的类。想象一下在MarteEngine中的每个游戏都有许多个world:加载资源,标题屏幕,选项,介绍,游戏,暂停等等。
现在你需要一个中心类来初始化这些world病开始工作!
我们的Hello World例子像你展示如何在屏幕上写一个单独的字符串“Hello World”,它还解释了MarteEngine的一些核心概念。
Main class
在我们的例子中Main class是一个执行应用的类。想象一下在MarteEngine中的每个游戏都有许多个world:加载资源,标题屏幕,选项,介绍,游戏,暂停等等。
现在你需要一个中心类来初始化这些world病开始工作!
import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.StateBasedGame;
/**
* Launch Hello World example
* */
public class HelloWorldTest extends StateBasedGame {
public HelloWorldTest(String title) {
super(title);
}
@Override
public void initStatesList(GameContainer container) throws SlickException {
// add HelloWorld to current game with id 1
addState( new HelloWorld(1, container));
}
public static void main(String[] argv) {
try {
AppGameContainer container = new AppGameContainer( new HelloWorldTest(
"Hello World Marte Engine"));
container.setDisplayMode(800, 600, false);
container.setTargetFrameRate(60);
container.start();
} catch (SlickException e) {
e.printStackTrace();
}
}
}
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.StateBasedGame;
/**
* Launch Hello World example
* */
public class HelloWorldTest extends StateBasedGame {
public HelloWorldTest(String title) {
super(title);
}
@Override
public void initStatesList(GameContainer container) throws SlickException {
// add HelloWorld to current game with id 1
addState( new HelloWorld(1, container));
}
public static void main(String[] argv) {
try {
AppGameContainer container = new AppGameContainer( new HelloWorldTest(
"Hello World Marte Engine"));
container.setDisplayMode(800, 600, false);
container.setTargetFrameRate(60);
container.start();
} catch (SlickException e) {
e.printStackTrace();
}
}
}
你可能注意到游戏开始时Java调用的main方法和另外一个被覆写的方法:initStatesList。在这个特殊的方法里,MarteEngine将初始化游戏中所有的states/worlds。在我们这个简单的测试用例中只有一个state,即HelloWorld。
Hello World
package test;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.StateBasedGame;
import it.randomtower.engine.World;
public class HelloWorld extends World {
public HelloWorld( int id, GameContainer container) {
super(id, container);
}
@Override
public void render(GameContainer container, StateBasedGame stateBasedGame, Graphics g)
throws SlickException {
super.render(container,stateBasedGame,g);
g.drawString("Hello World", 300, 200);
}
}
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.StateBasedGame;
import it.randomtower.engine.World;
public class HelloWorld extends World {
public HelloWorld( int id, GameContainer container) {
super(id, container);
}
@Override
public void render(GameContainer container, StateBasedGame stateBasedGame, Graphics g)
throws SlickException {
super.render(container,stateBasedGame,g);
g.drawString("Hello World", 300, 200);
}
}
可以看到HelloWorld继承了World类(我们把游戏的World叫做States,因为从根本上来说World就是states)。还可以看到另外一个被覆写的方法:render。MarteEngine使用Render在屏幕上绘制物体,在我们的例子中,字符串Hello World位于x=300, y=200.
运行Main class可以查看运行效果。
如果你对上面的代码有感觉了,可以继续Entity and World教程。