Hallo.
Als erstes mal... Ich bin neu hier, ich hoffe ich mach jetzt nichts falsch oder so.
Hab bezüglich meines Problems nichts gefunden, also wäre es sehr net wenn mir jemand helfen könnte.
Kurze Vorgeschichte: Bin noch recht unwissend mit Java. Hab zwar schon einige Erfahrungen gesammelt (1.Jahr an einer EDV Schule Java-Basics, Plugins für Minecraft) hab aber noch viel zu lernen.
Ich möchte mir ein Jump-and-Run Game schreiben. Läuft auch im Moment alles gut bis auf ein Problem. Bin noch recht am Anfang deshalb nervt mich das recht.
Also ich will ein Image auf ein Panel zeichnen. Hört sich ja eigentlich leicht an was es eigentlich auch ist. Nur meine Koordinaten sind immer verschieden. Sie sind anders wenn ich sie in einer Methode zuweise und auch wenn ich nur eine if-Anweisung darüber habe.
Ich komm einfach nicht drauf was das Problem ist.
Hier Code + Pics:
So wie ich es haben will (Pic):
ImageShack® - Online Photo and Video Hosting
Aber nur mit diesem Code:
Nun da ich aber die Variablen nicht bei jedem repaint() auf diese Werte setzen will, dachte ich mir ich mach einer boolean Variable die sagt das programm läuft zum ersten mal und nur dann setzt er die variablen so.
Gesagt getan:
Doch die Koordinaten sind falsch:
ImageShack® - Online Photo and Video Hosting
Gut Gut Warum setz ich die Variablen nicht gleich in der Start methode?
Ergebnis:
ImageShack® - Online Photo and Video Hosting
Mit diesem Code:
Ich versteh das nun wirklich nicht.
Zusatzinfo:
OS: Win7 64bit
IDE: Netbeans 7.0
Hoffe jemand kann mir helfen.
Danke im Vorraus.
Weed
Als erstes mal... Ich bin neu hier, ich hoffe ich mach jetzt nichts falsch oder so.
Hab bezüglich meines Problems nichts gefunden, also wäre es sehr net wenn mir jemand helfen könnte.
Kurze Vorgeschichte: Bin noch recht unwissend mit Java. Hab zwar schon einige Erfahrungen gesammelt (1.Jahr an einer EDV Schule Java-Basics, Plugins für Minecraft) hab aber noch viel zu lernen.
Ich möchte mir ein Jump-and-Run Game schreiben. Läuft auch im Moment alles gut bis auf ein Problem. Bin noch recht am Anfang deshalb nervt mich das recht.
Also ich will ein Image auf ein Panel zeichnen. Hört sich ja eigentlich leicht an was es eigentlich auch ist. Nur meine Koordinaten sind immer verschieden. Sie sind anders wenn ich sie in einer Methode zuweise und auch wenn ich nur eine if-Anweisung darüber habe.
Ich komm einfach nicht drauf was das Problem ist.
Hier Code + Pics:
So wie ich es haben will (Pic):
ImageShack® - Online Photo and Video Hosting
Aber nur mit diesem Code:
Java:
private void startGame(String player) {
currentPlayer = player;
pnMainMenu.setVisible(false);
this.remove(pnMainMenu);
this.add(pnGame);
pnGame.setSize(800, 600);
pnGame.setVisible(true);
this.setSize(806, 603);
Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
int posX = (screen.width / 2) - 403;
int posY = (screen.height / 2) - 301 - 50;
setLocation(posX, posY);
repaint();
running = true;
firstRun = true;
Thread playerMoveThread = new Thread(new MovePlayer(sf));
playerMoveThread.start();
repaint();
}
@Override
public void paint(Graphics g) {
super.paint(g);
g = pnGame.getGraphics();
if (running == true) {
int level = Player.getLevel(currentPlayer);
Level.loadLevel(level, g);
Graphics2D g2d = (Graphics2D) g;
Rectangle playerRect = new Rectangle(altX, altY, 25, 22);
g2d.setColor(pnGame.getBackground());
g2d.draw(playerRect);
g2d.fill(playerRect);
playerX = 30;
playerY = pnGame.getHeight() - 47;
altX = playerX;
altY = playerY;
firstRun = false;
g2d.drawImage(playerImg, playerX, playerY, 25, 22, pnGame);
}
}
Nun da ich aber die Variablen nicht bei jedem repaint() auf diese Werte setzen will, dachte ich mir ich mach einer boolean Variable die sagt das programm läuft zum ersten mal und nur dann setzt er die variablen so.
Gesagt getan:
Java:
private void startGame(String player) {
currentPlayer = player;
pnMainMenu.setVisible(false);
this.remove(pnMainMenu);
this.add(pnGame);
pnGame.setSize(800, 600);
pnGame.setVisible(true);
this.setSize(806, 603);
Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
int posX = (screen.width / 2) - 403;
int posY = (screen.height / 2) - 301 - 50;
setLocation(posX, posY);
repaint();
running = true;
firstRun = true;
Thread playerMoveThread = new Thread(new MovePlayer(sf));
playerMoveThread.start();
repaint();
}
@Override
public void paint(Graphics g) {
super.paint(g);
g = pnGame.getGraphics();
if (running == true) {
int level = Player.getLevel(currentPlayer);
Level.loadLevel(level, g);
Graphics2D g2d = (Graphics2D) g;
Rectangle playerRect = new Rectangle(altX, altY, 25, 22);
g2d.setColor(pnGame.getBackground());
g2d.draw(playerRect);
g2d.fill(playerRect);
if(firstRun == true){
playerX = 30;
playerY = pnGame.getHeight() - 47;
altX = playerX;
altY = playerY;
firstRun = false;
}
g2d.drawImage(playerImg, playerX, playerY, 25, 22, pnGame);
}
}
Doch die Koordinaten sind falsch:
ImageShack® - Online Photo and Video Hosting
Gut Gut Warum setz ich die Variablen nicht gleich in der Start methode?
Ergebnis:
ImageShack® - Online Photo and Video Hosting
Mit diesem Code:
Java:
private void startGame(String player) {
currentPlayer = player;
pnMainMenu.setVisible(false);
this.remove(pnMainMenu);
this.add(pnGame);
pnGame.setSize(800, 600);
pnGame.setVisible(true);
this.setSize(806, 603);
Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
int posX = (screen.width / 2) - 403;
int posY = (screen.height / 2) - 301 - 50;
setLocation(posX, posY);
repaint();
running = true;
firstRun = true;
playerX = 30;
playerY = pnGame.getHeight() - 47;
altX = playerX;
altY = playerY;
firstRun = false;
Thread playerMoveThread = new Thread(new MovePlayer(sf));
playerMoveThread.start();
repaint();
}
@Override
public void paint(Graphics g) {
super.paint(g);
g = pnGame.getGraphics();
if (running == true) {
int level = Player.getLevel(currentPlayer);
Level.loadLevel(level, g);
Graphics2D g2d = (Graphics2D) g;
Rectangle playerRect = new Rectangle(altX, altY, 25, 22);
g2d.setColor(pnGame.getBackground());
g2d.draw(playerRect);
g2d.fill(playerRect);
g2d.drawImage(playerImg, playerX, playerY, 25, 22, pnGame);
}
}
Ich versteh das nun wirklich nicht.
Zusatzinfo:
OS: Win7 64bit
IDE: Netbeans 7.0
Hoffe jemand kann mir helfen.
Danke im Vorraus.
Weed
Zuletzt bearbeitet: