为了账号安全,请及时绑定邮箱和手机立即绑定

Java入门第三季 简易扑克牌游戏

标签:
Java

游戏中先创建扑克牌对象,然后创建玩家,并给玩家发牌,然后显示玩家手中的牌,最后对玩家手中的牌比较大小。
定义了一个玩家类Gamer

package com.payingCard;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
//为游戏创建玩家
public class Gamer {
    public int Id ;
    public String Name;
    List<String> myCards;
    public Gamer(){
    }
    public Gamer(int Id,String Name){
        this.Id = Id;
        this.Name = Name;
        this.myCards =new ArrayList<String>();
    }
}

主函数

package com.payingCard;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;

public class TwoPlayCard {

    static String[] Cards = new String[52];
    int[] flag = new int[52];
    Scanner scan = new Scanner(System.in);
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner input = new Scanner(System.in);

        TwoPlayCard playcard = new TwoPlayCard();
        playcard.CreatCard();   //创建扑克牌
        playcard.showCard();
        System.out.println("需要创建两位玩家:");
        Gamer[] gamer = new Gamer[2];    //创建两个玩家

        System.out.println("创建第一位玩家:");
        gamer[0]=playcard.CreatGamerAndRuffle(gamer[0]);  //玩家实例化,并给他们发牌
        System.out.println("创建第二位玩家:");     
        gamer[1]=playcard.CreatGamerAndRuffle(gamer[1]);
        System.out.println("————————————————正在洗牌——————————————");
        System.out.println("————————————————洗牌完毕,正在给玩家发牌——————————————");
        playcard.ShowGamerCards(gamer[0]);
        System.out.println();
        playcard.ShowGamerCards(gamer[1]);
        playcard.compareGamer(gamer[0],gamer[1]);

    }

/*
 * 比较两个玩家手中牌的大小
 *  
 */

    public void compareGamer(Gamer gamer1,Gamer gamer2){
        String gamer1One = gamer1.myCards.get(0);
        String gamer1Two = gamer1.myCards.get(1);
        String gamer1Max;
        String gamer2One = gamer2.myCards.get(0);
        String gamer2Two = gamer2.myCards.get(1);
        String gamer2Max;
        if(compareCard(gamer1One,gamer1Two)>0){
            System.out.println("玩家"+gamer1.Name+"手中最大的牌是:"+gamer1One);
            gamer1Max=gamer1One;
        }
        else{
            System.out.println("玩家"+gamer1.Name+"手中最大的牌是:"+gamer1Two);
            gamer1Max=gamer1Two;
        }

        if(compareCard(gamer2One,gamer2Two)>0){
            System.out.println("玩家"+gamer2.Name+"手中最大的牌是:"+gamer2One);
            gamer2Max=gamer2One;
        }
        else{
            System.out.println("玩家"+gamer2.Name+"手中最大的牌是:"+gamer2Two);
            gamer2Max=gamer2Two;
        }

        if(compareCard(gamer1Max,gamer2Max)>0){
            System.out.println("玩家"+gamer1.Name+"获胜!");
        }
        else
            System.out.println("玩家"+gamer2.Name+"获胜!");

    }

    /*
     * compareCard,比较玩家牌的大小。若大小相同则按照 黑桃>红桃>梅花>方块的顺序比较
     * 
     */

    public int compareCard(String card1,String card2 ){
        //System.out.println(gamer1.myCards.);
        Map<String,Integer> colorSame = new HashMap<String,Integer>()  ;
        Map<String,Integer> numberSort = new HashMap<String,Integer>()  ;
        colorSame.put("黑桃", 4);
        colorSame.put("红桃", 3);
        colorSame.put("梅花", 2);
        colorSame.put("方块", 1);

        numberSort.put("A", 15);numberSort.put("1", 2);numberSort.put("2", 3);
        numberSort.put("3", 4);numberSort.put("4", 5);numberSort.put("5", 6);
        numberSort.put("6", 7);numberSort.put("7", 8);numberSort.put("8", 9);
        numberSort.put("9", 10);numberSort.put("10", 11);numberSort.put("J", 12);
        numberSort.put("Q", 13);numberSort.put("K", 14);

        String numb1 =card1.substring(2);
        String numb2 =card2.substring(2);
        String string1 = card1.substring(0, 2);
        String string2 = card2.substring(0, 2);

        int number1 = numberSort.get(numb1);
        int number2 = numberSort.get(numb2);
        if(number1>number2){
            return 1;
        }
        else if(number1<number2)
            return -1;
        else{   //若字数相等
            int value1 = colorSame.get(string1);
            int value2 = colorSame.get(string2);
            return Integer.compare(value1,value2);
        }

    }   

/*
 *  显示玩家手中所持的牌
 */

    public void ShowGamerCards(Gamer gamer){
        System.out.println("玩家"+gamer.Name+"所持的牌是:");
        for (String string : gamer.myCards) {
            System.out.print(string+"     ");
        }
        System.out.println();   
    }

/*
 *  CreatGamerAndRuffle,创建玩家并给玩家发牌
 */

    public Gamer CreatGamerAndRuffle(Gamer gamer){
        gamer = new Gamer(1,"sd");
        System.out.println("输入玩家的ID:");
        int Ids  = scan.nextInt();
        System.out.println("输入玩家的姓名:");
        String Names = scan.next();
        gamer.Id = Ids;
        gamer.Name = Names;
        //给玩家分配牌
//      String tempCard=null;
        int Random_Int;
        for(int i=0;i<2;i++){    //每个玩家发两张卡
        do{         
            Random rd = new Random();
            Random_Int = rd.nextInt(52);
        }while(flag[Random_Int]==1);  //等于1,说明牌发出去了,那么就重新发
        flag[Random_Int]=1;
        gamer.myCards.add(Cards[Random_Int]);

        }
        return gamer;
    }

    //第一步 创建扑克牌
    public void CreatCard(){
        String[] FlowerColor={"黑桃","红桃","梅花","方块"};
//      String[] Cards = new String[52] ;   //要创建52张扑克牌
        int CardNumber =0;
        for(int i=0;i<13;i++){
            for(int j=0;j<4;j++){
                if(i==0){
                    Cards[CardNumber]=FlowerColor[j]+'A';
                       CardNumber++;
                }
                else if(i<10){
                   Cards[CardNumber]=FlowerColor[j]+(i+1);
                   CardNumber++;
                }
                else if(i==10){
                    Cards[CardNumber]=FlowerColor[j]+'J';
                       CardNumber++;
                }
                else if(i==11){
                    Cards[CardNumber]=FlowerColor[j]+'Q';
                       CardNumber++;
                }
                else if(i==12){
                    Cards[CardNumber]=FlowerColor[j]+'K';
                       CardNumber++;
                }

            }
        }

    }

    public void showCard(){
        System.out.println("所创建的扑克牌有:");
        int i=0;
        for (String string : Cards) {
            System.out.print(string+"    ");
            i++;
            if(i%8==0)
                System.out.println();
        }
        System.out.println();
    }   
}

很简单的游戏,而且游戏的健壮性也很一般。

点击查看更多内容
6人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消