Java斗地主小游戏代码

package com.map;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.TreeSet; //斗地主public class Test_Game {public static void main(String[] args) ...
摘要由CSDN通过智能技术生成

package com.map;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;

		//斗地主

public class Test_Game {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	String[] num = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2" };
	String[] color = { "梅花", "方片", "黑桃", "红心" };
	HashMap<Integer, String> hm = new HashMap<>();
	ArrayList<Integer> list = new ArrayList<>(); // 存储索引
	int index = 0;

	for (String s1 : num) {
		for (String s2 : color) {
			hm.put(index, s2.concat(s1)); // 连接两个字符串并添加到hm中
			list.add(index);
			index++;
		}
	}
	hm.put(index, "大王");
	list.add(index);
	index++;
	hm.put(index, "小王")
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Java斗地主抢地主代码是一种实现斗地主游戏的Java程序代码。一般包括如下内容: 1. 游戏规则的设计:如何洗牌、如何发牌、如何确定地主等。 2. 斗地主的基本功能:抢地主、出牌、结算分数等。 3. 界面设计:使用Java GUI技术实现界面的设计,包括按钮、图片等。 4. AI设计:实现智能电脑玩家,使得电脑玩家能够自动出牌和抢地主。 下面是一个简单的Java斗地主抢地主代码的实现: ``` //定义一个Card类,用来表示一张扑克牌 class Card { public String suit;//花色 public String rank;//点数 public int value;//牌的大小 } //定义一个Poker类,用来表示一副扑克牌 class Poker { private static String[] suits = {"♠", "♥", "♦", "♣"}; private static String[] ranks = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"}; private static int[] values = {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; private List<Card> cards; public Poker() { cards = new ArrayList<Card>(); for (int i = 0; i < suits.length; i++) { for (int j = 0; j < ranks.length; j++) { Card card = new Card(); card.suit = suits[i]; card.rank = ranks[j]; card.value = values[j]; cards.add(card); } } Card redJoker = new Card(); redJoker.suit = "JOKER"; redJoker.rank = "Red Joker"; redJoker.value = 16; cards.add(redJoker); Card blackJoker = new Card(); blackJoker.suit = "JOKER"; blackJoker.rank = "Black Joker"; blackJoker.value = 17; cards.add(blackJoker); } //洗牌 public void shuffle() { Collections.shuffle(cards); } //发牌 public List<List<Card>> deal() { List<List<Card>> players = new ArrayList<List<Card>>(); for (int i = 0; i < 3; i++) { players.add(new ArrayList<Card>()); } for (int i = 0; i < 51; i++) { players.get(i % 3).add(cards.get(i)); } players.get(0).add(cards.get(51)); return players; } } //定义一个Player类,用来表示一个玩家 class Player { public String name;//玩家姓名 public List<Card> cards;//玩家手中的牌 public Player(String name) { this.name = name; cards = new ArrayList<Card>(); } } //定义一个Game类,用来表示斗地主游戏 class Game { private List<List<Card>> players; private List<Card> lastCards; private Player landlord; public void start() { Poker poker = new Poker(); poker.shuffle(); players = poker.deal(); //抢地主 for (int i = 0; i < 3; i++) { boolean isGrab = false; int count = 0; while (!isGrab && count < 3) { //模拟玩家操作 isGrab = grabLandlord(players.get(i)); count++; } if (isGrab) { landlord = new Player("玩家" + (i + 1)); landlord.cards.addAll(players.get(3)); System.out.println("玩家" + (i + 1) + "成为地主"); break; } } //出牌 while (true) { //模拟玩家操作 lastCards = playCards(landlord); if (lastCards == null) { break; } } //结算分数 for (int i = 0; i < 3; i++) { if (players.get(i) == landlord.cards) { continue; } int score = calculateScore(players.get(i)); System.out.println("玩家" + (i + 1) + "得分:" + score); } } //模拟玩家抢地主操作 public boolean grabLandlord(List<Card> cards) { //模拟随机抢地主或不抢 Random random = new Random(); return random.nextBoolean(); } //模拟玩家出牌操作 public List<Card> playCards(Player player) { //模拟随机出牌或不出 Random random = new Random(); if (random.nextBoolean()) { return null; } else { List<Card> cards = new ArrayList<Card>(); //模拟随机选择一组合法的牌出去 int index1 = random.nextInt(player.cards.size()); int index2 = random.nextInt(player.cards.size()); while (index2 == index1) { index2 = random.nextInt(player.cards.size()); } cards.add(player.cards.get(index1)); cards.add(player.cards.get(index2)); player.cards.removeAll(cards); return cards; } } //计算玩家得分 public int calculateScore(List<Card> cards) { int score = 0; for (Card card : cards) { if (card.suit.equals("♦")) { score += card.value; } if (card.rank.equals("K")) { score += 10; } if (card.rank.equals("A")) { score += 20; } if (card.rank.equals("2")) { score += 30; } } return score; } } public class Main { public static void main(String[] args) { Game game = new Game(); game.start(); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值