一共54张牌 除了大小王之外,每个点数(A-K)分为四种花色:红心 黑桃 梅花 方块

Card类(id,字面点数,大小)

NormalCard(花色)

BossCard

2.一共三名玩家,每个玩家具备id,昵称,牌集合,是否地主,筹码*

Player(id,nickname,List,isBoss)

*3.洗牌(Collections.shuffle())

*

4.发牌

4.1.随机一名地主

4.2.发牌(按顺序)

4.3.剩下最后三张牌给地主

*5.显示发牌结果(根据点数大小排序显示)

Player类(玩家类)

public class Player {

private String name;

private ArrayList handCard;

private String role;

{

role = "农民";

}

public Player() {

}

public Player(String name, ArrayList handCard) {

this.name = name;

this.handCard = handCard;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public ArrayList getHandCard() {

return handCard;

}

public void setHandCard(ArrayList handCard) {

this.handCard = handCard;

}

public String getRole() {

return role;

}

public void setRole(String role) {

this.role = role;

}

@Override

public String toString() {

handCard.sort((h1,h2)->h1.compareTo(h2));

return getName()+"{" + handCard + '}'+"\n"

+"身份:"+getRole();

}

}

卡牌类Poke

public class Poke implements Comparable{

private int pid;

private String cardName;

private int point;

public Poke() {

}

public Poke(int pid, String cardName, int point) {

this.pid = pid;

this.cardName = cardName;

this.point = point;

}

public int getPid() {

return pid;

}

public void setPid(int pid) {

this.pid = pid;

}

public String getCardName() {

return cardName;

}

public void setCardName(String cardName) {

this.cardName = cardName;

}

public int getPoint() {

return point;

}

public void setPoint(int point) {

this.point = point;

}

@Override

public String toString() {

return cardName;

}

@Override

public int compareTo(Poke o) {

return this.getPoint() - o.getPoint();

}

}

实现功能类Manage

public class Manage {

ArrayList APoke;

Player p1,p2,p3;

private Poke poke;

private int id = 1;

//创建一副扑克牌对象

public void makePoke(){

//先创建点数

String point[] = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};

//生成黑桃牌

for (int i = 0; i < point.length ; i++) {

poke = new Poke(id++,"♠"+point[i],i);

APoke.add(poke);

}

//生成红桃牌

for (int i = 0; i < point.length ; i++) {

poke = new Poke(id++,"♥"+point[i],i);

APoke.add(poke);

}

//生成梅花牌

for (int i = 0; i < point.length ; i++) {

poke = new Poke(id++,"♣"+point[i],i);

APoke.add(poke);

}

//生成方块牌

for (int i = 0; i < point.length ; i++) {

poke = new Poke(id++,"♦"+point[i],i);

APoke.add(poke);

}

poke = new Poke(id++,"JokerQueen",13);

APoke.add(poke);

poke = new Poke(id++,"JokerKing",14);

APoke.add(poke);

}

//洗牌

public void rePoke(){

Collections.shuffle(APoke);

}

//发牌

public void deal(String name){

APoke = new ArrayList<>();

makePoke();

rePoke();

ArrayList card1 = new ArrayList();

ArrayList card2 = new ArrayList();

ArrayList card3 = new ArrayList();

for (int i = 0; i <17 ; i++) {

card1.add(APoke.get(0));

APoke.remove(0);

card2.add(APoke.get(0));

APoke.remove(0);

card3.add(APoke.get(0));

APoke.remove(0);

}

p1 = new Player("p1",card1);

p2 = new Player("p2",card2);

p3 = new Player("p3",card3);

if(p1.getName().equals(name)){

card1.addAll(APoke);

p1.setHandCard(card1);

p1.setRole("地主");

}

if(p2.getName().equals(name)){

card2.addAll(APoke);

p2.setHandCard(card2);

p2.setRole("地主");

}

if(p3.getName().equals(name)){

card1.addAll(APoke);

p3.setHandCard(card3);

p3.setRole("地主");

}

}

}

游戏测试类GameTest

public class GameTest {

public static void main(String[] args) {

Manage m = new Manage();

System.out.println("请输入地主玩家名字:");

Scanner scan = new Scanner(System.in);

String boss = scan.nextLine();

m.deal(boss);

System.out.println(m.p1.toString());

System.out.println(m.p2.toString());

System.out.println(m.p3.toString());

System.out.println("底牌:" + m.APoke);

}

}

