主要为了练习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();
}
}
运行结果: