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 当前小程序内的跳转链 ...
随机推荐
- SDL操作笔记
原文地址:https://blog.csdn.net/qq_38124598/article/details/73543184 这里总结一下个人对SDL的一些函数,方便以后查询. v1.0.1 1 ...
- 【C语言】字符串常量与指针
- 关于ViewPager设置属性页setCurrentItem会阻塞主线程ANR总结
关于android开发设置View Pager的直接跳转页set CurrentItem会阻塞主线程ANR. 根据网上解决的说法,分析源码: if (mFirstLayout) { // We don ...
- cucumber java从入门到精通(4)Scenario Outline及数据驱动
cucumber java从入门到精通(4)Scenario Outline及数据驱动 到目前为止,我们的TodoList类工作良好,不过离我们的预期--任务清单系统还是有不少差距,究其原因不过如下: ...
- Java Nashorn--Part 4
Nashorn 和 javax.script 包 Nashorn 并不是第一个在 Java 平台上运行的脚本语言.在Java 6 就提供了 javax.script java 包,它为脚本语言引擎提供 ...
- SQL中特殊符号的使用
1. & 在Oracle中,& 是从需要外部输入输入的变量,PS:MySqL中可以直接用"P&G"这样的字符串,故不存在本文所说的问题 如下SQL语句就不能 ...
- Linux下Socket网络编程
什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序.要学Internet上的TCP/IP网络编程, ...
- nginx 配置支持URL HTML5 History 模式 与 设置代理
拾人牙慧:https://segmentfault.com/q/1010000007140360 nginx 配置支持URL HTML5 History 模式 location / { try_fil ...
- MySQL各类日志文件相关变量介绍
文章转自:http://www.ywnds.com/?p=3721 MySQL各类日志文件相关变量介绍 查询所有日志的变量 1 mysql> show global variables li ...
- sqlite 判断表中是否包含 某个字段
数据库 都有一个 根表..(我的理解) 也就是 你创建了一个数据库 里面就带有 一个表 sqlite_master 字段有 type , name , tbl_name , rootpage ,sq ...