【发布时间】:2015-12-26 02:06:55
【问题描述】:
就像广受好评的“与你的爸爸模拟器 2015 洗澡”一样,我正在尝试编写一个程序,让玩家在其中运行到一个矩形,然后矩形在地图上的随机位置重生。我试图通过调用 render() 方法来做到这一点,但意识到 (1) 这会将最后一个矩形留在地面上,并且 (2) 在 render() 构造函数中,“g”不被视为有效参数某些原因。这是我的 Play 类代码。
public class Play extends BasicGameState
{
private Image player;
private Shape castle;
private Random randX, randY;
private final int MAX_X = 730;
private final int MAX_Y = 570;
private int playerX = 400;
private int playerY = 590;
private int castleX, castleY;
public Play(int state)
{
}
public void init(GameContainer gc, StateBasedGame sbg) throws SlickException
{
player = new Image("res/play.png");
randX = new Random();
randY = new Random();
castleX = randX.nextInt(MAX_X);
castleY = randY.nextInt(MAX_Y);
castle = new Rectangle(castleX,castleY,70,70);
}
public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException
{
g.drawImage(player, playerX, playerY);
g.setColor(new Color(0,255,0));
g.fill(castle);
g.draw(castle);
}
public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException
{
Input input = gc.getInput();
if(input.isKeyDown(Input.KEY_UP)){playerY -= 1;}
if(input.isKeyDown(Input.KEY_DOWN)){playerY += 1;}
if(input.isKeyDown(Input.KEY_LEFT)){playerX -= 1;}
if(input.isKeyDown(Input.KEY_RIGHT)){playerX += 1;}
if(playerX == castle.getX())
{
/*try
{
this.render(gc, sbg, g);
}
catch(Exception e){e.printStackTrace();}*/
}
}
public int getID()
{
return 2;
}
}
【问题讨论】:
标签: java collision-detection lwjgl slick2d