// // class Card, from solitaire program // written by Tim Budd, April 1997 // import java.awt.*; public class Card { // public constants for card width and suits final public static int width = 50; final public static int height = 70; final public static int heart = 0; final public static int spade = 1; final public static int diamond = 2; final public static int club = 3; // internal data fields for rank and suit private boolean faceup; private int r; private int s; // constructor Card (int sv, int rv) { s = sv; r = rv; faceup = false; } // access attributes of card public int rank () { return r; } public int suit() { return s; } public boolean faceUp() { return faceup; } public void flip() { faceup = ! faceup; } public Color color() { if (faceUp()) if (suit() == heart || suit() == diamond) return Color.red; else return Color.black; return Color.yellow; } public void draw (Graphics g, int x, int y) { String names[] = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}; // clear rectangle, draw border g.clearRect(x, y, width, height); g.setColor(Color.blue); g.drawRect(x, y, width, height); // draw body of card g.setColor(color()); if (faceUp()) { g.drawString(names[rank()], x+3, y+15); if (suit() == heart) { g.drawLine(x+25, y+30, x+35, y+20); g.drawLine(x+35, y+20, x+45, y+30); g.drawLine(x+45, y+30, x+25, y+60); g.drawLine(x+25, y+60, x+5, y+30); g.drawLine(x+5, y+30, x+15, y+20); g.drawLine(x+15, y+20, x+25, y+30); } else if (suit() == spade) { g.drawLine(x+25, y+20, x+40, y+50); g.drawLine(x+40, y+50, x+10, y+50); g.drawLine(x+10, y+50, x+25, y+20); g.drawLine(x+23, y+45, x+20, y+60); g.drawLine(x+20, y+60, x+30, y+60); g.drawLine(x+30, y+60, x+27, y+45); } else if (suit() == diamond) { g.drawLine(x+25, y+20, x+40, y+40); g.drawLine(x+40, y+40, x+25, y+60); g.drawLine(x+25, y+60, x+10, y+40); g.drawLine(x+10, y+40, x+25, y+20); } else if (suit() == club) { g.drawOval(x+20, y+25, 10, 10); g.drawOval(x+25, y+35, 10, 10); g.drawOval(x+15, y+35, 10, 10); g.drawLine(x+23, y+45, x+20, y+55); g.drawLine(x+20, y+55, x+30, y+55); g.drawLine(x+30, y+55, x+27, y+45); } } else { // face down g.drawLine(x+15, y+5, x+15, y+65); g.drawLine(x+35, y+5, x+35, y+65); g.drawLine(x+5, y+20, x+45, y+20); g.drawLine(x+5, y+35, x+45, y+35); g.drawLine(x+5, y+50, x+45, y+50); } } }