Java实现简单的抽牌游戏

 更新时间:2020年04月22日 16:38:28   作者:Testarossa118  
这篇文章主要为大家详细介绍了Java实现简单的抽牌游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Java实现简单抽牌游戏的具体代码,供大家参考,具体内容如下

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";
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Spring Boot与RabbitMQ结合实现延迟队列的示例

    Spring Boot与RabbitMQ结合实现延迟队列的示例

    本篇文章主要介绍了Spring Boot与RabbitMQ结合实现延迟队列的示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • hadoop分布式环境搭建过程

    hadoop分布式环境搭建过程

    这篇文章主要介绍了hadoop分布式环境搭建过程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Java获取Class对象的几种方式小结

    Java获取Class对象的几种方式小结

    本文给大家分享了Java获取Class对象的几种方式,使用类名.class 语法,使用对象的 getClass()方法,使用 Class.forName()方法等多种方法,不同的方式适用于不同的场景,需要的朋友可以参考下
    2023-10-10
  • springboot 在idea中实现热部署的方法

    springboot 在idea中实现热部署的方法

    这篇文章主要介绍了springboot 在idea中实现热部署的方法,实现了热部署,在每一次作了修改之后,都会自动的重启,非常节约时间,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • 浅谈Java中几个常用集合添加元素的效率

    浅谈Java中几个常用集合添加元素的效率

    下面小编就为大家带来一篇浅谈Java中几个常用集合添加元素的效率。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Java通过wait()和notifyAll()方法实现线程间通信

    Java通过wait()和notifyAll()方法实现线程间通信

    这篇文章主要为大家详细介绍了Java通过wait()和notifyAll()方法实现线程间通信的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • SpringBoot整合RabbitMQ实现RPC远程调用功能

    SpringBoot整合RabbitMQ实现RPC远程调用功能

    在分布式系统中,RPC(Remote Procedure Call)是一种常用的通信机制,它可以让不同的节点之间像调用本地函数一样进行函数调用,隐藏了底层的网络通信细节,通过本教程,你可以了解RPC的基本原理以及如何使用Java实现一个简单的RPC客户端和服务端
    2023-06-06
  • Java将字符串转化为数组的两种方法

    Java将字符串转化为数组的两种方法

    Java中的String类是一种特殊的字符串,它可以被用于处理字符串,Java中的String类也可以将字符串转换为数组,下面这篇文章主要给大家介绍了关于Java将字符串转化为数组的两种方法,需要的朋友可以参考下
    2023-05-05
  • 解读CompletableFuture的底层原理

    解读CompletableFuture的底层原理

    本文探讨了Java8中CompletableFuture的原理和应用,详解其异步编程能力、工作机制及实际使用方法,CompletableFuture通过链式调用和状态管理优化异步任务,提高Java应用的效率和性能
    2024-09-09
  • Java Stream中自定义Collector实现复杂数据收集的方法

    Java Stream中自定义Collector实现复杂数据收集的方法

    Java Stream API中的Collector接口是一个强大的工具,它允许我们自定义数据收集、转换和聚合的过程,,本文介绍了Java Stream中自定义Collector实现复杂数据收集方法,需要的朋友可以参考下
    2024-08-08

最新评论