程序运行但没有显示

时间:2016-02-16 17:25:59

标签: java

我一直试图让我的角色在游戏中移动我想尝试编程一段时间。我设法让它显示但是当我添加了应该移动它的代码时它不再显示。我是编码的新手,所以我已经根据我在网上找到的一些代码进行了一些细微的改动,而且我不知道自己做错了什么。

Execute.java

import java.awt.EventQueue;
import java.awt.Graphics;
import javax.swing.JComponent;
import javax.swing.JFrame;

public class Execute extends JFrame {
 public Execute() {
  initUI();
 }

 public static void initUI() {
  JFrame jf = new JFrame();
  jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  jf.setSize(600,600);
  jf.setTitle("I am the salad baby");

  jf.add(new Board());
 }

 public static void main (String[] args) {
  EventQueue.invokeLater(new Runnable() {
   @Override
   public void run() {
    Execute ex = new Execute();
    ex.setVisible(true);
   }
  });
 }
}

Craft.java

import java.awt.image.BufferedImage;
import java.awt.event.KeyEvent;

public class Craft {
 private int dx;
 private int dy;
 private int x;
 private int y;
 private BufferedImage image;

 public Craft() {
  initCraft();
 }

 private void initCraft() {
  Painter painter = new Painter();
  BufferedImage image = painter.createBufImg("Images/SpriteSheet.png");
  x = 40;
  y = 60;
 }

 public void move() {
  x += dx;
  y += dy;
 }

 public int getX() {
  return x;
 }

 public int getY() {
  return y;
 }

 public BufferedImage getImage() {
  return image;
 }

 public void keyPressed(KeyEvent e) {
  int key = e.getKeyCode();

  if (key == KeyEvent.VK_LEFT) {
   dx = -1;
  }

  if (key == KeyEvent.VK_RIGHT) {
   dx = 1;
  }

  if (key == KeyEvent.VK_UP) {
   dy = -1;
  }

  if (key == KeyEvent.VK_DOWN) {
   dy = 1;
  }
 }

 public void keyReleased(KeyEvent e) {
   int key = e.getKeyCode();

   if (key == KeyEvent.VK_LEFT) {
    dx = 0;
   }

   if (key == KeyEvent.VK_RIGHT) {
    dx = 0;
   }

   if (key == KeyEvent.VK_UP) {
    dy = 0;
   }

   if (key == KeyEvent.VK_DOWN) {
   dy = 0;
  }
 }
}

Board.java

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JPanel;
import javax.swing.Timer;

public class Board extends JPanel implements ActionListener {
 private Timer timer;
 private Craft craft;
 private final int DELAY = 10;

 public Board() {
  initBoard();
 }

 private void initBoard() {
  addKeyListener(new TAdapter());
  setFocusable(true);

  craft = new Craft();

  timer = new Timer(DELAY, this);
  timer.start();
 }

 @Override
 public void paintComponent(Graphics g) {
  super.paintComponent(g);
  doDrawing(g);
  Toolkit.getDefaultToolkit().sync();
 }

 private void doDrawing(Graphics g) {
  Graphics2D g2d = (Graphics2D) g;
  g2d.drawImage(craft.getImage(), craft.getX(), craft.getY(), this);
 }

 @Override
 public void actionPerformed(ActionEvent e) {
  craft.move();
  repaint();
 }

 private class TAdapter extends KeyAdapter {
  @Override
  public void keyReleased(KeyEvent e) {
   craft.keyReleased(e);
  }

  @Override
  public void keyPressed(KeyEvent e) {
   craft.keyPressed(e);
  }
 }
}

Painter.java

import java.io.IOException;
import java.io.File;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.imageio.ImageIO;

public class Painter extends JPanel {
 BufferedImage createBufImg(String filepath) {
  try {
   return ImageIO.read(new File(filepath));
  } catch (IOException e) {
   System.out.println("Could not read image");
  }
  return null;
 }
}

任何输入都有帮助!

1 个答案:

答案 0 :(得分:0)

\