Hi Leute!
Ich hab eine für die meisten Programmierer wohl ziemlich einfach zu beantwortende Frage: Wie umgehe ich in diesem Fall den " non-static method cannot be referenced from a static context" Fehler?
Ich kann in der Klasse Player kein Objekt der klasse Game erstellen, da sonst immer und immer wieder ein Spielfenster geöffnet wird. Ich denke die Lösung ist, wie der Threadtitel schon andeutet, das Objekt "game" an die Klasse Player zu übergeben. Wie stelle ich das an? Gibt es vllt. auch eine bessere Lösung (Stichwort: reflection)?
Code-snippet "Game":
Code-snippet "Player":
Das ist mein erstes Projekt, bin also für jede Hilfe dankbar. ;D
Cheers, Affenfaust
Ich hab eine für die meisten Programmierer wohl ziemlich einfach zu beantwortende Frage: Wie umgehe ich in diesem Fall den " non-static method cannot be referenced from a static context" Fehler?
Ich kann in der Klasse Player kein Objekt der klasse Game erstellen, da sonst immer und immer wieder ein Spielfenster geöffnet wird. Ich denke die Lösung ist, wie der Threadtitel schon andeutet, das Objekt "game" an die Klasse Player zu übergeben. Wie stelle ich das an? Gibt es vllt. auch eine bessere Lösung (Stichwort: reflection)?
Code-snippet "Game":
Java:
public class Game extends JFrame implements KeyListener{
/*
Create a player
int xPos; X-Position
int yPos; Y-Position
*/
private Player playerLeft;
private Player playerRight;
public boolean left=false;
public boolean right=false;
public Game() {
setTitle("My Game");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600,400);
setBackground(Color.white);
setResizable(false);
addKeyListener(this);
setVisible(true);
playerLeft=new Player(50,300 );
playerRight=new Player(530,300);
}
public void paint(Graphics g){
paintComponent(g);
repaint();
}
public void paintComponent(Graphics g){
playerLeft.draw(g);
playerLeft.update();
playerRight.draw(g);
playerRight.update();
hitblock1.draw(g);
hitblock1.update();
}
@Override
public void keyPressed(KeyEvent e){
if(e.getKeyCode() == KeyEvent.VK_LEFT){
left=true;
}else if(e.getKeyCode() == KeyEvent.VK_RIGHT){
right=true;
}
}
@Override
public void keyReleased(KeyEvent e){
;
}
@Override
public void keyTyped(KeyEvent e){
;
}
public Player getPlayerLeft(){
return playerLeft;
}
public void setPlayerLeft(){
this.playerLeft=playerLeft;
}
public Player getPlayerRight(){
return playerRight;
}
public void setPlayerRight(){
this.playerRight=playerRight;
}
public boolean getLeft(){ <------!
return left;
}
public void setLeft(){
this.left=left;
}
public boolean getRight(){ <---------!!
return right;
}
public void setRight(){
this.right=right;
}
public static void main( String args[]){
Game game = new Game();
}
}
Code-snippet "Player":
Java:
public class Player extends GameObject{
public Player(final int xPos, final int yPos){
this.xPos=xPos;
this.yPos=yPos;
}
@Override
public void draw(Graphics g){
g.drawRect(xPos,yPos,10,40);
}
@Override
public void update(){
if(Game.getLeft()==true){ <------!!
System.out.println("left");
}
else if(Game.getRight()==true);{ <-----!!
System.out.println("right");
}
}
}
Das ist mein erstes Projekt, bin also für jede Hilfe dankbar. ;D
Cheers, Affenfaust