Permalänk

Java-ImageIcon problem

Hej, jag har försökt jobba med en version av det klassiska spelet Space Invaders och stött på ett problem.
Jag försöker använda en bakgrundsbild istället för en helt svart bakgrund samt använda en bild på en alien som fiende i spelet men detta verkar inte fungera.
Bakgrunden fortsätter bara vara svart och fienderna blir osynliga, bilderna jag vill använda läses inte in av programmet vilket lämnar mig oerhört konfunderad.
Skulle vara oerhört tacksam om någon kunde se felet i min kod och hjälpa mig

import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.image.BufferedImage; public class SpaceInvaders extends JFrame implements Runnable { public static int WIDTH = 600; public static int HEIGHT = 400; private int gameSpeed = 100;//Try 500 AlienArmy army = null; Ship ship = null; private boolean paused = false; private int score = 0; Graphics offscreen_high; BufferedImage offscreen; Image backGroundImage = null; Image alienImage = null; public SpaceInvaders(String frameTitle) { super(frameTitle); backGroundImage = new javax.swing.ImageIcon("Bakgrund.jpg").getImage(); alienImage = new javax.swing.ImageIcon("alien.jpg").getImage(); ship = new Ship(this); army = new AlienArmy(ship, this, alienImage); addMouseListener(ship); addMouseMotionListener(ship); offscreen = new BufferedImage(WIDTH, HEIGHT,BufferedImage.TYPE_INT_RGB); offscreen_high = offscreen.createGraphics(); setBackground(Color.black); setSize(WIDTH, HEIGHT); setVisible(true); startGame(); } public void pauseGame(boolean state) { paused = state; } public void hitAlienScore() { score += 5; System.out.println("Current Score = "+score); } public void shotShip() { score -= 20; System.out.println("Current Score = "+score); } public void startGame() { Thread thread = new Thread(this); thread.start(); } public void paint(Graphics g) { offscreen_high.setColor(Color.black); offscreen_high.fillRect(0,0, WIDTH, HEIGHT); offscreen_high.drawImage(backGroundImage, 0, 0, this); army.drawArmy(offscreen_high); ship.drawShip(offscreen_high); g.drawImage(offscreen,0,0,this); } public void update(Graphics g) { paint(g); } public void moveAliens() { army.moveArmy(); } public void run() { int count = 0; while(true) { try { Thread.sleep(gameSpeed); } catch(InterruptedException ie) { } if (!paused) { if (count >= 5) { moveAliens(); count = 0; } } repaint(); count ++; } } public AlienArmy getAlienArmy() { return army; } public static void main(String []args) { SpaceInvaders invaders = new SpaceInvaders("Space Invaders"); } }

import java.awt.*; public class Alien { public static int ALIEN_HEIGHT = 25; public static int ALIEN_WIDTH = 15; private int leftPosition = 0; private int heightPosition = 0; private boolean hitState = false; private Image alienImage = null; SpaceInvaders spaceInvaders = null; public Alien(Image ai, SpaceInvaders si) { alienImage = ai; spaceInvaders = si; } public boolean hasBeenHit() { return hitState; } public boolean hitAlien(int x, int y) { if (hitState) { return false; } if ((x >= leftPosition) && (x <= (leftPosition+ALIEN_WIDTH))) { //X is ok, now lets check the Y range if ((y >= heightPosition) && (y <= (heightPosition+ALIEN_HEIGHT))) { hitState = true; return true; } } return false; } public void setPosition(int x, int y) { leftPosition = x; heightPosition = y; } public int getXPos() { return leftPosition; } public int getYPos() { return heightPosition; } public void drawAlien(Graphics g) { if (!hitState) { g.drawImage(alienImage, leftPosition, heightPosition, spaceInvaders); } } }

Permalänk
Medlem

Vart lägger du filerna då?
Prova att lägga dem i ex. C:\ och sen får du troligen peka såhär: C:\\<bildnamn>.<filändelse>

Visa signatur

Citera eller nämn gärna mig (@ToJa92) om du svarar på något jag skrivit.
Uppskattar du eller blir hjälpt av ett inlägg jag skrivit är jag tacksam om du gillar det.

Permalänk

Jag har lagt in filerna via Eclipse i exakt samma projekt som class filerna är i, det är ju där dom skall vara väl?
Ska testa att peka till dom och se vad som händer.

Permalänk

Hur pekar jag till filen om den ligger på C:\alien.jpg ?

alienImage = new javax.swing.ImageIcon(C:\\<alien>.<jpg>).getImage();
fungerar ej