windows纸牌的java实现源代码及所用图片

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

package solitaire;

import java.awt.Image;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

import javax.swing.ImageIcon;

import javax.swing.JLabel;

public class Card extends JLabel

{

/** 纸牌花色的常量——红桃*/

public static final int HONG_TAO = 0;

/** 纸牌花色的常量——方片*/

public static final int FANG_PIAN = 1;

/** 纸牌花色的常量——黑桃*/

public static final int HEI_TAO = 10;

/** 纸牌花色的常量——梅花*/

public static final int MEI_HUA = 11;

/** 纸牌长度的常量*/

public static final int WIDTH = 71;

/** 纸牌高度的常量*/

public static final int HEIGHT = 96;

/* 纸牌点数*/

private int num;

/* 纸牌花色*/

private int color;

/* 纸牌是否牌面向上*/

private boolean op;

/** 构造方法*/

public Card()

{

op = false;

}

/** 构造方法*/

public Card(int n, int c)

{

this();

this.setSize(71, 96);

setAll(n, c);

}

/* 设置点数,花色及图片*/

private void setAll(int n, int c)

{

num = n;

color = c;

setImg();

}

/** 得到点数*/

public int getNum()

{

return num;

}

/** 得到花色*/

public int getColor()

{

return color;

}

/* 设置图片*/

private void setImg()

{

if (op)

{

switch (color)

{

case (HONG_TAO):

setIcon(new ImageIcon(Card.class.getResource("/images/红桃" + num

+ ".gif")));

break;

case (FANG_PIAN):

setIcon(new ImageIcon(Card.class.getResource("/images/方片" + num

+ ".gif")));

break;

case (HEI_TAO):

setIcon(new ImageIcon(Card.class.getResource("/images/黑桃" + num

+ ".gif")));

break;

case (MEI_HUA):

setIcon(new ImageIcon(Card.class.getResource("/images/梅花" + num

+ ".gif")));

break;

}

}/* 如果没有被翻开,则显示纸牌的背面*/

else

{

setIcon(new ImageIcon(Card.class.getResource("/images/背面.gif")));

}

}

/** 翻开纸牌*/

public void open()

{

op = true;

setImg();

}

/** 盖上纸牌*/

public void close()

{

op = false;

setImg();

}

/** 得到纸牌的翻开状态*/

public boolean isOpen()

{

return op;

}

}

package solitaire;

import ponent;

import java.awt.Paint;

import java.awt.Point;

import java.util.Stack;

import javax.swing.ImageIcon;

import javax.swing.JLabel;

public abstract class Cards extends Stack

{

/** 牌叠间的间隔*/

public static final int SPACE = Card.WIDTH / 2;

/** 正在排序的牌叠间纸牌的纵向间隔*/

public static final int PILES_SPACE = Card.HEIGHT / 15;

/** 边框*/

protected JLabel lab = new JLabel(new ImageIcon(

Cards.class.getResource("/images/边框.gif")));

/** 构造函数*/

public Cards()

{

super();

lab.setSize(Card.WIDTH, Card.HEIGHT);

}

/** 设置牌叠内所有纸牌的位置及边框的位置*/

public abstract void setLocation();

/** 判断当前位置及其上面的纸牌是否可以移动*/

public abstract boolean canMove(int index);

/** 判断纸牌是否可以加入牌叠,传入的参数为要移动的牌叠中最底下的一张*/ public abstract boolean canAdd(Card c);

/** 判断当前点是否落入了牌叠中*/

public abstract boolean at(Point p);

/** 判断纸牌是否是牌叠中的纸牌*/

public boolean in(Component c)

{

相关文档
最新文档