简易扑克牌游戏

主要为了练习List,Map的用法,以及异常处理的应用

Poker类

public class Poker implements Comparable<Poker> {
    public String desgin;
    public String num;
    Poker(String desgin,String num){
    	this.desgin=desgin;
    	this.num=num;
    }
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((desgin == null) ? 0 : desgin.hashCode());
		result = prime * result + ((num == null) ? 0 : num.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (!(obj instanceof Poker))
			return false;
		Poker other = (Poker) obj;
		if (desgin == null) {
			if (other.desgin != null)
				return false;
		} else if (!desgin.equals(other.desgin))
			return false;
		if (num == null) {
			if (other.num != null)
				return false;
		} else if (!num.equals(other.num))
			return false;
		return true;
	}
	@Override
	//比较扑克大小(comparTo其实就是在不断调用equals)
	public int compareTo(Poker o) {
		// TODO Auto-generated method stub
		if(this.num==o.num){
			return this.desgin.compareTo(o.desgin);
		}
		else{
			return this.num.compareTo(o.num);
		}
	}

    
}

Player类

import java.util.ArrayList;
import java.util.List;


public class Player {
    
	public int id;
	public String name;
	public List<Poker> pokerList;
	Player(int id,String name){
		this.id=id;
		this.name= name;
		pokerList = new ArrayList<Poker>();
	}
	Player(){};
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + id;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		result = prime * result
				+ ((pokerList == null) ? 0 : pokerList.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (!(obj instanceof Player))
			return false;
		Player other = (Player) obj;
		if (id != other.id)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		if (pokerList == null) {
			if (other.pokerList != null)
				return false;
		} else if (!pokerList.equals(other.pokerList))
			return false;
		return true;
	}
	
}

TestGame类

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;


public class TestGame {
    
	public List<Poker> poker;//存放扑克牌
	public List<Player> player;//存放玩家信息
	Scanner Console;
	
	TestGame(){
		poker = new ArrayList<Poker>();
		player = new ArrayList<Player>();
		Console = new Scanner(System.in);
	}
	void CreatePoker(){
		System.out.println("-------------创建卡牌-------------");
		String desgin[]={"红桃","方片","黑桃","梅花"};
		String num[]={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
		for(int i=0;i<desgin.length;i++)
			for(int j=0;j<num.length;j++){
				Poker p = new Poker(desgin[i],num[j]);
				poker.add(p);				
			}
		Foreach();
		System.out.println("-------------开始洗牌-------------");
		Collections.shuffle(poker);
		Foreach();
		System.out.println("-------------洗牌结束-------------");
	}
	void CreatePlayer(){
		System.out.println("-------------创建玩家-------------");
		int i=0;
		while(i<2){
			System.out.println("请输入ID:");
			Integer id;
			//id必须是整数,异常检测
			try{
				id = scanInt();
			}catch(Exception e){
				System.out.println(e.getMessage());
				continue;
			}
			
			int flag=0;
			while(flag==0){			
				int j;
				for(j=0;j<player.size();j++){
					if(player.get(j).id==id){
						System.out.println("该id已存在,请重新输入:");
						try{
							id = scanInt();
						}catch(Exception e){
							System.out.println(e.getMessage());
						}	
					}
				}
				if(j==player.size()){
					flag=1;
				}
			}			
			System.out.println("请输入玩家姓名");
			String name = Console.next();
			player.add(new Player(id,name));
			i++;
		}
		System.out.println("------------创建玩家成功------------");		
	}
	int scanInt() throws Exception{
		try{
			int id = Console.nextInt();
			return id;
		}catch(Exception e){
			Console = new Scanner(System.in);
			throw new Exception("id需要为整数,请重新输入:");
		}
	}
	void StartGame(){
		System.out.println("欢迎玩家"+player.get(0).name);
		System.out.println("欢迎玩家"+player.get(1).name);
		System.out.println("-------------开始发牌-------------");
		System.out.println("给"+player.get(0).name+"发牌");
		player.get(0).pokerList.add(poker.get(0));
		player.get(0).pokerList.add(poker.get(1));
		System.out.println("给"+player.get(1).name+"发牌");
		player.get(1).pokerList.add(poker.get(2));
		player.get(1).pokerList.add(poker.get(3));
		System.out.println("-------------发牌结束-------------");
		Poker maxOfPlayer [] = new Poker [2];
		for(int i=0;i<2;i++){
			if(player.get(i).pokerList.get(0).compareTo(player.get(i).pokerList.get(1))>0){
				System.out.println("玩家"+player.get(i).name+"的手牌为:["+player.get(i).pokerList.get(0).desgin+player.get(i).pokerList.get(0).num+"]和"
						+ "["+player.get(i).pokerList.get(1).desgin+player.get(i).pokerList.get(1).num+"]   "
								+ "最大的为:["+player.get(i).pokerList.get(0).desgin+player.get(i).pokerList.get(0).num+"]");
				maxOfPlayer[i]=player.get(i).pokerList.get(0);
			}
			else{
				System.out.println("玩家"+player.get(i).name+"的手牌为:["+player.get(i).pokerList.get(0).desgin+player.get(i).pokerList.get(0).num+"]和"
						+ "["+player.get(i).pokerList.get(1).desgin+player.get(i).pokerList.get(1).num+"]   "
								+ "最大的为:["+player.get(i).pokerList.get(1).desgin+player.get(i).pokerList.get(1).num+"]");
				maxOfPlayer[i]=player.get(i).pokerList.get(1);
			}
		}
		if(maxOfPlayer[0].compareTo(maxOfPlayer[1])>0){
			System.out.println("--------------玩家"+player.get(0).name+"获胜--------------");
		}else{
			System.out.println("--------------玩家"+player.get(1).name+"获胜--------------");
		}
	}
	void Foreach(){
		for(Poker p:poker){
			System.out.print("["+p.desgin+p.num+"]");
		}
		System.out.println("");
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        TestGame t = new TestGame();
        t.CreatePoker();
        t.CreatePlayer();
        t.StartGame();
	}

}
运行结果:



猜你喜欢

转载自blog.csdn.net/shl_shl/article/details/59484242