准备工作
新建一个Poker的包,在Poker里新建一个Myclass和Poker(用来记录扑克牌的数据)的类
这里会有一个经常出现的报错(编码GBK不可映射字符)解决方法:需要在每个build.gradle中加入一串固定的代码(具体操作请见我的另一篇文章《java编程中的一些小知识》一文)
先生成一副扑克牌
一、用面向过程的方法(没有打乱效果)
Myclass.java
public class Myclass {
public static void main(String[] args) {
{
//生成一副牌
//准备一个数组保存所有点数
String[] dots = new String[]{
"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"
};
//准备一个数组保存所有点数
String[] pics = new String[]{
"♣", "♦", "♥", "♠"
};
//数组保存所有的扑克牌
Poker[] pokers = new Poker[52];
int index = 0;
for(String dot:dots){
for(String pic:pics){
//创建一张牌
Poker poker = new Poker();
poker.dot = dot;
poker.pic = pic;
pokers[index] = poker;
index++;
}
}
//输出一副牌
for(Poker poker:pokers){
System.out.print(poker.dot+poker.pic+" ");
}
}
}
}
Poker.java
package com.example.lib.Poker;
/**
* @Description
* @Author 空添
*/
/**
*一副牌的点数:2 3 4 5 6 7 8 9 10 J Q K A
* 一副牌的花色:♠ ♣ ♥ ♦
*/
public class Poker {
public String dot;//记录点数
public String pic;//记录花色
}
输出结果:
2♣ 2♦ 2♥ 2♠ 3♣ 3♦ 3♥ 3♠ 4♣ 4♦ 4♥ 4♠ 5♣ 5♦ 5♥ 5♠ 6♣ 6♦ 6♥ 6♠ 7♣ 7♦ 7♥ 7♠ 8♣ 8♦ 8♥ 8♠ 9♣ 9♦ 9♥ 9♠ 10♣ 10♦ 10♥ 10♠ J♣ J♦ J♥ J♠ Q♣ Q♦ Q♥ Q♠ K♣ K♦ K♥ K♠ A♣ A♦ A♥ A♠
二、用面向对象的方法
1.分析功能、抽取类:PokerManage和Poker
2.开始实现功能:
1.Poker类,管理一张牌(花色、点数)
2.PokerManage类,管理一副牌的所有操作(生成、洗牌、显示)
Poker,java
package com.example.lib.Poker1;
/**
* @Description
* @Author 空添
*/
public class Poker {
private String dot;//记录点数
private String pic;//记录花色
//提供构造方法
public Poker(String dot, String pic) {
this.dot = dot;
this.pic = pic;
}
//提供set和get方法
public String getDot() {
return dot;
}
public void setDot(String dot) {
this.dot = dot;
}
public String getPic() {
return pic;
}
public void setPic(String pic) {
this.pic = pic;
}
//重写toString方法便于调试
@Override
public String toString() {
return dot+pic ;
}
}
Constants.java
package com.example.lib.Poker1;
/**
* @Description
* @Author 空添
*/
public class Constants {
//点数,加static以后可以直接调用,不用创建对象
//final 修饰成员变量表示这是一个常量,不能被更改,而这个常量通常使用大写字母
public static final String[] POKER_DOTS = new String[]{
"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"
};
//花色
public static final String[] POKER_PICS = new String[]{
"♣", "♦", "♥", "♠"
};
}
PokerManager.java
package com.example.lib.Poker1;
import java.util.Collections;
/**
* @Description
* @Author 空添
*/
public class PokerManage {
//保存一副牌
private java.util.ArrayList pokers;
//实现构造方法
public PokerManage(){
//初始化数组
pokers = new java.util.ArrayList<>();
}
//生成一副牌
public void genersteOnePokerCards(){
for (int i = 0; i < Constants.POKER_DOTS.length ; i++) {
//取出i对应的点数
String dot = Constants.POKER_DOTS[i];
//为这个点数创建四种花色
for (int j = 0; j
MyClass.java
package com.example.lib.Poker1;
import java.util.Collections;
/**
* @Description
* @Author 空添
*/
public class MyClass {
public static void main(String[] args) {
//创建管理器
PokerManage manager = new PokerManage();
//生成一副牌
manager.genersteOnePokerCards();
//洗牌
manager.shuffle();
//显示一副牌
manager.show();
}
}
输出结果:
3♠9♦5♠K♦4♣4♥10♣K♣
8♣9♥6♥2♦6♦6♣Q♣2♣
A♥10♥7♣9♣4♠3♣5♦Q♠
J♦10♠7♥J♣J♥A♦J♠3♥
Q♦5♣8♠2♠8♥K♠7♠A♠
10♦9♠Q♥K♥8♦4♦6♠2♥
A♣7♦3♦5♥