面向对象发牌Java_面向对象思路的斗地主发牌小程序相关推荐

  1. java斗地主发牌代码_java代码实现斗地主发牌功能

    本文实例为大家分享了java实现斗地主发牌功能的具体代码,供大家参考,具体内容如下 实现斗地主发牌功能 共54张牌,地主比其他两名玩家多三张牌. 有一个card牌类和player玩家类,还有一个发牌类 ...

  2. c#圆的周长和面积面向对象_初遇C#:一个简单的小程序(圆形周长,面积计算器)...

    作为一个面向对象的语言,与用户的交互很关键! 在此,我们可以先分析一下我们这个小程序要与用户交互的内容: 1.命名很重要,让用户看见这个程序就知道这个程序的作用. 2.当用户打开这个程序时,提示用户输 ...

  3. java斗地主发牌代码_JAVA代码之斗地主发牌

    package com.oracle.demo01; import java.util.ArrayList; import java.util.Collections; import java.uti ...

  4. 一个模拟斗地主的小程序

    1 需求:模拟斗地主的的游戏,并且要求控制台可以输出每个人的牌 2 分析: (1)创建一副牌(54张):用两个字符串数组分别存储牌的形状和号码,再统一存储到中ArrayList. (2)洗牌:直接调用 ...

  5. 微信useragent java_微信内置浏览器和小程序的 User Agent 区别及判断方法

    通过UA来判断不同的设备或者浏览器是开发者最常用的方式方法,而对于微信开发和小程序也是同样的一个情况,我们可以通过微信内置浏览器 User Agent 信息来判断其具体类型或者设备. 所以子凡就通过徒 ...

  6. 微信读书登陆界面java_(JAVA后端)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好...

    转载地址:(JAVA后端)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好 转载请注明出处 一.环境搭建 相关环境软件:JDK1 ...

  7. Wifi热点java_用笔记本电脑开启热点Java小程序

    用笔记本电脑开启热点Java小程序是一条命令设置笔记本成无线热点, 制作"开启无线热点工具,这个小工具实际上是用java来执行cmd命令来完成操作,当然也可以反射jar里边的字节码文件. 使 ...

  8. 微信小程序的推广思路与方法,详细思路解析

    简单来说,小程序就是微信上的APP,它内生于微信,坐享10亿流量,而且不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或者搜一下即可打开应用.今天,我们就来 ...

  9. 基于微信小程序的订餐类系统设计与实现完整思路

    技术栈设计思路:包含微信小程序+H5+SpringBoot+IDEA+SSM+MYSQL+Maven等(如需获取源码请私信) 功能设计思路: 前台(小程序): (1)登录功能:在移动端,用户登录使用微 ...

最新文章

  1. WINDOWS与LINUX下的DNS轮询配置
  2. php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
  3. 如何使用python效率_Python的5中提高效率的用法
  4. maven02-----Maven项目构建的初次使用
  5. SAP ABAP 打印(smartforms方式)
  6. ospf 环回口的路由条目_华为OSPF基础实验
  7. 第二课 每天努力一点点【Linux培训实录】
  8. DateTime Calendar
  9. idea阅读器插件开发实现
  10. 关于c# 静态构造函数的说明
  11. CISCO交换机上实现MAC和端口、IP和端口、IP和MAC的绑定
  12. 一句代码从刷网课的劳累中解脱
  13. 安卓ps模拟器_用电脑玩安卓游戏!逍遥模拟器免安装版PC软件
  14. Mac上使用微信读书(微信读书网页版)
  15. 《六朝隐逸诗学研究》高智(作者)epub+mobi+azw3格式下载
  16. c语言24小时制转化12,在C ++中将时间从24小时制转换为12小时制
  17. echarts.js 官网
  18. C语言实现 扫雷游戏 | 简单项目
  19. Spring的初始化和对象创建流程
  20. 中国鼠标行业销售动态及营销形势分析报告(新版)2022-2027年

热门文章

  1. 连表查询使用in_SQL 组合查询
  2. OpenGL编程指南3:GLUT:OpenGL使用工具库
  3. c++中宏定义的妙用
  4. grub4dos初级教程-入门篇
  5. BUUCTF-Reverse:helloword + findit(安卓逆向)
  6. 多项式求和x+(x^2)/2!+(x^3)/3!+...
  7. 3D数学基础:图形与游戏开发---随笔二
  8. 一文看懂Python(八)-----内置高阶函数用法总结
  9. 谈EXPORT_SYMBOL使用
  10. The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online