java开发之发牌小程序
发牌规则
黑桃按照从小到大依次为: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开发之发牌小程序的更多相关文章
- Java可视化日历(Date类、DATe Format类、Calendar类综合运用),开发可视化日历小程序
Java时间日期类综合运用,开发可视化日历小程序 由键盘输入指定格式的日期,打印这个月的日历 1.代码 import java.text.DateFormat; import java.text.Pa ...
- java全栈商业小程序开发
此次开发只为学习和巩固,第一次学习开发 一.开发前需要了解: 开发框架MVVM.痛点.开源工具.VUE前端框架.微信支付模块.uni-app前端框架.小程序申请.开发工具下载.编写测试小程序.小程序结 ...
- 如何快速地开发一个微信小程序
如何快速地开发一个微信小程序呢?我觉得作为初学者,最好能有一个模板,然后改这个模板. 同样作为初学者,刚开始的时候我有下面的几个问题,后来通过问同学,我弄清楚了. 微信小程序可以连接MySQL或者Sq ...
- Java之——实现微信小程序加密数据解密算法
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79450115 一.概述 微信推出了小程序,很多公司的客户端应用不仅具有了APP.H ...
- 开发一个微信小程序教程
一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可. 2.注册成功后进入首页,在 小程序发布流程->小程序 ...
- 开发一个微信小程序项目教程
一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开 ...
- 全栈开发工程师微信小程序-中(下)
全栈开发工程师微信小程序-中(下) 微信小程序视图层 wxml用于描述页面的结构,wxss用于描述页面的样式,组件用于视图的基本组成单元. // 绑定数据 index.wxml <view> ...
- 全栈开发工程师微信小程序-中(中)
全栈开发工程师微信小程序-中(中) 开放能力 open-data 用于展示微信开放的数据 type 开放数据类型 open-gid 当 type="groupName" 时生效, ...
- 全栈开发工程师微信小程序-中
全栈开发工程师微信小程序-中 多媒体及其他的组件 navigator 页面链接 target 在哪个目标上发生跳转,默认当前小程序,可选值self/miniProgram url 当前小程序内的跳转链 ...
随机推荐
- Windows ElasticSearch中文分词配置
elasticsearch官方只提供smartcn这个中文分词插件,效果不是很好,好在国内有medcl大神(国内最早研究es的人之一)写的两个中文分词插件,一个是ik的,一个是mmseg的,下面分别介 ...
- hashCode和identityHashCode 的关系
1:首先看一下JDk API的观点 1-1:hashCode方法相关 1-2:identityHashCode()方法相关 2:此例的核心程序,对应的观点在注释中已经有所说明,请自己也动手实验一下看看 ...
- C语言中的 (void*)0 与 (void)0
前几天看到一个宏, 它大概是这样的: #define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)__FILE__, __LI ...
- 最烂编程语言得主:javascript
C++在我脑中一直是一门缺乏设计和远见的语言,其设计者也是缺少主见的人(我承认我对c++有一定偏见),在我看来,C++从一开始就是堆叠语言特性,成为最流行的语言,,只是这个时代将它推到了最前列,我心中 ...
- C#操作Sqlite快速入门及相关工具收集
Sqlite不需要安装即可使用.Sqlite是不是那个System.Data.SQLite.DLL临时创建了数据库引擎? 1.新建一个WinForm项目,引用System.Data.SQLite.DL ...
- IAR仿真时绿色箭头一直指向汇编界面,而C界面没有
设置如下
- Android颜色值(RGB)所支持的四种常见形式
Android中颜色值是通过红(Red).绿(Green).蓝(Blue)三原色,以及一个透明度(Alpha)值来表示的,颜色值总是以井号(#)开头,接下来就是Alpha-Red-Green-Blue ...
- SpringMVC之RequestContextHolder分析
最近遇到的问题是在service获取request和response,正常来说在service层是没有request的,然而直接从controlller传过来的话解决方法太粗暴,后来发现了Spring ...
- 更改 AWS RDS mysql时区 -摘自网络
AWS RDS AWS上搭建数据库的时候,不是DB on EC2就是RDS,但是选择RDS时,Timezone怎么处理? 「面向全球提供的AWS来讲理所当然的是UTC」,而RDS也不是例外.把服务器迁 ...
- 使用Spring4时, 运行时出现找不到MappingJacksonHttpMessageConverter的情况
启动项目报错: [org.springframework.web.context.ContextLoader]Context initialization failed org.springframe ...