本次面向对象实践课课程作业要求实现一个blackJack–21点扑克游戏。
游戏规则自行了解,还是较有趣味性的。
一、游戏演示
二、设计类图:
三、代码实现
1、牌与牌堆类
/**
* 扑克花色
*/
public enum Color {
DIAMND, //方块
HEART, //红心
CLUB, //梅花
SPADE //黑桃
}
public class Card {
private int point;
private Color color;
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
public Color getColor() {
return color;
}
public void setColor(Color color) {
this.color = color;
}
@Override
public String toString() {
return "Card{" +
"point=" + point +
", color=" + color +
'}';
}
//将花色英文转成中文
public String transferColor(){
switch (color){
case SPADE:
return "方块";
case HEART:
return "红心";
case CLUB:
return "梅花";
case DIAMND:
return "黑桃";
}
return "";
}
//将点数1~13转成A~K
public String transferPoint(){
if(point <= 10 && point >1){
return Integer.toString(point);
} else {
switch (point){
case 1 :
return "A";
case 11 :
return "J";
case 12 :
return "Q";
case 13 :
return "K";
};
}
return "";
}
}
import java.util.Random;
public class Deck {
private Card [] cards;
private Integer index;
private Random random;
//初始化牌组
public Deck() {
random = new Random();
index = 0;
cards = new Card[52];
//牌组按方块、红心、梅花、黑桃0~13生成
for (int i = 0; i < 52; i++) {
cards[i] = new Card();
cards[i].setPoint(i % 13 + 1);
switch (i / 13){
case 0 :
cards[i].setColor(Color.SPADE);
break;
case 1 :
cards[i].setColor(Color.HEART);
break;
case 2 :
cards[i].setColor(Color.CLUB);
break;
case 3 :
cards[i].setColor(Color.DIAMND);
}
}
}
//使用shuffle算法洗牌
public void shuffle(){
for(int i =1;i <= 52;i ++){
int randId = random.nextInt(i);
swap(randId, i - i);
}
index = 0;
}
//发牌
public Card getOne(){
//牌不够
if(index == 53){
return null;
}
return cards[index ++];
}
private void swap(int randId, int i) {
Card temp = cards[i];
cards[i] = cards[randId];
cards[randId] =