面向对象发牌Java_面向对象思路的斗地主发牌小程序
一共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_面向对象思路的斗地主发牌小程序相关推荐
- java斗地主发牌代码_java代码实现斗地主发牌功能
本文实例为大家分享了java实现斗地主发牌功能的具体代码,供大家参考,具体内容如下 实现斗地主发牌功能 共54张牌,地主比其他两名玩家多三张牌. 有一个card牌类和player玩家类,还有一个发牌类 ...
- c#圆的周长和面积面向对象_初遇C#:一个简单的小程序(圆形周长,面积计算器)...
作为一个面向对象的语言,与用户的交互很关键! 在此,我们可以先分析一下我们这个小程序要与用户交互的内容: 1.命名很重要,让用户看见这个程序就知道这个程序的作用. 2.当用户打开这个程序时,提示用户输 ...
- java斗地主发牌代码_JAVA代码之斗地主发牌
package com.oracle.demo01; import java.util.ArrayList; import java.util.Collections; import java.uti ...
- 一个模拟斗地主的小程序
1 需求:模拟斗地主的的游戏,并且要求控制台可以输出每个人的牌 2 分析: (1)创建一副牌(54张):用两个字符串数组分别存储牌的形状和号码,再统一存储到中ArrayList. (2)洗牌:直接调用 ...
- 微信useragent java_微信内置浏览器和小程序的 User Agent 区别及判断方法
通过UA来判断不同的设备或者浏览器是开发者最常用的方式方法,而对于微信开发和小程序也是同样的一个情况,我们可以通过微信内置浏览器 User Agent 信息来判断其具体类型或者设备. 所以子凡就通过徒 ...
- 微信读书登陆界面java_(JAVA后端)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好...
转载地址:(JAVA后端)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好 转载请注明出处 一.环境搭建 相关环境软件:JDK1 ...
- Wifi热点java_用笔记本电脑开启热点Java小程序
用笔记本电脑开启热点Java小程序是一条命令设置笔记本成无线热点, 制作"开启无线热点工具,这个小工具实际上是用java来执行cmd命令来完成操作,当然也可以反射jar里边的字节码文件. 使 ...
- 微信小程序的推广思路与方法,详细思路解析
简单来说,小程序就是微信上的APP,它内生于微信,坐享10亿流量,而且不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或者搜一下即可打开应用.今天,我们就来 ...
- 基于微信小程序的订餐类系统设计与实现完整思路
技术栈设计思路:包含微信小程序+H5+SpringBoot+IDEA+SSM+MYSQL+Maven等(如需获取源码请私信) 功能设计思路: 前台(小程序): (1)登录功能:在移动端,用户登录使用微 ...
最新文章
- WINDOWS与LINUX下的DNS轮询配置
- php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
- 如何使用python效率_Python的5中提高效率的用法
- maven02-----Maven项目构建的初次使用
- SAP ABAP 打印(smartforms方式)
- ospf 环回口的路由条目_华为OSPF基础实验
- 第二课 每天努力一点点【Linux培训实录】
- DateTime Calendar
- idea阅读器插件开发实现
- 关于c# 静态构造函数的说明
- CISCO交换机上实现MAC和端口、IP和端口、IP和MAC的绑定
- 一句代码从刷网课的劳累中解脱
- 安卓ps模拟器_用电脑玩安卓游戏!逍遥模拟器免安装版PC软件
- Mac上使用微信读书(微信读书网页版)
- 《六朝隐逸诗学研究》高智(作者)epub+mobi+azw3格式下载
- c语言24小时制转化12,在C ++中将时间从24小时制转换为12小时制
- echarts.js 官网
- C语言实现 扫雷游戏 | 简单项目
- Spring的初始化和对象创建流程
- 中国鼠标行业销售动态及营销形势分析报告(新版)2022-2027年
热门文章
- 连表查询使用in_SQL 组合查询
- OpenGL编程指南3:GLUT:OpenGL使用工具库
- c++中宏定义的妙用
- grub4dos初级教程-入门篇
- BUUCTF-Reverse:helloword + findit(安卓逆向)
- 多项式求和x+(x^2)/2!+(x^3)/3!+...
- 3D数学基础:图形与游戏开发---随笔二
- 一文看懂Python(八)-----内置高阶函数用法总结
- 谈EXPORT_SYMBOL使用
- The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online