A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张其辉 中级黑马   /  2012-12-1 21:49  /  1043 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张其辉 于 2012-12-2 19:41 编辑

做出一幅扑克牌
(1)将这幅扑克牌显示出来.
(2)洗牌
分析:
(1)有一个实体 扑克牌   
(2)有多张扑克牌  扑克[] a=new 扑克[52];

希望能用多态或继承来解决,希望指点一下思路该怎么下手,先不要给出代码        

2 个回复

倒序浏览
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class PokerDemo {
        //在PokerDemo类中建立两个成员属性,一个控制花色,一个控制牌符
private String [] type={"黑桃","红桃","梅花","方片"};
private String [] val={"2","3","4","5",
                                                "6","7","8","9",
                                                "10","J","Q","K","A"};
        //然后将其存入ArrayList集合当中,遍历集合,相当于装牌动作
        public List<String> list=new ArrayList<String>();
        public void init(){
                for(int i=0;i<type.length;i++){
                        for(int j=0;j<val.length;j++){
                                list.add(type[i]+val[j]);
                        }
                }
                list.add("大王");
                list.add("小王");
        }

       
public static void main(String[] args) {
        PokerDemo pd=new PokerDemo();
        pd.init();
        System.out.println("洗牌了"+pd.list);
        //采用集合工具类的Collections的shuffle方法洗牌
        Collections.shuffle(pd.list);
        //输出洗牌后的结果
        System.out.println("洗牌后"+pd.list);
}
}
本人觉得用集合工具类就可以解决,而且很方便!
回复 使用道具 举报
将扑克牌对象设计为一个类Card,用于定义标识每一张特定扑克牌的牌面(花色和牌点)和显示操作。其中特意说明的属性是 索引标识属性index作为每张扑克牌唯一标识,是确定牌面花色和牌点的依据。它的值域为0 - 53的整数值,每一个index值与一张特定牌面的花色和牌点相对应:

0 - 12对应梅花Club的A 2 3 4 5 6 7 8 9 10 J Q K;

13 - 25对应方块Diamond的A 2 3 4 5 6 7 8 9 10 J Q K;

26 - 38对应红心Heart的A 2 3 4 5 6 7 8 9 10 J Q K;

39 - 51对应黑桃Spade的A 2 3 4 5 6 7 8 9 10 J Q K。

52对应小王牌L Trump,53对应大王牌B Trump

显然,index除以13所得到的整数商可以表示花色,而index模13所得到的余数恰恰是牌点(大小王牌的index值除外) 牌面显示属性face:在图形用户界面的应用程序中该属性是描述牌面图形的 复杂图形类;而在控制台文本界面的应用程序中该属性是字符数组类型,用于存放描述牌面的字符串。例如:“C-A”表示梅花A,“D-6”表示方块6,“H-10” 表示红心10,“S-Q”表示黑桃Q。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马