内容大多来自网络,非原创作品。
纸牌游戏思路
首先分析要面临的问题,问题分析清楚了,离解决问题就不远了。
1 首先要画出对象,即Card类和Player类
2 扑克花色和点数的算法
3 程序体系结构设计
一 类方法属性
Card.java
有点数和花色的属性,注意数据结构是数组
public class Card {
public int[] num = new int[13]; //点数
public String[] cName ={"黑桃","红心","方块","草花"}; //花色
}
Card 也是Player属性之一
public class Player {
public Card card;
public int nums = 13;
public Player(){
card = new Card();
for(int i=0; i<nums; i++){
card.num[i] = 0;
}
}
}
1 点数
1>先生成0~51随机数
lCard = new ArrayList<Integer>();
for(int i=0; i<52; i++){
dd = Math.random()*52; //0~51随机数
nums = (int)Math.rint(dd); //取整
while(lCard.contains(nums) || nums == 52){
dd = Math.random()*52;
nums = (int)Math.rint(dd);
}
lCard.add(nums);
}
2 > 用生成的随机数除4取商
int data =0; //点数
data = p.card.num[i]/4;
2 花色
用生成的随机数除4取余
int type =0; //花色
type = p.card.num[i]%4;
三 玩牌类方法
PlayCard.java 主要3个方法
1 洗牌
public List shuffle(){
int[] cards ={};
int nums;
double dd;
boolean flag = false; //标识是否有重复的值
lCard = new ArrayList<Integer>();
for(int i=0; i<52; i++){
dd = Math.random()*52; //0~51随机数
nums = (int)Math.rint(dd); //取整
while(lCard.contains(nums) || nums == 52){
dd = Math.random()*52;
nums = (int)Math.rint(dd);
}
lCard.add(nums);
}
return lCard;
}
2 发牌
public void dealCard(){
int j=0;
for(int i=0; i<nums; i++){
p1.card.num[i]=lCard.get(j++);
p2.card.num[i]=lCard.get(j++);
p3.card.num[i]=lCard.get(j++);
p4.card.num[i]=lCard.get(j++);
}
}
3 显示牌
//打印牌
public void showCard(Player p){
int type =0; //花色
int data =0; //点数
for(int i=0; i<p.card.num.length; i++){
type = p.card.num[i]%4;
data = p.card.num[i]/4;
switch(data){
case 0:
System.out.println("-->"+p.card.cName[type] + "K");
break;
case 1:
System.out.println("-->"+p.card.cName[type] + "A");
break;
case 11:
System.out.println("-->"+p.card.cName[type] + "J");
break;
case 12:
System.out.println("-->"+p.card.cName[type] + "Q");
break;
default:
System.out.println("-->"+p.card.cName[type] + data);
}
}
}
打印牌包括了花色和点数的算法
PlayCard.java类的主方法
public void run() {
// TODO Auto-generated method stub
p1 = new Player();
p2 = new Player();
p3 = new Player();
p4 = new Player();
//0 洗牌
this.shuffle();
//1 发牌
this.dealCard();
//2 打印牌
System.out.println("开始打印P1的牌======");
this.showCard(p1);
System.out.println("====P1打印结束!!!");
System.out.println("开始打印P2的牌======");
this.showCard(p2);
System.out.println("====P2打印结束!!!");
System.out.println("开始打印P3的牌======");
this.showCard(p3);
System.out.println("====P3打印结束!!!");
System.out.println("开始打印P4的牌======");
this.showCard(p4);
System.out.println("====P4打印结束!!!");
}
四 程序体系机构示意图