我已经编写了一些代码来创建我下载的卡片的ArrayList,现在我试图将它们随机播放,然后使用paint方法显示它们。如何使用g.drawImage显示十张卡?
import java.awt.Image;
import java.applet.Applet;
import java.util.*;
public class DeckofCards1 extends Applet {
public void init ( ) {
String[] suits = {"c", "s", "h", "d"};
String[] values = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "j", "q", "k"};
ArrayList<Image> images = new ArrayList<Image>( );
for(String suit : suits){
for(String value : values){
Image img = getImage ( getDocumentBase ( ), "images/" + suit + value + ".gif" );
images.add(img);
}
}
Collections.shuffle ( images ); //get ten cards randomly?
}
public void paint ( Graphics g ) { //display ten cards here?
g.drawImage ( img, 10, 10, this );
g.drawImage ( img, 10, 10, this );
g.drawImage ( img, 10, 10, this );
g.drawImage ( img, 10, 10, this );
g.drawImage ( img, 10, 10, this );
g.drawImage ( img, 10, 30, this ); //what goes in place of img (which I know isn't right, simply a placeholder for now
g.drawImage ( img, 10, 30, this );
g.drawImage ( img, 10, 30, this );
g.drawImage ( img, 10, 30, this );
g.drawImage ( img, 10, 30, this );
}
}
答案 0 :(得分:1)
我快速浏览了一下,好像你可以使用这段代码来获取img:
BufferedImage img = ImageIO.read(imageSrc);
来源:http://docs.oracle.com/javase/tutorial/2d/images/drawimage.html
此外,根据您想要绘制这些图像的位置,您可以将其置于循环中并使用循环变量控制坐标。
使图像成为类中的变量(因此可以在绘图函数中使用它)。
public class DeckofCards1 extends Applet {
private ArrayList<Image> images;
....
在init函数中,从
更改图像创建行Image img = getImage ( getDocumentBase ( ), "images/" + suit + value + ".gif");
到
BufferedImage img = ImageIO.read(new File("images/" + suit + value + ".gif"));
在你的绘画功能中,更改它以使其循环通过图像数组,并为每个绘制它,使用此
绘制它for(int i = 0; i < images.size(); i++) {
g.drawImage(images.get(i), i*10, i*10, null);
}
查看此pastebin以获取代码的更新版本,如果您有图像,则应编译该代码:http://pastebin.com/43t7zhYL
使用不同的图像读取方法更新了pastebin:http://pastebin.com/15tigYFd
答案 1 :(得分:1)
关于改组,Collections.shuffle ( images );
将随机置换images
的元素。但我建议添加这一行:
private final Random random = new Random(4454776669L);
并改为使用Collections.shuffle ( images, random);
。这里的数字4454776669L是伪随机数生成器的种子,当您使用相同的种子时,您会重现相同的随机数序列,如果您想要重现同一个游戏或仅用于调试目的,这将非常有用。