1.首先创建四种花色:黑桃,红桃,梅花,方片,十三种点数2-10,j,q,k,a,不考虑大小王,
2.创建两名玩家,玩家至少有ID,姓名,手牌,
3.洗牌,将创建的扑克牌的顺序打乱,
4.按照一人一张的方式每人人发两张,
5.规则为,取两个人手中点数最大的牌进行比较,点数大的赢;若各自相同,则按花色进行比较,黑红梅方,
6.会决出获胜玩家,
7.玩家的ID是int类型的,如果不匹配,则会抛出异常,
8.最后会输出玩家各自的手牌。
原来写到一半,发现写不下去了(给自己挖的坑太多了)然后上网找了篇比较简洁的学习学习,代码如下
public class Cards {
//首先创建四种花色:黑桃,红桃,梅花,方片,十三种点数2-10,j,q,k,a,不考虑大小王
public String design;
public String point;
public Cards(String design,String point) {
this.design = design;
this.point = point;
}
}
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Player{
//创建两名玩家,玩家至少有ID,姓名,手牌
public int id;
public String name;
Set<Cards> handCard;
public Player(int ID,String name) {
this.id = ID;
this.name = name;
handCard = new HashSet<Cards>();
}
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class Test {
/*
* 1.首先创建四种花色:黑桃,红桃,梅花,方片,十三种点数2-10,j,q,k,a,不考虑大小王
* 2.创建两名玩家,玩家至少有ID,姓名,手牌,
* 3.洗牌,将创建的扑克牌的顺序打乱,
* 4.按照一人一张的方式每人人发两张
* 5.规则为,取两个人手中点数最大的牌进行比较,点数大的赢;若各自相同,则按花色进行比较,黑红梅方
* 6.会决出玩家
* 7.玩家的ID是int类型的,如果不匹配,则会抛出异常
* 8.最后会输出玩家各自的手牌
*/
List<Cards> allCards;
public Test() {
allCards = new ArrayList<Cards>();
}
/*创建扑克牌,他这是用数组来实现,相对于我的暴力破解,更高效率
* String[] a = new String(),刚开始的时候想到这个,但是报错了,就没有想到继续赋值给他们了
*/
public void setUp() {
String[] design = {"黑桃","红桃","梅花","方块"};
String[] point = {"A","K","Q","J","10","9","8","7","6","5","4","3","2"};
for(int i = 0; i < design.length;i++) {
for(int j = 0; j < point.length;j++) {
Cards c = new Cards(design[i],point[j]);
allCards.add(c);
}
}
}
//访问扑克牌,使用for each方法访问allCards的每一个对象
public void printCards() {
System.out.println("扑克牌为:");
for (Cards cards : allCards) {
System.out.println(cards.design+cards.point+",");
}
}
//创建玩家,输入ID和姓名,使用捕获异常,利用try,catch(Exception e)
int id = 0;
String name;
public int createPlayer(int num) {
System.out.println("------请输入第"+num+"家的ID-------");
Scanner sc = new Scanner(System.in);
try {
id = sc.nextInt();
}catch(Exception e) {
System.out.println("请输入一个整数ID");
return this.createPlayer(num);
}
System.out.println("------请输入第"+num+"家的姓名-------");
name = sc.next();
return 0;
}
//发牌,洗牌后发牌,就可利用get(0)方法
public void deal(Player playernum) {
Cards card = this.allCards.get(0);
playernum.handCard.add(card);
this.allCards.remove(card);
System.out.println("------第"+playernum.name+"拿牌");
}
//比较牌面,事先在数组中已经排好序,只需比对他们的下标即可判断谁大谁小
public Cards pkCard(Cards a,Cards b) {
ArrayList<String> design = new ArrayList<String>(Arrays.asList("黑桃","红桃","梅花","方块"));
ArrayList<String> point = new ArrayList<String>(Arrays.asList("A","K","Q","J","10","9","8","7","6","5","4","3","2"));
if(point.indexOf(a.point)<point.indexOf(b.point))
return a;
else if(point.indexOf(a.point) > point.indexOf(b.point))
return b;
else {
if(design.indexOf(a.design)>point.indexOf(b.point)) {
return b;
}
else return a;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("-----------创建扑克牌----------");
Test ts = new Test();
ts.setUp();
System.out.println("------------扑克牌创建成功--------");
ts.printCards();
System.out.println("--------------开始洗牌----------");
Collections.shuffle(ts.allCards);
System.out.println("--------------洗牌完成----------");
System.out.println("创建玩家");
ts.createPlayer(1);
Player pl1 = new Player(ts.id,ts.name);
ts.createPlayer(2);
Player pl2 = new Player(ts.id,ts.name);
System.out.println("欢迎玩家"+pl1.name+pl2.name+"来到游戏");
System.out.println("现在开始发牌");
ts.deal(pl1);
ts.deal(pl2);
ts.deal(pl1);
ts.deal(pl2);
System.out.println("---------发牌结束,游戏开始--------");
Cards temp1 = new Cards("方片","2");
for (Cards c : pl1.handCard) {
temp1 = ts.pkCard(temp1, c);
}
System.out.println("玩家"+pl1.name+"最大的手牌为:"+temp1.design+temp1.point);
Cards temp2 = new Cards("方片","2");
for (Cards c : pl2.handCard) {
temp2 = ts.pkCard(temp2, c);
}
System.out.println("玩家"+pl2.name+"最大的手牌为:"+temp2.design+temp2.point);
String winName;
if(ts.pkCard(temp1,temp2)==temp1)
winName = pl1.name;
else
winName = pl2.name;
System.out.println("游戏结束,玩家"+winName+"获胜");
for (Cards c : pl1.handCard) {
System.out.println("【py1的手牌为"+c.design+c.point+"】");
}
for (Cards c : pl2.handCard) {
System.out.println("【py2的手牌为"+c.design+c.point+"】");
}
}
}