任务目的
1.培养编程思维,提高分析问题能力
2.掌握类的抽象与设计
3.掌握循环,分支条件的用法
4.掌握各种集合类的使用(Map,List,Set)
任务描述
1.定义一个单张扑克类(考虑需要哪些属性),定义一个一副扑克牌类,该类包含一个单张扑克对象的数组(不考虑大小王)。实现一个模拟扑克发牌洗牌的算法;
2.电脑随机发出5张牌,判断是以下哪种牌型?(提示,利用Map,List,Set等各种集合的特性可以简化判断)
package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Poker poker = new Poker();
poker.output();
poker.shuffle();//洗牌
System.out.println();
poker.output();
}
}
package com.company;
/**
* Created by ttc on 17-12-29.
*/
public class Poker {
private Card[] cards=new Card[52];
private String[]colors={"红桃", "方片", "黑桃","草花"};
private int[]valus={1,2,3,4,5,6,7,8,9,10,11,12,13};
public Poker()
{
for (int i = 0;i<cards.length;i++)
{
Card card = new Card();
card.setColor(colors[i/13]);
card.setValue(valus[i%13]);
cards[i]=card;
}
}
public void output() {
for (int i = 0; i < cards.length; i++) {
if (i % 13 == 0) {
System.out.println();
}
Card card = cards[i];
System.out.print(card + "\t");
}
}
//洗牌方法
public void shuffle()
{
for(int i = 0; i < cards.length; i++)
{
//生成一个0-51之间的随机数,拿这个随机数作为数组下标,找到一张牌
int index = (int)(Math.random() * 52);
Card cardTemp = cards[index];
//和当前的牌进行交换
cards[index] = cards[i];//随机找到的那张牌的位置的牌换成当前循环到的那张牌
cards[i] = cardTemp;//当前的牌换成随机出来的那张牌
}
}
}
package com.company;
/**
* Created by ttc on 17-12-28.
*/
public class Card {
private String color;
private int value;
public String toString()
{
String str="";
if (value==11)
{
str="J";
}
else if (value==12)
{
str="Q";
}
else if (value==13)
{
str="K";
}
else if (value==1)
{
str="A";
}
else
{
str = value+"";
}
return color+str;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
网友评论