java实现斗地主发牌系统

网友投稿 240 2022-12-08


java实现斗地主发牌系统

本文实例为大家分享了java实现斗地主发牌系统的具体代码,供大家参考,具体内容如下

玩家类

package com.softeem.example;

import java.util.ArrayList;

import java.util.List;

/**

* 玩家类

*

*/

public class Player {

private String name; //名字

private boolean landowner; //是否地主

private List cards = new ArrayList<>(); //手中的所有牌

public Player() {

// TODO Auto-generated constructor stub

}

public Player(String name) {

super();

this.name = name;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public boolean isLandowner() {

return landowner;

}

public void setLandowner(boolean landowner) {

this.landowner = landowner;

}

public List getCards() {

return cards;

}

public void setCards(List cards) {

this.cards = cards;

}

@Override

public String toString() {

return name+"-是否地主:"+landowner+"->"+cards;

}

}

牌类

package com.softeem.example;

/**

* 牌类

*

*/

public class Card implements Comparable{

private int num;//点数

private String name;//牌面

private String flower;//花色

public Card() {

// TODO Auto-generBfiluqADVDated constructor stub

}

public Card(int num, String name, String flower) {

super();

this.num = num;

this.name = name;

this.flower = flower;

}

public int getNum() {

return num;

}

public void setNum(int num) {

this.num = num;

}

public String getFlower() {

return flower;

}

public void setFlower(String flower) {

this.flower = flower;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Override

public int compareTo(Card c) {

return this.num - c.num;

}

@Override

public String toString() {

return name+"-"+flower+"-"+num;

}

}

package com.softeem.example;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

import java.util.Random;

import java.util.Scanner;

public class PokerGame {

static List list = new ArrayList<>(); //所有牌集合

static List players = new ArrayList<>(); //玩家集合

static int position; //初始化当前发牌的位置

static String[] flowers = {"红桃","方片","梅花","黑桃"};

static String[] names = {"3","4","5","6","7","8","9","10","J","Q","K","A","2","小王","大王"};

/**

* 初始化所有牌面和玩家

*/

static{

int i = 0;

//遍历所有的牌面值(除大小王:大小王无花色)

for (; i < names.length - 2; i++) {

for (int j = 0; j < flowers.length; j++) {

list.add(new Card(i, names[i], flowers[j]));

}

}

list.add(new Card(i++, names[names.length-2], null));

list.add(new Card(i++, names[names.length-1], null));

}

/**

* 初始化玩家

*/

public void initPlayer(){

players.clear();

players.add(new Player("盖伦"));

players.add(new Player("艾希"));

players.adhttp://d(new Player("玛尔扎哈"));

}

/**

* 洗牌

*/

public void shuffle(){

//索引重置

position = 0;

Collections.shuffle(list);

Collections.shuffle(list);

Collections.shuffle(list);

start();

}

/**

* 发牌

*/

public void sendCards(){

//准备玩家

initPlayer();

//随机地主(索引)

int index = new Random().nextInt(players.size());

//设置为地主

players.get(index).setLandowner(true);

Card now = null;

while(position < list.size() - 3){

//获取最上面的一张牌

now = list.get(position);

if(position % 3 == 0){

players.get(0).getCards().add(now);

}else if(position % 3 == 1){

players.get(1).getCards().add(now);

}else{

players.get(2).getCards().add(now);

}

position++;

}

//获取集合中的最后三张牌

List last = list.subList(list.size()-3, list.size());

//将最后三张牌给地主

players.get(index).getCards().addAll(last);

//显示

show();

}

/**

* 显示发牌结果

*/

public void show(){

//排序

Collections.sort(players.get(0).getCards());

Collections.sort(players.get(1).getCards());

Collections.sort(players.get(2).getCards());

players.stream().forEach(p->System.out.println(p));

start();

}

public void start(){

System.out.println("***********欢乐斗地主***********");

System.out.println("***********【1】洗牌***********");

System.out.println("***********【2】发牌***********");

Scanner sc = new Scanner(System.in);

String i = sc.nextLine();

if(!i.matches("^\\d{1}$")){

System.out.println("请输入正确的指令!");

start();

return;

}

switch(i){

case "1":

shuffle();

break;

case "2":

sendCards();

break;

default:

System.out.println("指令不正确");

start();

break;

}

}

public static void main(String[] args) {

new PokerGame().start();

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java实现简易扑克牌游戏
下一篇:SpringBoot结合Redis哨兵模式的实现示例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~