Ich benutze Slick2D Ich habe eine Boolean verwendet, um das Inventar zu zeichnen, wenn ich gedrückt habe "I" ist wahr, so wird es auf der Render-Methode, aber ich kann es nicht registrieren, das zweite Mal, wenn ich "ich" drückte, versuchte ich auch einen Zähler, wie oft ich gedrückt wird, und das hat funktioniert nicht so gut.Ich habe ein Inventar ausgezogen, wenn ich "i" drücke, aber ich möchte wissen, wie man es loswerden kann, wenn ich "i" Agian
import org.newdawn.slick.*;
import org.newdawn.slick.state.*;
public class Play extends BasicGameState{
Animation player,moveup,movedown,moveleft,moveright;
Image map,bk;
Inventory kappa;
boolean quit = false;
int[] duration ={200,200,200};
float posX=0;
float posY=0;
float shiftX=posX+640;
float shiftY =posY+360;
float inX=0;
float inY=0;
Image[] walkUp = new Image[3];
Image[] walkDown = new Image[3];
Image[] walkLeft = new Image[3];
Image[] walkRight = new Image[3];
PotionLibraray pl;
int inv = 0;
public Play(int state){
}
public void init(GameContainer gc,StateBasedGame sbg)throws SlickException
{
map = new Image("res/map.png");
bk=new Image("res/BlueKnight.png");
kappa = new Inventory();
pl = new PotionLibraray();
for(int x=0;x<9;x++)
kappa.add(pl.shpp);
for(int x=0;x<3;x++)
{
walkDown[x]=bk.getSubImage(x*32, 0, 32, 32);
}
for(int x=0;x<3;x++)
{
walkLeft[x]=bk.getSubImage(x*32, 32, 32, 32);
}
for(int x=0;x<3;x++)
{
walkRight[x]=bk.getSubImage(x*32, 64, 32, 32);
}
for(int x=0;x<3;x++)
{
walkUp[x]=bk.getSubImage(x*32, 96, 32, 32);
}
moveup = new Animation(walkUp,duration,false);
movedown = new Animation(walkDown,duration,false);
moveleft = new Animation(walkLeft,duration,false);
moveright = new Animation(walkRight,duration,false);
player =movedown;
}
public void render(GameContainer gc,StateBasedGame sbg,Graphics g)throws SlickException
{
map.draw(posX,posY);
player.draw(shiftX,shiftY);
g.drawString("player x: "+posX+"\nplayer y: "+posY, 1000, 50);
if(inv%2==1||inv==1)
{
kappa.draw(300, 400);
}
}
public void update(GameContainer gc,StateBasedGame sbg,int delta)throws SlickException
{
Input input = gc.getInput();
if(input.isKeyDown(Input.KEY_I))
{
inv++;
}
if(input.isKeyDown(Input.KEY_W))
{
player=moveup;
posY+=delta*0.3f;
}
if(input.isKeyDown(Input.KEY_S))
{
player=movedown;
posY-=delta*0.3f;
}
if(input.isKeyDown(Input.KEY_A))
{
player=moveleft;
posX+=delta*0.3f;
}
if(input.isKeyDown(Input.KEY_D))
{
player=moveright;
posX-=delta*0.3f;
}
}
public int getID() {
return 1;
}
}
Willkommen SO. Bitte posten Sie den Code, mit dem Sie Probleme haben. – CConard96
Warum verwenden Sie nicht einen Booleschen Wert, um den Bestandszustand anzuzeigen? Dann können Sie es jedes Mal umschalten, wenn ich gedrückt wird. "inv =! inv;" – CConard96
Danke, dass es funktioniert – Kapperino