import edu.neu.ccs.*; import edu.neu.ccs.gui.*; import edu.neu.ccs.codec.*; import edu.neu.ccs.console.*; import edu.neu.ccs.filter.*; import edu.neu.ccs.jpf.*; import edu.neu.ccs.parser.*; import edu.neu.ccs.pedagogy.*; import edu.neu.ccs.quick.*; import edu.neu.ccs.util.*; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.awt.font.*; import java.awt.image.*; import javax.swing.*; import javax.swing.border.*; import java.io.*; import java.util.*; import java.math.*; import java.beans.*; import java.lang.reflect.*; import java.net.*; import java.util.regex.*; public class CardFun extends DisplayPanel { String urlString = "http://www.ccs.neu.edu/jpt/images/jfitz_cards/"; ImagePaintableLite[] images = WebImageTools.readImagesAsPaintableLite(urlString,""); MutatableWrapper[] mutatables = new MutatableWrapper[images.length]; int size = 150; Rectangle2D bounds = new Rectangle2D.Double(0, 0, size, size); { for (int i = 0; i < images.length; i++) { int w = images[i].getImageWidth(); int h = images[i].getImageHeight(); int dw = (size - w) / 2; int dh = (size - h) / 2; images[i].setTopLeftCorner(dw, dh); mutatables[i] = new MutatableWrapper(images[i]); mutatables[i].setDefaultBounds2D(bounds); // int degrees = 45 * MathUtilities.randomInt(-1, 1); // mutatables[i].addPostMutation(Mutator.rotate(degrees)); } } public CardFun() { addObject(randomCardPanel(5)); frame("Card Fun"); } public int randomCardIndex() { return MathUtilities.randomInt(0, images.length); } public TablePanel randomCardPanel(int howmany) { TablePanel panel = new TablePanel(1, howmany); int[] indices = ProbStatTools.selectWithNoRepetition(52, howmany); int k = indices.length; for (int i = 0; i < k; i++) panel.addObject(mutatables[indices[i]]); return panel; } }