[Java练习]简单的抽牌游戏

本文介绍了一个使用Java实现的简单扑克牌游戏程序。程序包括Main类用于启动游戏,Poke类负责扑克牌的洗牌与发牌操作,Card类定义了每张牌的属性及比较方法。通过该程序,读者可以了解面向对象编程的基本概念及其在实际项目中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Main类

package com.company;

import java.util.*;

public class Main
{

    public static void main(String[] args)
    {
        Poke p = new Poke();
        p.shuffle();
        System.out.println("您想抽几张牌?");
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();


        System.out.println("抽取了"+n+"张牌,分别为:");
        Card[] c = p.draw(n);
        for (Card g :c ) System.out.print(g);
        System.out.println();
        p.sortOut(c);
        System.out.println("理牌完成!");
        for (Card g :c ) System.out.print(g);
    }
}

Poke类

package com.company;

import java.util.Arrays;

/**
 * Created by ttc on 16-11-2.
 */
public class Poke
{
    Card[] m_card = null;
    int[] values = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
    String[] colors = {"♡", "♠", "♢", "♧"};

    public Poke()
    {
        m_card = new Card[52];
        for (int i = 0; i < colors.length; i++)
        {
            for (int j = 0; j < values.length; j++)
            {
                m_card[i * values.length + j] = new Card(values[j], colors[i]);
            }
        }
    }

    public void outPut()
    {
        //展示当前牌序
        for (int i = 0; i < m_card.length; i++)
        {
            if (i % 13 == 0) System.out.println();
            System.out.print(m_card[i]);
        }
    }

    public void shuffle()
    {
        //洗牌
        Card tempC = null;
        for (int i = 0; i < 52; i++)
        {
            tempC = m_card[i];
            int j = (int) (Math.random() * 51);
            m_card[i] = m_card[j];
            m_card[j] = tempC;
        }
        System.out.print("洗牌完成!");
    }

    public Card[] draw(int n)
    {
        //抽N张牌
        Card[] c = new Card[n];
        for (int i = 0; i < n ; i++) c[i] = m_card[i];
        return c;
    }

    public void  sortOut(Card[] c)
    {
        //理牌
        Arrays.sort(c);
    }
}

Card类

package com.company;

/**
 * Created by ttc on 16-11-2.
 */
public class Card implements Comparable
{
    private int m_values;
    private String m_colors;

    public Card(int m_values, String m_colors)
    {
        this.m_values = m_values;
        this.m_colors = m_colors;
    }

    @Override
    public int compareTo(Object o)
    {
        if (this.m_values > ((Card)o).m_values) return 1;
        else if(this.m_values == ((Card)o).m_values) return 0;
        else return -1;
    }

    @Override
    public String toString()
    {
        String strtmp;
        switch (m_values)
        {
            case 1:
                strtmp = "A";
                break;
            case 11:
                strtmp = "J";
                break;
            case 12:
                strtmp = "Q";
                break;
            case 13:
                strtmp = "K";
                break;
            default:
                strtmp = String.valueOf(m_values);
        }
        return m_colors + strtmp + "\t";
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值