卡片组随机播放并显示小程序

时间:2013-01-17 09:02:18

标签: java random applet shuffle

我已经编写了一些代码来创建我下载的卡片的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 );

    }
}          

2 个答案:

答案 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是伪随机数生成器的种子,当您使用相同的种子时,您会重现相同的随机数序列,如果您想要重现同一个游戏或仅用于调试目的,这将非常有用。