Java小实例——扑克游戏

package cardGame;

/**
 * 扑克牌类,用来储存扑克牌
 */
public class Card {
	private String color;
	private String cardnum;
	public  static String[] color_name ={ new String("黑头"),
								   new String("红头"),
								   new String("梅花"),
								   new String("方片")};
	public static String[] num_name = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
	/**
	 * 扑克牌构造器
	 */
	public Card(){
		
	}
	public Card(String color, String cardnum) {
		this.color = color;
		this.cardnum = cardnum;
	}

	/**
	 * 获取color属性
	 */
	public String getColor() {
		return color;
	}

	/**
	 * 获取cardnum属性
	 */
	public String getCardnum() {
		return cardnum;
	}
}

 

package cardGame;

/**
 * 玩家类,用来记录玩家的信息
 */
public class Player {
	private String id;
	private String name;
	public Player(){
		
	}
	public Player(String id,String name){
		this.id=id;
		this.name=name;
	}
	public String getId(){
		return id;
	}
	public String getName(){
		return name;
	}
}

 

package cardGame;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

/**
 * 打扑克牌类
 * 1.实现创建一副牌的功能 
 * 2.实现随机发牌功能 
 * 3.实现判定输赢功能
 */
public class PlayGame extends Thread {
	// Card类型的List用来储存扑克牌
	public List<Card> CardList = new ArrayList<Card>();
	// 用来储存玩家信息
	public List<Player> PlayerList = new ArrayList<Player>();
	// 用来储存玩家手中的牌
	public List<Card> playCardList = new ArrayList<Card>();

	/**
	 * 创建两个玩家的方法
	 */
	@SuppressWarnings("resource")
	public void CreatPlayer() {
		System.out.println("输入玩家信息");
		Scanner input = new Scanner(System.in);
		int i = 1;
		while (i < 3) {
			System.out.println("请输入第" + i + "位玩家的ID和姓名:");
			System.out.println("输入ID:");
			String id = input.next();
			System.out.println("输入姓名:");
			String name = input.next();
			PlayerList.add(new Player(id, name));
			i++;
		}
	}

	/**
	 * 实现创建一副扑克牌的方法
	 */
	public void CreatCard() {
		System.out.println("创建扑克牌!");
		for (int i = 0; i < 4; i++)
			for (int j = 0; j < 13; j++)
				CardList.add(new Card(Card.color_name[i], Card.num_name[j]));
		System.out.println("正在创建扑克牌...");
		try {
			Thread.sleep(500);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("扑克牌创建成功!");
	}

	/**
	 * 实现随机发牌的方法
	 */
	public void dealCard() {
		System.out.println("开始洗牌...");
		try {
			Thread.sleep(500);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("洗牌结束,开始发牌!每位玩家依次发两张牌!");
		System.out.println("开始发牌...");
		Random random = new Random();
		int m, n;
		for (int i = 0; i < 4; i++) {
			do {
				m = random.nextInt(4);
				n = random.nextInt(13);
			} while (playCardList.contains(new Card(Card.color_name[m], Card.num_name[n])));
			playCardList.add(new Card(Card.color_name[m], Card.num_name[n]));
			System.out.println("玩家:" + PlayerList.get(i % 2).getName() + "拿牌");
		}
		System.out.println("发牌结束!");
	}

	/**
	 * 实现游戏规则的方法
	 */
	public void PlayGameRule() {
		int max1 = 0, max2 = 0, min1 = 0, min2 = 0;
		int k=0,r=1;
		for (int i = 0; i < 13; i++) {
			if (playCardList.get(0).getCardnum().equals(Card.num_name[i]))
				max1 = i;
			if (playCardList.get(1).getCardnum().equals(Card.num_name[i]))
				max2 = i;
			if (playCardList.get(2).getCardnum().equals(Card.num_name[i]))
				min1 = i;
			if (playCardList.get(3).getCardnum().equals(Card.num_name[i]))
	            min2 = i;
		}
		if(max1<min1){
			max1=min1;
			k=2;
			}
		if(max2<min2){
			max2=min2;
			r=3;
			}
		System.out.println("开始游戏!");
		System.out.println("玩家:"+PlayerList.get(0).getName()
				+"最大的手牌为:"+playCardList.get(k).getColor()
				+playCardList.get(k).getCardnum());
		System.out.println("玩家:"+PlayerList.get(1).getName()
				+"最大的手牌为:"+playCardList.get(r).getColor()
				+playCardList.get(r).getCardnum());
		if(max1>max2)
			System.out.println("玩家:"+PlayerList.get(0).getName()+"获胜!");
		else if(max1==max2){
			int m=0,n=0;
			for(int i=0;i<4;i++){
				if(playCardList.get(k).getColor().equals(Card.color_name[i]))
					m=i;
				if(playCardList.get(r).getColor().equals(Card.color_name[i]))
					n=i;
			}
			if(m<n)
				System.out.println("玩家:"+PlayerList.get(0).getName()+"获胜!");
			else if(m>n)
				System.out.println("玩家:"+PlayerList.get(1).getName()+"获胜!");
			else
				System.out.println("游戏出现异常!!!");
		}
		else
			System.out.println("玩家:"+PlayerList.get(1).getName()+"获胜!");
	System.out.println("玩家各自的手牌为:");
	System.out.println(PlayerList.get(0).getName()+":["+playCardList.get(0).getColor()
			+playCardList.get(0).getCardnum()+","+playCardList.get(2).getColor()
			+playCardList.get(2).getCardnum()+"]");
	System.out.println(PlayerList.get(1).getName()+":["+playCardList.get(1).getColor()
			+playCardList.get(1).getCardnum()+","+playCardList.get(3).getColor()
			+playCardList.get(3).getCardnum()+"]");
	}

	/**
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		PlayGame playgame = new PlayGame();
		playgame.CreatCard();
		playgame.CreatPlayer();
		playgame.dealCard();
		playgame.PlayGameRule();

	}

}


  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值