黑马程序员技术交流社区
标题:
一道小题,希望能给出编程指导思想
[打印本页]
作者:
张其辉
时间:
2012-12-1 21:49
标题:
一道小题,希望能给出编程指导思想
本帖最后由 张其辉 于 2012-12-2 19:41 编辑
做出一幅扑克牌
(1)将这幅扑克牌显示出来.
(2)洗牌
分析:
(1)有一个实体 扑克牌
(2)有多张扑克牌 扑克[] a=new 扑克[52];
希望能用多态或继承来解决,希望指点一下思路该怎么下手,先不要给出代码
作者:
朝花夕拾
时间:
2012-12-2 11:36
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);
}
}
本人觉得用集合工具类就可以解决,而且很方便!
作者:
马海保
时间:
2012-12-2 11:49
将扑克牌对象设计为一个类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。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2