继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

JAVA入门第三季代码:简易扑克牌游戏 @long_l

long_l
关注TA
已关注
手记 1
粉丝 5
获赞 13

游戏规则:2名玩家,每人随机拿2张牌,取各自大的那张,进行比较,得出获胜者。
共52张牌,没有大小王。先比较点数,若点数相同则比较花色。
从大到小为:A,K,Q,J,10,9,8,7,6,5,4,3,2
从大到小为:"黑桃","红桃","梅花","方块“”
Cards

package com.imooc;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
//创建一副牌。这副牌的索引用来比较牌的大小。
public class Cards {
    private String cardPoints;     //牌的点数
    public String getCardPoints() {
        return cardPoints;
    }
    public String getCardSuit() {
        return cardSuit;
    }
    private String cardSuit;        //花色
    final String[] cardPointsArr= {"A","K","Q","J","10","9","8","7","6","5","4","3","2"};
    final String[] cardSuitArr= {"黑桃","红桃","梅花","方块"};
    public List<Cards> newCards=new ArrayList<Cards>();     //用于存放一副牌,没有大小王,52张。
    public List<Cards> newCards1=new ArrayList<Cards>();
public Cards(String suit,String point) {     //单张牌的构造方法
        cardPoints=point;
        cardSuit=suit;
    }
    public void creatCards() {     //创建一副牌 存入 newCards,
        for(String temp1:cardPointsArr) {
            for(String temp:cardSuitArr) {
            Cards c=new Cards(temp1,temp);
            newCards.add(c);    
            newCards1.add(c);           
            }
        }
        System.out.println("*************洗牌成功!*************");//虽然没有洗牌,但是发牌是随机发的,这是句话给客户看的。
    }
}

Plays

package com.imooc;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
//创建玩家
public class Plays {
    private String name;    //姓名
    public String getName() {
        return name;
    }
    private List<Cards> handCards;// 手牌
    public List<Cards> getHandCards() {
        return handCards;
    }
    Plays play,play1;
    public Plays(String name) {          //玩家构造方法
        this.name=name;
        handCards=new ArrayList<Cards>();
    }
    public void creatPlays() {           //创建2个玩家   play和paly1
        System.out.println("***********************************");
        System.out.println("***********请输入第一位玩家姓名:*********");
        Scanner input=new Scanner(System.in);
        String temp=input.nextLine();
         play=new Plays(temp);
        System.out.println("***********请输入第二位玩家姓名:*********");
        String temp1=input.nextLine();
         play1=new Plays(temp1);
        System.out.println("*************玩家初始化成功!*************");
    }
    public void getHandCards(Plays one,Plays two,List<Cards> neards) {   //随机给每个玩家各发2张牌
        System.out.println("***************开始发牌*****************");
        Random random=new Random();
        for(int j=0;j<2;j++) {
        do{int i=random.nextInt(52);
        one.handCards.add(neards.get(i));
        }while(one.handCards.contains(neards.get(j)));
            }
            neards.removeAll(one.handCards);
            for(int j=0;j<2;j++) {
                do{int i=random.nextInt(50);
                two.handCards.add(neards.get(i));
                }while(two.handCards.contains(neards.get(j)));
                    }
            System.out.println("****************发牌完毕***************");      
    }
}

Compare

package com.imooc;

import java.util.List;
//用来比较2个人手牌的大小,得出获胜者。
public class Compare {
static  public void compare(Plays one,Plays  two ,List<Cards> aq) {
        int oneMax,twoMax;
        Cards temp= one.getHandCards().get(0);//分别得到2个人的2张牌。
        Cards temp1= one.getHandCards().get(1);
        Cards temp2= two.getHandCards().get(0);
        Cards temp3= two.getHandCards().get(1);
        int oneIndex=aq.indexOf(temp);   //得到这4张牌的索引。
        int oneIndex1=aq.indexOf(temp1);
        int twoIndex=aq.indexOf(temp2);
        int twoIndex1=aq.indexOf(temp3);
        if(oneIndex<oneIndex1) {         //通过索引比较大小。
            oneMax=oneIndex;
        }else {   oneMax=oneIndex1;   }
        if(twoIndex<twoIndex1) {
            twoMax=twoIndex;
        }else {   twoMax=twoIndex1;   }
        if(oneMax<twoMax) {               //比较出获胜者
            System.out.println("**********玩家"+one.getName()+"获胜************");
        }else {System.out.println("**********玩家"+two.getName()+"获胜************");}
        System.out.println("**********玩家"+one.getName()+"的手牌是************");
        System.out.println(temp.getCardSuit()+temp.getCardPoints()+"\t"+temp1.getCardSuit()+temp1.getCardPoints());
        System.out.println("**********玩家"+two.getName()+"的手牌是************");
        System.out.println(temp2.getCardSuit()+temp2.getCardPoints()+"\t"+temp3.getCardSuit()+temp3.getCardPoints());
    }
}

测试

package com.imooc;
//测试窗口。
public class Test {
    public static void main(String[] args) {    
         Cards aq=new Cards("a","a");//创建1个对象,用来调用方法
         Plays aw=new Plays("aa");      //创建1个对象,用来调用方法
         aq.creatCards();       
         aw.creatPlays();       
        aw.getHandCards(aw.play, aw.play1, aq.newCards);
         Compare.compare(aw.play, aw.play1, aq.newCards1);
    }
}
打开App,阅读手记
10人推荐
发表评论
随时随地看视频慕课网APP

热门评论

这里再解释一下,是怎么样比较大小的.

牌组创建的时候就是有规律的考虑了花色和点数,

牌组打印出来 是这样的:

a黑桃 a红桃 a梅花 a方块  k黑桃 k红桃 k梅花 k方块  等等

 这样索引小的就比索引大的牌大了


比较大小没有考虑花色,点数相同再看黑红梅方

查看全部评论