Java学习--扑克牌比大小的小游戏

实现:生成五十四张牌,然后进行洗牌,输入两名玩家,然后分别发两张牌,进行比较大小,两张牌中拥有较大一张牌的玩家获胜

Card.java代码如下:

package com.cardgame;

public class Card {

    String suit= new String();
    String num = new String();
    public Card(String suit ,String num){

        this.suit=suit;
        this.num=num;

    }
}

Player.java代码如下:

package com.cardgame;

import java.awt.List;
import java.util.ArrayList;

public class Player {

    String name= new String();
    String id = new String();
    java.util.List<Card> cards= new ArrayList<Card>();

    public Player(String name,String id){
        this.id=id;
        this.name=name;
    }

}

MainClass.java代码如下:

package com.cardgame;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

public class MainClass {

    public List<Card> cards= new ArrayList<Card>();
    public List<String> suitList= new ArrayList<String>();
    public List<Card> upsetCards= new ArrayList<Card>();

    /*
     *
     * 添加54张扑克牌
     *
     */
    public void add54Cards() {
        for (int i = 0; i < suitList.size(); i++) {

            String suit=suitList.get(i);
            String num;
            for (int j = 0; j < 13; j++) {

                if (j==0) {
                    num="A";
                }
                else if (j==10) {
                    num="J";
                }
                else if (j==11) {
                    num="Q";
                }
                else if (j==12) {
                    num="K";
                }else {
                    Integer jInteger=(Integer)j+1;
                    num=jInteger.toString();
                }

                cards.add(new Card(suit, num));
            }
        }
        cards.add(new Card(null, "小王"));

        cards.add(new Card(null, "大王"));
        System.out.println("*洗牌前*");
        for (int i = 0; i < cards.size(); i++) {
            Card card= cards.get(i);

            System.out.print(card.suit+card.num+",");

        }
        System.out.println();

    }
    /*
     *
     * 打乱顺序
     *
     */
    public void breakOrder() {
        int total = cards.size();
        Random random = new Random();
        int index;
        for (int i = 0; i < total; i++) {
            index= random.nextInt(cards.size());
            upsetCards.add(cards.get(index));
            cards.remove(cards.get(index));
        }
        System.out.println("*开始洗牌*");

        for (int i = 0; i < upsetCards.size(); i++) {
            Card card= upsetCards.get(i);

            System.out.print(card.suit+card.num+",");

        }
        System.out.println();
        System.out.println("*洗牌完成*");

    }
    /*
     *
     * 创建玩家,并发牌
     *
     */
    public void createPlayer(){
        Scanner scanner  = new Scanner(System.in); 

        System.out.println("请输入一号玩家ID:");
        String id1= scanner.next();
        System.out.println("请输入一号玩家昵称:");
        String name1= scanner.next();
        Player first  = new Player(name1, id1);
        System.out.println("请输入二号玩家ID:");
        String id2= scanner.next();
        System.out.println("请输入二号玩家昵称:");
        String name2= scanner.next();
        Player second  = new Player(name2, id2);
        //发牌
        for (int i = 0; i <2; i++) {
            Random random = new Random();
            //
            int index1=random.nextInt(upsetCards.size());
            first.cards.add(upsetCards.get(index1));
            upsetCards.remove(index1);
            //
            int index2=random.nextInt(upsetCards.size());
            second.cards.add(upsetCards.get(index2));
            upsetCards.remove(index2);

        }
        System.out.println("*发牌成功*");
        System.out.println("玩家:"+first.name+" 获得的牌为:");
        for (Card card : first.cards) {
            System.out.print(card.suit+card.num+" ");
        }
        System.out.println();
        System.out.println("玩家:"+second.name+"获得的牌为:");
        for (Card card : second.cards) {
            System.out.print(card.suit+card.num+" ");
        }
        System.out.println();
        int card11=this.getNum(first.cards.get(0));
        int card12=this.getNum(first.cards.get(1));
        int card21=this.getNum(second.cards.get(0));
        int card22=this.getNum(second.cards.get(1));
        if ((card11>card12?card11:card12)>(card21>card22?card21:card22)) {
            System.out.println("一号玩家获胜");
        }else if ((card11>card12?card11:card12)<(card21>card22?card21:card22)) {
            System.out.println("二号玩家获胜");
        }else {
            System.out.println("平局!");
        }
    }

    /*
     *
     * 获得牌权值:
     *
     */
    public int getNum(Card card) {
        int num;
        if (card.num=="A") {
            num=14;
        }else if (card.num=="J") {
            num=11;
        }else if (card.num=="Q") {
            num=12;
        }else if(card.num=="K") {
            num=13;
        }else if (card.num=="大王") {
            num=1000;

        }else if (card.num=="小王") {
            num=888;
        }else {
            num=Integer.valueOf(card.num);
        }

        /*
         *
         * 获取花色权值
         *
         */
        int suitC=0;

        if (card.suit=="黑桃") {
            suitC=4;
        }else if (card.suit=="红桃") {
            suitC=3;
        }else if (card.suit=="梅花") {
            suitC=2;
        }else if (card.suit=="方块") {
            suitC=1;
        }

        int result = num*10+suitC;
        return result;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        MainClass mClass=new MainClass();
        mClass.suitList.add("黑桃");
        mClass.suitList.add("红桃");
        mClass.suitList.add("梅花");
        mClass.suitList.add("方块");

        mClass.add54Cards();
        mClass.breakOrder();
        mClass.createPlayer();
    }

}

