【发布时间】:2014-01-28 07:42:22
【问题描述】:
英语不是我的母语,如有错误请见谅。我必须用 Java 制作泡泡射击游戏。我想为气泡使用图像,并且希望随机选择图像。我使用了Random 和ImageIcon 类。我的程序在编译时没有显示任何内容,我不知道问题出在哪里。我是 Java 初学者。
这是我的游戏类的代码:
import java.awt.Graphics;
import java.awt.Image;
import java.util.Vector;
import javax.swing.JPanel;
public class Game extends JPanel{
private static final long serialVersionUID = 1L;
//what the balls are like
public final static int START_BALLS=40;
public static Vector<Ball> balls = new Vector<Ball>();
private Image img;
private Graphics graphics;
public Game() {
for(int i=0; i<START_BALLS; i++) {
balls.add(new Ball());
}
}
public void paint(Graphics g) {
img = createImage(null);
graphics = img.getGraphics();
paintComponent(graphics);
g.drawImage(img, 0, 0, null);
repaint();
}
public void paintComponet(Graphics g) {
for(int i=0; i<balls.size(); i++) {
Ball b=(Ball)balls.get(i);
b.draw(g);
}
}
public static void main(String [] args) {
new Frame();
Game game = new Game();
new Game();
Window.window.add(game);
}
}
以及气泡的类:
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.util.Random;
import javax.swing.ImageIcon;
public class Ball {
Random random = new Random();
final String[] image_paths = new String[] {"balls/peg_0.png",
"balls/peg_1.png","balls/peg_2.png","balls/peg_3.png",
"balls/peg_4.png","balls/peg_5.png"};
String randomBalls;
public Image image;
public Ball(){
randomBalls = image_paths[random.nextInt(image_paths.length)];
ImageIcon poza = new ImageIcon(randomBalls);
image=poza.getImage();
}
public void draw(Graphics g){
g.drawImage(image, 0, 0, null, null);
}
}
我的程序有什么问题?
【问题讨论】:
-
如果您只是输入没有随机性的文件名,代码是否有效?因为你这里的东西没有明显的问题。
-
main 方法对我来说也有点奇怪。不应该是 Frame frame = new Frame(); frame.add(游戏); ?不创建两个 Game 类实例?
-
谁能给我一个绘画方法的例子,它应该是什么样子?我知道这可能是一个愚蠢的问题,但我不知道该怎么做。感谢您的所有回答
-
那些“答案”是 cmets。请参阅我的actual answer,它显示了一个工作示例。
标签: java image swing random paintcomponent