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

扑克牌代码,我这个可能是最适合新手理解的,功能全的,最简单的。

小崔cui
关注TA
已关注
手记 1
粉丝 0
获赞 5

---------------main函数------------------

package Puke;

import Puke.mixcard;

public class pukemain {

/**

 * 扑克牌游戏:

 * 1.定义自动生成牌的容器(选用2个二维数组cardstype和number,一个存储花色,一个存储牌面的字母),

 * 以及各个花色和牌面字母所对应的权值大小(2=20,3=30.....K=130,A=140)(红桃=4,方块=3,黑桃=2,梅花=1)。

 * 2.牌创建成功后,生成一个新的集合(用map来实现,key为权值,value为具体牌的花色字母),

 * 原因:方便后边牌进行比较(通过权值进行比较后,通过key来找value)。

 * 3.随机分牌,采用random函数,生成一个新的由牌的权值作为内容的列表(方便random函数生成随机整数后,

 * 列表可以通过index来进行取值和删除)。

 * 4.比较大小,通过权值来进行比较,然后通过具体的权值,在之前map里面找到对应的value输出。

 * 总结:

 * 采用了1个map函数,两个2维数组,1个列表来实现。

 * @param args

 */

public static void main(String[] args) {

// TODO Auto-generated method stub

mixcard cozon=new mixcard();

cozon.mixallcord();

}

}



-----发牌比较牌函数----

package Puke;

import java.util.ArrayList;

import java.util.Collections;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Random;

import java.util.Scanner;

public class mixcard {

String[][]number={{"2","20"},{"3","30"},{"4","40"},{"5","50"},{"6","60"},{"7","70"},{"8","80"},{"9","90"},{"10","100"},{"J","110"},{"Q","120"},{"K","130"},{"A","140"}};

String[][]cardstype={{"红桃","4"},{"方块","3"},{"黑桃","2"},{"梅花","1"}};

//创建一副52张的扑克牌

public void mixallcord(){

System.out.println("--------开始创建扑克牌!--------");

Scanner scan=new Scanner(System.in);

Map<Integer,String> coo =new HashMap<Integer,String>();

List<Integer> coo1 =new ArrayList();

for(int i =0;i<13;i++)

{

for(int j=0;j<cardstype.length;j++)

{

Integer gradenumber= Integer.parseInt(number[i][1])+Integer.parseInt(cardstype[j][1]);

coo.put(gradenumber,cardstype[j][0]+number[i][0]);

coo1.add(gradenumber);

}

}

     System.out.println("--------创建扑克牌成功!--------");

     System.out.println("--------开始洗牌!--------");

     System.out.println("--------洗牌结束--------");

     System.out.println("--------创建玩家!--------");

     System.out.println("请输入第一个用户的名字");

     /*

      * try..catch这个可以忽略不看,单纯为了练语法。哈哈

      *

      */

     String onename = null;

     try { 

    onename=scan.next();

} catch (Exception e) {

// TODO: handle exception

System.out.println("SB!");

}

     

System.out.println("请输入第二个用户的名字");

String twoname=scan.next();

     System.out.println("--------开始发牌!--------");

     List<Integer> onenamelist =new ArrayList();

     List<Integer> twonamelist =new ArrayList();

     Random rand = new Random();

     for(int i=0;i>=0;i++)

     {

    int a =rand.nextInt(coo1.size());

    System.out.println("--------玩家"+onename+"开始拿牌!--------");

    onenamelist.add(coo1.get(a));

    coo1.remove(a);      

    int b =rand.nextInt(coo1.size());

    System.out.println("--------玩家"+twoname+"开始拿牌!--------");

    twonamelist.add(coo1.get(b));

    coo1.remove(b);

    if(onenamelist.size()==10)

    {

    break;

    }  

     }

     System.out.println("--------发牌结束-------");

     System.out.println("--------开始游戏-------");

    //2位玩家的最大牌

Collections.sort(onenamelist);

System.out.println("玩家"+onename+"的最大牌为: "+coo.get(onenamelist.get(onenamelist.size()-1)));

Collections.sort(twonamelist);

System.out.println("玩家"+twoname+"的最大牌为: "+coo.get(twonamelist.get(twonamelist.size()-1)));

//比较最大值:

if(onenamelist.get(onenamelist.size()-1)-twonamelist.get(twonamelist.size()-1)>0)

{

System.out.println("--------玩家"+onename+"获胜!!");

}

else {

System.out.println("--------玩家"+twoname+"获胜!!");

}

    System.out.println("玩家"+onename+"的牌为:");

    for(int i=0;i<onenamelist.size();i++)

    {

    System.out.print(coo.get(onenamelist.get(i))+' ');

     

    }

    System.out.println();

    System.out.println("玩家"+twoname+"的牌为:");

    for(int i=0;i<twonamelist.size();i++)

    {

    System.out.print(coo.get(twonamelist.get(i))+' ');

     }

    }

}


打开App,阅读手记
5人推荐
发表评论
随时随地看视频慕课网APP