栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java实现斗地主游戏

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java实现斗地主游戏

感想:

第一次写博客,感觉编辑器挺复杂厉害的,感觉自己的内容挺简单的。有什么问题请多多指教!

思路:

1、创建一个扑克牌的实体类Poker,设置了四个参数:花色、数字、牌值(判断大小)、是否地主牌,实现getset方法和构造方法;
2、创建一个玩家的实体类Player,设置了四个参数: 初始牌集合,排序后牌集合,牌值集合,是否地主,实现getset方法和构造方法;
3、洗牌:循环嵌套花色数组跟数字数组生成52个Poker,手动加入大小王Poker,放进map(int,Poker)里面,利用Collections.shuffle随机排序map的key,再根据key生成排序后的Poker集合
4、发牌:生成3个玩家对象,拿到洗牌后的集合,前51张牌为玩家牌,后3张为地主牌,在51张牌中随机一张为地主牌,遍历玩家牌分配个每一个Player,同时根据玩家牌的牌值生成集合grades存进Player对象中,将grades转为int数组并进行升序排序,根据grade取得新Poker集合分配给玩家。

Poker类:

package com.company;

public class Poker {
 private String color;
 private String number;
 private int grade;
 boolean isLandowners;

 public boolean isLandowners() {
 return isLandowners;
 }

 public void setLandowners(boolean landowners) {
 isLandowners = landowners;
 }

 public int getGrade() {
 return grade;
 }

 public void setGrade(int grade) {
 this.grade = grade;
 }

 public String getColor() {
 return color;
 }

 public void setColor(String color) {
 this.color = color;
 }

 public String getNumber() {
 return number;
 }

 public void setNumber(String number) {
 this.number = number;
 }

 public Poker() {
 }

 public Poker(String color, String number ,int grade,boolean isLandowners) {
 this.color = color;
 this.number = number;
 this.grade=grade;
 this.isLandowners=isLandowners;
 }


 public String toString() {
 return this.getColor()+this.getNumber();
 }
}

Player类:

package com.company;

import java.util.ArrayList;
import java.util.linkedList;

public class Player {
 private ArrayList pokers;
 private boolean isLandower;
 private ArrayList newPokers;
 private linkedList grades;

 public linkedList getGrades() {
 return grades;
 }

 public void setGrades(linkedList grades) {
 this.grades = grades;
 }

 public ArrayList getNewPokers() {
 return newPokers;
 }

 public void setNewPokers(ArrayList newPokers) {
 this.newPokers = newPokers;
 }

 public boolean isLandower() {
 return isLandower;
 }

 public void setLandower(boolean landower) {
 isLandower = landower;
 }

 public Player() {
 }

 public ArrayList getPokers() {
 return pokers;
 }

 public void setPokers(ArrayList pokers) {
 this.pokers = pokers;
 }
}

洗牌:


 public static linkedList getPokerList() {
 linkedList pokers = new linkedList();
 linkedList newPokers = new linkedList();
 ArrayList arrayList = new ArrayList<>();
 int[] arr;

 
 
 String[] colors = {"♦", "♣", "♥", "♠"};
 String[] numbers = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
 for (int i = 0; i < numbers.length; i++) {
 for (int j = 0; j < colors.length; j++) {
 Poker p = new Poker(colors[j], numbers[i], (4 * i) + j + 1, false);
 pokers.add(p);
 }
 }
 
 pokers.add(new Poker("black", "☆", 53, false));
 pokers.add(new Poker("red", "☆", 54, false));

 
 for (int z = 1; z <= pokers.size(); z++) {
 map.put(z, pokers.get(z - 1));
 }
 
 Set> set = map.entrySet();
 Iterator it = set.iterator();
 while (it.hasNext()) {
 Map.Entry e = (Map.Entry) it.next();
 arrayList.add(e.getKey());
 }
 
 Collections.shuffle(arrayList);
 
 for (Integer i : arrayList) {
 newPokers.add(map.get(i));
 }

 return newPokers;
 }

发牌:


 
 private static void sentPoker(int num) {
 
 linkedList Allpokers = getPokerList();
 ArrayList pokers = new ArrayList<>();
 ArrayList BottomPokers = new ArrayList<>();

 
 for (int i = 0; i < num; i++) {
 Player p = new Player();
 players.add(p);
 }
 
 for (int p = 0; p < Allpokers.size(); p++) {
 if (p <= 50) {
 pokers.add(Allpokers.get(p));
 } else {
 BottomPokers.add(Allpokers.get(p));
 }
 }
 
 Random rand = new Random();
 int s = rand.nextInt(51);
 pokers.get(s).setLandowners(true);
 System.out.println("地主牌: " + pokers.get(s));

 
 for (int j = 0; j < num; j++) {
 
 linkedList grades = new linkedList<>();
 
 ArrayList playerPokers = new ArrayList();

 
 for (int z = j; z < pokers.size(); z = z + num) {
 playerPokers.add(pokers.get(z));
 grades.add(pokers.get(z).getGrade());
 players.get(j).setPokers(playerPokers);
 players.get(j).setGrades(grades);
 }
 
 for (Poker p : players.get(j).getPokers()) {
 if (p.isLandowners() == true) {
  players.get(j).setLandower(true);
 }
 }
 
 Integer[] gs = new Integer[players.get(j).getGrades().size()];
 grades.toArray(gs);
 
 Arrays.sort(gs);

 
 ArrayList newPokers = new ArrayList<>();
 for (int g = 0; g < gs.length; g++) {
 Poker p = map.get(gs[g]);
 newPokers.add(p);
 }
 players.get(j).setNewPokers(newPokers);
 System.out.println("玩家" + (j + 1) + ": " + players.get(j).getNewPokers() + " 是否地主:" + players.get(j).isLandower());
 }

 System.out.print("底牌为: ");
 for (Poker p : BottomPokers) {
 System.out.print(p + " ");
 }
 }

效果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/139144.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号