java - 卡牌洗牌和显示小程序

标签 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 );

    }
}          

最佳答案

关于混排,Collections.shuffle ( images ); 将随机排列 images 的元素。但我建议添加这一行:

private final Random random = new Random(4454776669L);

并使用Collections.shuffle(images, random);来代替。这里的数字 4454776669L 是伪随机数生成器的种子,当您使用相同的种子时,您会重现相同的随机数序列,如果您想重现相同的游戏或仅用于调试目的,这可能很有用。

关于java - 卡牌洗牌和显示小程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14375391/

相关文章:

java - 线程中的异常 "AWT-EventQueue-0"java.lang.ArrayIndexOutOfBoundsException : No such child

java - java 中的 netlogo

Java - 如何为从数组生成的每个图 block 赋予唯一的 "ID"

iphone - Objective C 中 float 的随机范围?

applet 调用 java web 服务

java - 如何在 Bonita BPM 表单中显示小程序?

java - .setBounds 不适用于 JLabel?

java - 当线程引用未传递时,下面的程序如何执行

javascript - 如何生成一个范围内的随机数但排除一些?

java - 如何在 Rhino 中获取当前脚本名称和行号?