'我正在制作一个简单的游戏,对于其中的一部分,我希望那里有敌人的攻击你。首先,我需要让它们移动 在这段代码中,“敌人”只是一个球。 我正在使用一个名为“mob1”的对象作为球的位置,以便稍后我可以有多个。
(顺便说一下,我正在使用Slick-只是改变任何东西)
我的游戏状态 -
package Worlds.World1;
import org.lwjgl.input.Mouse;
import org.newdawn.slick.Animation;
import org.newdawn.slick.Color;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.state.StateBasedGame;
import Main.SimpleMob;
public class World1A extends BasicGameState{
String mousePosition;
Image world;
Animation player, playerLeft, playerRight;
int[] duration = {200,200};
float playerX;
float playerY;
float WorldX;
float WorldY;
float PlayerVisibleScreenX;
float PlayerVisibleScreenY;
String MovementDirection;
SimpleMob mob1 = new SimpleMob();
public World1A(int state){
}
public void init(GameContainer gc, StateBasedGame sbg) throws SlickException{
Image [] WalkingLeft = {new Image("res/Sprites/buckysLeft.png"),new Image("res/Sprites/buckysLeft.png")};
Image [] WalkingRight = {new Image("res/Sprites/buckysRight.png"),new Image("res/Sprites/buckysRight.png")};
playerLeft = new Animation(WalkingLeft, duration, false);
playerRight = new Animation(WalkingRight, duration, false);
player = playerRight;
playerX = 0;
playerY = 0;
WorldX = 0;
WorldY = 0;
world= new Image("res/WorldImages/WorldBackGround.png");
mousePosition="null";
MovementDirection = "Not Moved Yet";
}
public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException{
world.draw(WorldX, WorldY);
g.setColor(Color.white);
g.fillOval(WorldX+mob1.getX(), WorldY+mob1.getY(), 50, 50);
g.fillRect(WorldX, WorldY+300, 500, 10);
}
public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException{
mob1.autoEveryThing(delta, playerX, playerY);
int posX = Mouse.getX();
int posY = Mouse.getY();
mousePosition = "X: " + posX + "\nY: " + posY;
Input input = gc.getInput();
if(input.isKeyDown(Input.KEY_LEFT)){
WorldX += delta * 0.1f;
MovementDirection = "Left";
player = playerLeft;
}else if(input.isKeyDown(Input.KEY_RIGHT)){
WorldX -= delta * 0.1f;
MovementDirection = "Right";
player = playerRight;
}else{
MovementDirection = "Not Moving";
}
}
//DO NOT CHANGE
public int getID(){
return 2;
}
}
我的暴徒课 -
package Main;
import org.newdawn.slick.Graphics;
public class SimpleMob {
//This class shall be used as an object creator. This will randomly move a graphic around, near to a player
private float MobX;
private float MobY;
private int AmountMoved = 0;
private boolean MoveRight = true;
private boolean MoveLeft;
private boolean PlayerNear = false;
public boolean PlayerDetected = false;
//Used to find the mobs X
public float getX(){
return MobX;
}
//Used to find the mobs Y
public float getY(){
return MobY;
}
//Used to set the mobs X
public void setX(float X){
MobX = X;
}
//Used to set the mobs Y
public void setY(float Y){
MobY = Y;
}
//Used to simply move the mob on its X co-ords
public void moveX(int delta){
MobX += delta*0.1f;
}
//Used to simply move the mob on its Y co-ords
public void moveY(int delta){
MobY += delta*0.1f;
}
public void autoEveryThing(int delta, float playerX, float playerY) {
System.out.println(AmountMoved);
// If the player has not been spotted the NPC/Mob will move left and
// right by 100 Pixels.
if (MoveRight == true) {
AmountMoved++;
MobX += delta * 0.1f;
if (AmountMoved == 100) {
MoveRight = false;
MoveLeft = true;
AmountMoved = 0;
}
}
if (MoveLeft == true) {
MobX -= delta * 0.1f;
AmountMoved++;
if (AmountMoved == 100) {
MoveRight = true;
MoveLeft = false;
AmountMoved = 0;
}
}
}
}
任何有关这方面的帮助都会很好,(或者如果有更正确/更容易的方式来制造小怪)
由于
答案 0 :(得分:0)
问题可能是System.out.println(...)
中的autoEveryThing(...)
来电。这是每秒做很多次,输出到控制台是人们可以做的最密集的事情之一。