发牌规则

    黑桃按照从小到大依次为:1-13

   红桃按照从小到大依次为:14-26

   梅花按照从小到大依次为:27-39

   方块按照从小到大依次为:40-52

   小王53   大王54

代码实现:

package com.zsy.study;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
/**
*
* @author 偶my耶
* 游戏发牌
*/
public class Cards {
/**
* 发牌函数
* @param args
*/
private int[][] player; //玩家
private int[] total; // 底牌数
public int[][] getPlayer() {
return player;
}
public void setPlayer(int[][] player) {
this.player = player;
} public int[] getTotal() {
return total;
} public void setTotal(int[] total) {
this.total = total;
} /**
* 发牌函数
* @param CardNum 总牌数
* @param Rs 人数
* @param Ps 每人的牌数
* @return Cards
*/
public static Cards PlayingCards(int Rs){
int Ps ,CardNum; //每人的牌数 //总牌数
if(Rs==4){ //如果人数是4个,则把总牌数设为108张,每人的牌数设为25张
CardNum=108;
Ps=25;
}else if(Rs==3){ //如果人数是4个,则把总牌数设为54张,每人的牌数设为17张
CardNum=54;
Ps=17;
}else {
CardNum=0;
Ps=0;
System.out.println("输入错误");
System.exit(1);
}
int[] total=new int[CardNum]; //
int[][] player=new int[Rs][Ps]; //定义玩家数和牌数的 数组
int leftNum=CardNum; //剩下的牌数
int ranNumber; //随机发的牌
Random random=new Random();
for (int i = 0; i < total.length; i++) { //将牌数设在1--54之间 其中1~13表示一种花色
total[i]=(i+1)%54; //,依此类推
if (total[i]==0) { //把0设为54
total[i]=54;
} }
for(int i=0;i<player[0].length;i++){ //随机分配牌
for(int j=0;j<player.length;j++){
ranNumber=random.nextInt(leftNum); //随机获取下标,
player[j][i]=total[ranNumber]; //将随机的数赋给玩家
total[ranNumber] = total[leftNum-1];
leftNum--;
}
}
Cards card=new Cards();
card.setPlayer(player);
card.setTotal(total);
return card;
}
public void print(Cards card,int rs) {
int dp;
for (int i = 0; i < card.getPlayer().length; i++) {
System.out.print("玩家"+(i+1)+"的牌");
for (int j = 0; j < card.getPlayer()[i].length; j++) {
System.out.print(" "+card.getPlayer()[i][j]);
}
System.out.println();
}
System.out.print("底牌");
if(rs==4){
dp=8; //设置底牌数
}else {
dp=3; //设置底牌数
}
for (int i = 0; i < dp; i++) {
System.out.print(" "+card.getTotal()[i]);
}
System.out.println();
}
public static void main(String[] args) throws Exception{
System.out.println("请选择游戏:1、斗地主,2、三打哈");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));//输入语句
Integer rs = Integer.valueOf(br.readLine());
Cards card=PlayingCards(rs+2);
card.print(card,rs); } }

运行结果:

java开发之发牌小程序的更多相关文章

  1. Java可视化日历(Date类、DATe Format类、Calendar类综合运用),开发可视化日历小程序

    Java时间日期类综合运用,开发可视化日历小程序 由键盘输入指定格式的日期,打印这个月的日历 1.代码 import java.text.DateFormat; import java.text.Pa ...

  2. java全栈商业小程序开发

    此次开发只为学习和巩固,第一次学习开发 一.开发前需要了解: 开发框架MVVM.痛点.开源工具.VUE前端框架.微信支付模块.uni-app前端框架.小程序申请.开发工具下载.编写测试小程序.小程序结 ...

  3. 如何快速地开发一个微信小程序

    如何快速地开发一个微信小程序呢?我觉得作为初学者,最好能有一个模板,然后改这个模板. 同样作为初学者,刚开始的时候我有下面的几个问题,后来通过问同学,我弄清楚了. 微信小程序可以连接MySQL或者Sq ...

  4. Java之——实现微信小程序加密数据解密算法

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79450115 一.概述 微信推出了小程序,很多公司的客户端应用不仅具有了APP.H ...

  5. 开发一个微信小程序教程

    一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可. 2.注册成功后进入首页,在 小程序发布流程->小程序 ...

  6. 开发一个微信小程序项目教程

    一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开 ...

  7. 全栈开发工程师微信小程序-中(下)

    全栈开发工程师微信小程序-中(下) 微信小程序视图层 wxml用于描述页面的结构,wxss用于描述页面的样式,组件用于视图的基本组成单元. // 绑定数据 index.wxml <view> ...

  8. 全栈开发工程师微信小程序-中(中)

    全栈开发工程师微信小程序-中(中) 开放能力 open-data 用于展示微信开放的数据 type 开放数据类型 open-gid 当 type="groupName" 时生效, ...

  9. 全栈开发工程师微信小程序-中

    全栈开发工程师微信小程序-中 多媒体及其他的组件 navigator 页面链接 target 在哪个目标上发生跳转,默认当前小程序,可选值self/miniProgram url 当前小程序内的跳转链 ...

随机推荐

  1. Postgresql 正则表达式

    在postgresql中使用正则表达式时需要使用关键字“~”,以表示该关键字之前的内容需匹配之后的正则表达式,若匹配规则不需要区分大小写,可以使用组合关键字“~*”: 相反,若需要查询不匹配这则表达式 ...

  2. AndroidStudio OpenCv的配置,不用安装opencv manager

    按照以下操作步骤配置并测试了,没问题. 下载OpenCV sdk for Android,解压(我的解压地址是F:\OpenCV-android-sdk) 1)新建项目项目,取名为Opencvtest ...

  3. svn搭建本地服务端

    使用VisualSVN Server来完成,下载地址:https://www.visualsvn.com/server/download/ 我安装的版本是3.3.1,安装的时候选择了标准版本,另外一个 ...

  4. 跟我学SharePoint 2013视频培训课程——探索默认的列表和库(6)

    课程简介 第6天,探索默认的列表和库. 视频 SharePoint 2013 交流群 41032413

  5. SharePoint 2013 Step by Step——How to Create a Lookup Column to Another Site(Cross Site)

    OverView In this post,I want to show u how to add a look up column in my list or library that looks ...

  6. jmeter maven自动移动jar包windows 批处理命令

    jmeter项目maven文件下面放这.bat 工具,可以把必要的jar包移动到jmeter响应的文件夹下面 rem 本文件放在jmeter 脚本maven项目根目录下面,和pom.xml在同一个文件 ...

  7. GitHub创始人:我如何放弃30万美元年薪创业

    GitHub创始人:我如何放弃30万美元年薪创业 本文摘自GitHub创始人Tom Preston Werner个人博客. 时间还在2007年,我一个人独坐旧金山的Zeke 体育酒吧内.其实我并不经常 ...

  8. H.264 RTP PAYLOAD 格式

    H.264 视频 RTP 负载格式 1. 网络抽象层单元类型 (NALU) NALU 头由一个字节组成, 它的语法如下: +---------------+      |0|1|2|3|4|5|6|7 ...

  9. django admin 根据choice字段选择的不同来显示不同的页面

    一.举例 tip/tip.js var react = function () { if (django.jQuery('#id_tiptype').val() == 'content') { dja ...

  10. navicat cannot create oci 解决

    1.新建连接 2.连接时候报错 3.解决 3.1.选择对应版本OCI 3.1.配置OCI[工具->选项...]