运行结果

时间: 2024-10-22 05:41:18

Java学习--扑克牌比大小的小游戏的相关文章

python摇骰子猜大小的小游戏

#小游戏,摇筛子押大小的小游戏 import random #定义摇筛子的函数: def roll_dice(number = 3,points = None): print ('<<<<< Roll The Dice >>>>>') if points is None: points = [] while number > 0: point = random.randrange(1,7) points.append(point) numb

java swing开发打飞机的小游戏源代码下载

原文:java swing开发打飞机的小游戏源代码下载 源代码下载地址:http://www.zuidaima.com/share/1550463716084736.htm 这是我为了熟悉java设计模式而练习的代码.其中肯定有很多不足的地方.希望各位牛人们 能多多指点.谢谢

java swing开发短小精悍的俄罗斯方块小游戏源代码下载,仅300行代码

原文:java swing开发短小精悍的俄罗斯方块小游戏源代码下载,仅300行代码 源代码下载地址:http://www.zuidaima.com/share/1550463495146496.htm java swing开发短小精悍的俄罗斯方块小游戏源代码下载,仅300行代码, 很久以前找到的一个Swing实现的俄罗斯方块,短线精悍,算法值得一看 经验证代码可用,确实短小精悍,值得下载. package com.zuidaima.swing.game; import java.awt.*; i

Java学习之利用集合发牌小练习

/* * 思路: * A:创建一个HashMap集合 * B:创建一个ArrayList集合 * C:创建花色数组和点数数组 * D:从0开始往HashMap里面存储编号,并存储对应的牌同时往ArrayList里面存储编号即可. * E:洗牌(洗的是编号) * F:发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收) * G:看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌) */ 1 package com.swust.集合; 2 3 import j

java 学习第3课,小例子

package temperature.convert; import java.util.Scanner; public class Converter { public static void main(String[] args) { // TODO 自动生成的方法存根 int flag; //进行功能选择 int centigrade; //用于输入摄氏温度 int fahrenheit; //用于输入华氏温度 double centigrade1; //用于保存计算后的摄氏温度 dou

结对编程小游戏2048

作业要求: 自选题目(不少于500行代码),进行结对编程 轮流担任领航员和驾驶员 记录结对编程的过程,写成结对博客 1.结对题目,写清需求 2.上传代码(截图),两人合作的合影 3.约定的规范 4.记录时间 5.心得和体会 Deadline 9月18日 23:59:59 小组成员 019任帅昌 020禹继跃 1.结对题目:2048小游戏 需求分析:在人们学习工作之余,小游戏成为了人们打发时间做的必不可少的事情了,而2048这款小游戏它不仅能在你工作学习疲惫之后使你身心放松,还能益智 2.游戏代码

结对编程2048小游戏

作业要求: 自选题目(不少于500行代码),进行结对编程 轮流担任领航员和驾驶员 记录结对编程的过程,写成结对博客 1.结对题目,写清需求 2.上传代码(截图),两人合作的合影 3.约定的规范 4.记录时间 5.心得和体会 Deadline 9月18日 23:59:59 小组成员 019任帅昌 020禹继跃 1.结对题目:2048小游戏 需求分析:在人们学习工作之余,小游戏成为了人们打发时间做的必不可少的事情了,而2048这款小游戏它不仅能在你工作学习疲惫之后使你身心放松,还能益智 2.游戏代码

《java入门第一季》之类小案例(模拟用户登录)

首先是做一个用户登录的小案例.在此基础上加入其它逻辑. import java.util.Scanner; /* * 模拟登录,给三次机会,并提示还有几次.如果登录成功,就可以玩猜数字小游戏了. * * 分析: * A:定义用户名和密码.已存在的. * B:键盘录入用户名和密码. * C:比较用户名和密码. * 如果都相同,则登录成功 * 如果有一个不同,则登录失败 * D:给三次机会,用循环改进,最好用for循环. */ public class StringTest2 { public st

贪吃蛇小游戏java实现代码分析

贪吃蛇小游戏java实现代码分析 贪吃蛇的小游戏,网上的代码比较多,今天周五,在教研室没啥事做,在电脑中发现了一个贪吃蛇的小游戏,于是就看了下实现的源码,发现别人写的代码确实挺好的,自己也是边加注释边进行理解的去看别人实现的游戏源码,发现还是挺有意思的.自己花了一个下午的时间看了源码,也加了一点小小的功能,于是,不写篇博客觉得对不起自己也,哈哈哈. 此游戏代码的思路非常的清晰,也相当好理解,没有太多难的地方,不过有很多值得学习的地方,因为,这份源码中,对java.awt包中的很多类的很多方法都进