精华内容
下载资源
问答
  • 扑克牌 3 张两人比大小C 语言代码 背景两个人每人 3 张牌各从一副牌中每张牌包括花色红桃(Heart> 黑桃(Spade>方块 (Diamond>梅花 (Club和大小从小到大依次是2-10 JQKA谁手上有最大的一张或多张如果有相同的牌牌谁...
  • (题解)7-4 两张牌比大小

    千次阅读 2021-01-22 13:23:37
    题目描述: 现在有一种牌的玩法如下:共36张牌,牌点为2-10,每样4张。两个人玩,每人从所有牌中取两张,然后比较大小,大的方获胜。 比较大小规则如下。 1、两张牌的总牌点值为两... 5、对子和对子比较,按单张牌

    题目描述:

    现在有一种牌的玩法如下:共36张牌,牌点为2-10,每样4张。两个人玩,每人从所有牌中取两张,然后比较大小,大的方获胜。

    比较大小规则如下。 1、两张牌的总牌点值为两张牌的各自牌点值相加后除以10的余数,如一张5一张6,则总牌点为1; 2、比较大小时,比较的是总牌点儿。也就是说总牌点大的一方获胜; 3、当总牌点相等时,则看牌点最大的单张,牌点大的获胜。如一张3一张6胜过一张4一张5; 4、如果两张牌的牌点相等(对子),则不计总牌点,它们一定胜过所有非对子的组合; 5、对子和对子比较,按单张牌点比大小,如对8胜过对7。 6、如果两个人的牌完全一样,则是平局。
    现请你写一段程序来判断两个玩家的胜负。

    输入格式:

    只有一行,为4个字符,前两个代表A的牌,后两个代表B的牌(字符’T’,代表10)。

    输出格式:

    只有一行,先输出获胜者(两人的牌完全一样时,按A胜输出),然后是一个冒号,最后是牌面(如果是对子,则输出代表单张牌的字符,否则输出总牌点数)。

    输入样例:

    样例一:
    3645
    样例二:
    85T3
    样例三
    3455

    输出样例:

    样例一:
    A:9
    样例二:
    B:3
    样例三:
    B:5

    分析:

    题目类型是分情况讨论,没有涉及算法及数据结构

    代码实现:

    #include<stdio.h>
    int main()
    {
    	char m,n,j,k;  //A的牌:m,n;B的牌:j,k 
    	int t;
    	int a,b,c,d;  //A各自牌点值:a,b;B各自牌点值:c,d 
    	scanf("%c%c%c%c",&m,&n,&j,&k);
    	(m=='T')?(a=10):(a=m-'0');
    	(n=='T')?(b=10):(b=n-'0');
    	(j=='T')?(c=10):(c=j-'0');
    	(k=='T')?(d=10):(d=k-'0');
    	if(a==b||c==d)
    	{
    		if(a==b&&c==d)  //对子和对子比较 
    		{
    			if(a>=c)
    			{
    				if(a==10) printf("A:T\n");
    				else printf("A:%c\n",m);  //输出代表单张牌的字符
    			}
    			else
    			{
    				if(c==10) printf("B:T\n");
    				else printf("B:%c\n",j);
    			}
    		}
    		if(c!=d)  //A的牌是对子,B的牌是非对子 
    		{
    			if(a==10) printf("A:T\n"); 
    			else printf("A:%c\n",m);
    		}
    		if(a!=b)  //A的牌是非对子,B的牌是对子 
    		{
    			if(c==10) printf("B:T\n");
    			else printf("B:%c\n",j);
    		}
    	}
    	else  //A,B的牌都是非对子
    	{
    		if((a+b)%10!=(c+d)%10)  //总牌点不相等 
    		{
    			if((a+b)%10>(c+d)%10) printf("A:%d\n",(a+b)%10);  //输出总牌点值
    			else printf("B:%d\n",(c+d)%10);
    		}
    		else  //总牌点相等 
    		{
    			if(a<b)
    			{
    				t=b;
    				b=a;
    				a=t;
    			}
    			if(c<d)
    			{
    				t=d;
    				d=c;
    				c=t;
    			}
    			if((a==c&&b==d)||(a>c))
    			{
    				printf("A:%d\n",(a+b)%10);
    			}
    			if(a<c)
    			{
    				printf("B:%d\n",(c+d)%10);
    			}
    		}
    	}
    	return 0;
    }
    
    展开全文
  • 之后我们在定义如何比较两个或者多个手牌的大小,为方便比较大小,我们先对5张牌进行预处理,将其按照降序排序,如下: def card_ranks(hand): ranks = ['--23456789TJQKA'.INDEX(r) for r, s in hand] ranks....
  • 扑克牌3张两人比大小,C语言代码扑克牌3张两人比大小,C语言代码背景:两个人每人3张牌(各从一副牌中),每张牌包括花色(红桃(Heart)>黑桃(Spade)>方块(Diamond)>梅花(Club))和大小(从小到大依次是:2-10、...

    扑克牌3张两人比大小,C语言代码

    扑克牌3张两人比大小,C语言代码

    背景:两个人每人发3张牌(各从一副牌中),每张牌包括花色(红桃(Heart)>黑桃(Spade)>方块(Diamond)>梅花(Club))和大小(从小到大依次是:2-10、J、Q、K、A),谁手上有最大的一张或多张(如果有相同的牌)牌谁获胜。?输入:A的3张牌(未排序)和B的3张牌(未排序)。(参见用例)?输出:A的3张牌的排序后的输出和B的3张牌的排序后的输出,以及A和B谁获胜。(参见用例)

    1.DA H2 C3?

    2.H4 H3 DJ?

    View plain

    1.Winner is B!?

    2.A: H2 DA C3?

    3.B: H4 H3 DJ?

    Unlimited

    256M

    0

    Test Case 3

    View plain

    1.HA CA CB?

    2.HQ CJ CQ?

    View plain

    1.Input Error!?

    Unlimited

    256M

    0

    Test Case 4

    View plain

    1.HA CA CJ?

    2.DA DK DK?

    View plain

    1.Input Error!?

    Unlimited

    256M

    0

    Test Case 5

    View plain

    1.SA SJ SK?

    2.SA SJ SK?

    View plain

    1.Winner is X!?

    2.A: SA SK SJ?

    3.B: SA SK SJ?

    Unlimited

    代码

    #include

    int asc(char p[][3]);

    intisError(char p1[][3]);

    void compare(char p3[][3],char p4[][3]);

    int main()

    {

    char a[3][3],b[3][3],c;

    int i,j,resulta,resultb,result,flag=0;

    printf("请输入A的扑克牌,扑克牌之间以空格隔开,然后按下回车:\n");

    for(i=0;i<3;i++)

    {

    for(j=0;j<3;j++)

    {

    c=getchar();

    if(c!=' '&&c!=10)

    {

    if(j==0)

    {

    if(c=='H'||c=='S'||c=='D'||c=='C')

    {

    if(c=='H')

    c='Z';

    }

    else

    {

    printf("Input Error!\n");

    return 0;

    }

    }

    if(j==1)

    {

    if(c=='J'||c=='Q'||c=='K'||c=='A'||(c>='1'&&c<='9'))

    {

    if(c=='J')

    c=59;

    if(c=='Q')

    c=60;

    if(c=='K')

    c=61;

    if(c=='A')

    c=62;

    if(c=='1')

    flag=1;

    }

    else

    {

    printf("Input Error!\n");

    return 0;

    }

    }

    if(j==2)

    {

    if(c!='0')

    {

    printf("Input Error!\n");

    return 0;

    }else

    {

    flag=0;

    c=58;

    a[i][1]=c;

    break;

    }

    }

    a[i][j]=c;

    }else

    {

    if(flag==1)

    {

    printf("Input Error!\n");

    return 0;

    }

    if(j==2)

    break;

    j--;

    }

    }

    }

    printf("请输入B的扑克牌,扑克牌之间以空格隔开,然后按下回车:\n");

    for(i=0;i<3;i++)

    {

    for(j=0;j<3;j++)

    {

    c=getchar();

    if(c!=' '&&c!=10)

    {

    if(j==0)

    {

    if(c=='H'||c=='S'||c=='D'||c=='C')

    {

    展开全文
  • 牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):)3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER输入两手牌,两手牌之间用“-”连接,每手牌的每张牌以空格分隔,“-”两边没有空格,如...

    一副牌由54张组成,含3~A,2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):)

    3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER

    输入两手牌,两手牌之间用“-”连接,每手牌的每张牌以空格分隔,“-”两边没有空格,如:4 4 4 4-joker JOKER

    请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR

    基本规则:

    (1)输入每手牌可能是个子,对子,顺子(连续5张),三个,炸弹(四个)和对王中的一种,不存在其他情况,由输入保证两手牌都是合法的,顺子已经从小到大排列;

    (2)除了炸弹和对王可以和所有牌比较之外,其他类型的牌只能跟相同类型的存在比较关系(如,对子跟对子比较,三个跟三个比较),不考虑拆牌情况(如:将对子拆分成个子)

    (3)大小规则跟大家平时了解的常见规则相同,个子,对子,三个比较牌面大小;顺子比较最小牌大小;炸弹大于前面所有的牌,炸弹之间比较牌面大小;对王是最大的牌;

    (4)输入的两手牌不会出现相等的情况。

    答案提示:

    (1)除了炸弹和对王之外,其他必须同类型比较。

    (2)输入已经保证合法性,不用检查输入是否是合法的牌。

    (3)输入的顺子已经经过从小到大排序,因此不用再排序了.

    importjava.util.ArrayList;importjava.util.Scanner;public classMain {public static voidmain(String[] args) {

    Scanner sc= newScanner(System.in);

    String[] left, right;

    String[] line;

    String nextLine, outString;while(sc.hasNext()) {

    nextLine=sc.nextLine();//有王炸就王炸最大

    if (nextLine.contains("joker JOKER")) {

    outString= "joker JOKER";

    }else{//拆分 先拆成左右 再拆成单排

    line = nextLine.split("-");

    left= line[0].split(" ");

    right= line[1].split(" ");//炸弹最大

    if (left.length == 4 && right.length != 4) {

    outString= line[0];

    }else if (right.length == 4 && left.length != 4) {

    outString= line[1];

    }//牌数相同的情况下比较最小的牌的大小,compare方法返回牌所对应的值

    else if (right.length ==left.length) {if (count(left[0]) > count(right[0])) {

    outString= line[0];

    }else{

    outString= line[1];

    }

    }else{

    outString= "ERROR";

    }

    }

    System.out.println(outString);

    }

    }private static intcount(String str) {return "345678910JQKA2jokerJOKER".indexOf(str);

    }

    }

    展开全文
  • (1) 能洗牌,牌; (2) 每次一手牌(5 张); (3) 能评价手上的牌好坏; (4) 可以模拟牌人,程序评估牌人的牌,根据这...牌人可以抓一张、两张、或三张牌,换掉手中不要的牌, 然后程序重新评估牌人的牌。
  • 首先Card类,Player类创建:Card 写卡牌属性使用了Compareable为了下面比较卡牌大小使用了toString()将单扑克属性转化成字符串输出Player写玩家属性设置了HashSet接口调用card属性package com.list;public class...

    首先Card类,Player类创建:

    Card 写卡牌属性

    使用了Compareable为了下面比较卡牌大小

    使用了toString()将单张扑克牌属性转化成字符串输出

    Player写玩家属性

    设置了HashSet接口调用card属性

    package com.list;

    public class Card implements Comparable {

    public String color;

    public String dian;

    public Card(String color, String dian) {

    this.color = color ;

    this.dian = dian;

    }

    @Override //将单张扑克牌属性转化成字符串输出

    public String toString() { return color + dian; }

    @Override //将单张扑克牌属性转化成字符串输出

    public int compareTo(Card o) {

    return this.dian.compareTo(o.dian); }

    }

    package com.list;

    import java.util.HashSet;

    import java.util.Set;

    public class Player {

    public String ID;

    public String Name;

    public Set Cards; //设置接口

    public Player(String ID,String Name){

    this.ID=ID;

    this.Name=Name;

    this.Cards=new HashSet();

    }

    }

    然后setTest+主函数 作为一类

    先setTest

    package com.list;

    import java.util.ArrayList;

    import java.util.Arrays;

    import java.util.Iterator;

    import java.util.List;

    //import java.util.Scanner;后面可以用这个输入player

    public class SetTest {

    public List cardbiao;

    public SetTest(){this.cardbiao=new ArrayList();//一个动态数组

    }

    然后各种函数:Quanjia();加入卡牌功能

    Quancha();迭代器查找输出所有卡牌功能 用的是List表 有序

    fapai(); 简单输出文字

    public void Quanjia(){

    String[] a1={"黑桃","红桃","梅花","方块"};

    String[] a2={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};

    for(String str:a1){

    for(String str1:a2){

    Card c=new Card(str,str1);

    cardbiao.add(c);}};//数组转化为课程表

    }

    /**

    * 通过迭代器全查

    * @param args

    */

    public void Quancha() {

    //通过集合的iterator方法,取得迭代器的实例

    Iterator it = cardbiao.iterator();

    System.out.println("有如下卡牌(通过迭代器访问):");

    while(it.hasNext()) {

    Card cr = it.next();

    System.out.println("牌:" + cr.color + cr.dian);

    }

    }

    public void fapai(Player player1,Player player2){

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

    //将第一张牌发给玩家1

    System.out.println("*****玩家:" + player1.Name + "-拿牌");

    //将第二张牌发给玩家2

    System.out.println("*****玩家:" + player2.Name + "-拿牌");

    //将第三张牌发给玩家1

    System.out.println("*****玩家:" + player1.Name + "-拿牌");

    //将第四张牌发给玩家2

    System.out.println("*****玩家:" + player2.Name + "-拿牌");

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

    }

    最后主函数:感觉用函数的话会很冗(rong)余

    因为我showpai()遍历list并把它放入set集中,set中没有返回值,只能将之用toArray存放入数组中,得到一个随机卡牌数组。这个步骤放入showpai()函数的话,后面函数对数组进行操作就要重新写一遍showpai;

    所以在此生成两种做法:

    1.函数重复怕什么,直接多个函数

    ShowPai(a,c);

    MaxPai(a, c);

    bijiao(a,c);

    public void ShowPai(Player a,Player c){

    for(Card kahao:cardbiao){

    a.Cards.add(kahao);//

    }

    Object[]b=a.Cards.toArray();//set型中没有返回值,只能用toarray变成数组

    for(int i=0;i<2;i++) System.out.println(a.Name+"得到了卡牌:" + b[i]);

    // Object[]d=c.Cards.toArray();//set型中没有返回值,只能用toarray变成数组

    for(int i=b.length-1;i>b.length-3;i--)

    System.out.println(c.Name+"得到了卡牌:" + b[i]);

    }//用了同一个数组,从最后发牌,这样不会重复。

    public void MaxPai(Player a,Player c){

    for(Card kahao:cardbiao){

    a.Cards.add(kahao);//

    }

    Object[]b=a.Cards.toArray();//set型中没有返回值,只能用toarray变成数组

    Object[]b1={b[0],b[1]};

    Arrays.sort(b1);

    System.out.println(a.Name+"得到的最大卡牌:" + b1[1]);

    Object[]b2={b[b.length-1],b[b.length-2]};

    Arrays.sort(b2);

    System.out.println(c.Name+"得到的最大卡牌:" + b2[1]);

    }

    public void bijiao(Player a,Player c){

    for(Card kahao:cardbiao){

    a.Cards.add(kahao);//

    }

    Object[]b=a.Cards.toArray();//set型中没有返回值,只能用toarray变成数组

    Object[]b1={b[0],b[1]};

    Arrays.sort(b1);

    Object[]b2={b[b.length-1],b[b.length-2]};

    Arrays.sort(b2);

    Object[]b3={b1[1],b2[1]};

    Arrays.sort(b3);

    if(b3[1]==b1[1])

    {System.out.println("玩家:["+a.Name+"] 获胜!"); }

    else{ System.out.println("玩家:["+c.Name+"] 获胜!"); }

    }

    public static void main(String[] args) {

    SetTest run=new SetTest();

    run.Quanjia();

    run.Quancha();

    Player a=new Player("1","小华");

    Player c=new Player("2","小孙");

    run.fapai(a,c);

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

    System.out.println("===========双方手牌如下===========");

    run.ShowPai(a,c);

    run.MaxPai(a, c);

    run.bijiao(a,c);

    }

    }

    2.下面过程不用函数,直接写在主函数中

    public static void main(String[] args) {

    SetTest run=new SetTest();

    run.Quanjia();

    run.Quancha();

    Player a=new Player("1","小华");

    Player c=new Player("2","小孙");

    run.fapai(a,c);

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

    System.out.println("===========双方手牌如下===========");

    for(Card kahao:run.cardbiao){

    a.Cards.add(kahao);//

    }

    Object[]b=a.Cards.toArray();//set型中没有返回值,只能用toarray变成数组

    for(int i=0;i<2;i++) System.out.println(a.Name+"得到了卡牌:" + b[i]);

    //Object[]d=c.Cards.toArray();//set型中没有返回值,只能用toarray变成数组

    for(int i=b.length-1;i>b.length-3;i--)System.out.println(c.Name+"得到了卡牌:" + b[i]);

    //用了同一个数组,从最后发牌,这样不会重复。

    Object[]b1={b[0],b[1]};

    Arrays.sort(b1);

    System.out.println(a.Name+"得到的最大卡牌:" + b1[1]);

    Object[]b2={b[b.length-1],b[b.length-2]};

    Arrays.sort(b2);

    System.out.println(c.Name+"得到的最大卡牌:" + b2[1]);

    System.out.println("===========结果===========");

    Object[]b3={b1[1],b2[1]};

    Arrays.sort(b3);

    if(b3[1]==b1[1])

    {System.out.println("玩家:["+a.Name+"] 获胜!"); }

    else{ System.out.println("玩家:["+c.Name+"] 获胜!"); }

    // run.ShowPai(a,c);

    // run.MaxPai(a, c);

    // run.bijiao(a,c);

    // 结果是一样的,这样不会冗余

    }

    }

    最后结果贴出:

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    ……因为用循环输出,所以一行接一行。。。

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    展开全文
  • 【Java小白】 简易扑克牌比大小游戏

    千次阅读 2020-07-07 21:27:51
    游戏背景:两人每人随机两张扑克牌(从同一副牌中),不考虑大、小王,每张牌包括花色(黑桃(Spade) > 红桃(Heart) > 梅花(Club) > 方片(Diamond))和大小(从小到大依次是:2-10,J,P,K,A),谁拥有...
  • 一、项目介绍该项目的主要功能是实现扑克牌比大小,输入参与游戏的人数,各自选择相应的操作,有看、弃、下注等等,每一回合有相应的底注,结束时得出获胜玩家,并结算各个玩家剩余的金币总数。二、项目框架与...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼//创建一副扑克(54)Card[] cards = new Card[54];int i = 0;for(int rank=Card.THREE;rank <= Card.DEUCE;rank++){cards[i++] = new Card(Card.DIAMOND,rank);...
  • 再次是一般牌型(单牌、对牌、三张牌、三带一、单顺、双顺、三顺、飞机带翅膀、四带二)一般牌型:只有牌型且张数相同的牌才可按牌点数比较大小。其中三带一、飞机带翅膀、四带二组合牌型,比较其相同张数最多的牌点数...
  • 有洗好的,也有玩家了,那么就开始发牌后,比较玩家中手牌的大小,大的那一位获胜。下面是代码: 首先创建一个扑克类,扑克主要有两个属性,一个是点数,一个是花色。给点数和花色生成getter和setter...
  • 编程目的:本内容主要是通过Python中的类实现的,当时编写扑克的目的是宁大哥为了锻炼我理解面向对象的编程。通过编写程序更好的明白py中类用法及...3.练习类的继承定义玩家对象(Rookie)和发牌小姐姐 ( Dealer...
  • (1).系统功能与分析(填写你所设计的菜单及流程图) ...本文本编辑器通过菜单的选择可以实现对扑克的构建、洗发牌的功能,并可将最初始的扑克的花色与面值显示出来以及发牌后的花色与面值显示出来
  • 一、目的目的很单纯。就是用Java写个扑克游戏,在写的过程中锻炼自己的逻辑思维能力,...扑克游戏的实现、具体内容1.单例设计模式定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windo...
  • 1、将1-10作为方块、2-20作为梅花,3-30作为红桃,4-40作为黑桃,JQK以及大小王分别排序共54存放在一维数组中。 3、3个人用一个二维数组来存放三人的。 2、主要分为打散(乱序),分配,显示个操作 打散即洗...
  • 【算法】象山十三张手牌分析代码

    千次阅读 2017-07-28 21:29:57
    乌龙,对子,三条,两对,葫芦,炸弹,同花,顺子,同花顺,共九种牌型进行分类,找出十三张手牌中,包含的全部牌型。
  • 三张手牌分析

    千次阅读 2018-01-11 16:22:00
     在每位玩家初始化的时候,拥有十三张牌。分别为同一幅扑克牌中去掉大小王,随机获取的。需要将十三张牌中所隐含的所有的牌型全部找出,以便进行快速匹配。  游戏规则:   每个人需将手中的十三张牌分成头墩、...
  • 本文实例为大家分享了java实现斗地主牌的具体...名玩家,其中地主其他玩家多3张牌)代码如下:牌类import java.util.Objects;/*** 3-10 J Q K A 2 King Queen 牌类** @author Administrator**/public class Car...
  • import java.util.Objects;/**首先是牌面类* 5、参考斗地主的游戏规则,完成一个牌的功能(54张牌,考虑...名玩家,其中地主其他玩家多3张牌)* @author admin*/public class Card {/**牌面值*/private Strin...
  • 发牌将洗之后的扑克集合,从第一开始,一人一张,每人5.游戏游戏规则:取两人各自手中点数最大的进行比较,点数大的赢;若两人各自的点数最大的相等 则比较花色花色大小的顺序:方块 梅花 红桃 黑.....
  • C语言程序扑克发牌

    2015-09-12 13:00:04
    现在有一副扑克牌共54张,去掉大小王,剩余52张,分别发给四个游戏玩家,每个玩家会收到13张扑克牌,并且要求每轮每个玩家收到的13张牌都不一样。
  • 要求如下:1、将1-10作为方块、2-20作为梅花,3-30作为红桃,4-40作为黑桃,JQK以及大小王分别排序共54存放在一维数组中。3、3个人用一个二维数组来存放三人的。2、主要分为打散(乱序),分配,显示个操作打散...
  • 我设计了四个类,分别是main.java、PokeNameSet.java、PokeVo.java、SetUserPoke.java首先扑克个属性,第一个是number,第二个是name,第个是colour,所以新建类PokeVo.javapackage poke;public class ...
  • 扑克牌发牌C语言程序

    2009-02-24 21:14:39
    2副54的扑克4人随机发牌,可应用于游戏中
  • } CardComparator: 为了比较牌大小的Comparator实现类,点数优先,点数相同考虑花色,花色按:黑桃>红桃>方块>梅花,将点数和花色改用数字表示 /** * 点数优先,点数相同考虑花色,花色按:黑桃>红桃>方块>梅花 */ package...
  • 【每日一问】 ...因为大小王两扑克必须在一起,还剩52扑克,分成16,18,18堆扑克,再分给个人。 注意:有两个相同的18。 C5216×C3618×C1818A33A22 C_{52}^{16} \times C_{36}^{18} ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,507
精华内容 5,002
关键字:

发三张牌比大小