扑克牌游戏出了问题,当比较两个相同花色牌的时候,card类里的colornum变量的值不能被输入,求大神解答?

package ifinal;

import java.util.ArrayList;

public class player {
int id;
String name;
ArrayList<card> hand=new ArrayList<card>();


public player(){
	
}

public  player(int id, String name,card hand){
	this.id=id;
	this.name=name;
	this.hand.add(hand);
	
}
}
package ifinal;

public class card {
int num;
String color;
int colornum;
	public card(String color,int num){
		this.color=color;
		this.num=num;
if(this.color.equals("黑桃")){this.colornum=4;}
if(this.color.equals("红桃")){this.colornum=3;}
if(this.color.equals("梅花")){this.colornum=2;}
if(this.color.equals("方块")){this.colornum=1;}
	}
	public card(){
		
	}
	public card compare(card obj){
		if( this.num > obj.num){
			return this;
		}
		if(this.num< obj.num){
			return obj;
		}
		if(this.num==obj.num){
			if(this.colornum>obj.colornum){
				return this;
			}
			if(this.colornum<obj.colornum){
				return obj;
			}
			
		}
		return null;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((color == null) ? 0 : color.hashCode());
		result = prime * result + colornum;
		result = prime * result + num;
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		card other = (card) obj;
		if (color == null) {
			if (other.color != null)
				return false;
		} else if (!color.equals(other.color))
			return false;
		if (colornum != other.colornum)
			return false;
		if (num != other.num)
			return false;
		return true;
	}
	
	
}
package ifinal;

import java.util.ArrayList;
import java.util.Collections;

import java.util.Scanner;
public class initial {
	ArrayList<card> possible=new ArrayList<card>();
	
	player a=new player();
	player b=new player();
public void create(){
	System.out.println("-------创建扑克牌--------");
	
	for (int i=1; i<=13;i++){
		card temp=new card();
		temp.color="黑桃";
		temp.num=i;
		possible.add(temp);
	}
	for (int i=1; i<=13;i++){
		card temp=new card();
		temp.color="梅花";
		temp.num=i;
		possible.add(temp);
	}
	for (int i=1; i<=13;i++){
		card temp=new card();
		temp.color="红桃";
		temp.num=i;
		possible.add(temp);
	}
	for (int i=1; i<=13;i++){
		card temp=new card();
		temp.color="方块";
		temp.num=i;
		possible.add(temp);
	}
	System.out.println("-------扑克牌创建完成--------");
}
public void test(){
	for(int i=0; i<=possible.size()-1;i++){
		System.out.print(possible.get(i).color+possible.get(i).num);
		
	}
	System.out.println();
	System.out.println("共有"+possible.size()+"张牌");
}

public void shuffle(){
	System.out.println("------开始洗牌----------");
	Collections.shuffle(possible);
	System.out.println("------洗牌结束----------");
}
	
public void newplayer(){
	
	Scanner s=new Scanner(System.in);
	System.out.println("请输入玩家1的id:");
	 int playerid1= s.nextInt();
	 a.id=playerid1;
	 System.out.println("请输入玩家1的姓名:");
	 String playername1= s.next();
	 a.name=playername1;
	 System.out.println("请输入玩家2的id:");
	 int playerid2= s.nextInt();
	 b.id=playerid2;
	 System.out.println("请输入玩家2的姓名:");
	 String playername2= s.next();
	 b.name=playername2;
}

public void distribute(){
	System.out.println("---------开始发牌-----------");
	System.out.println("玩家---"+a.name+"---拿牌");
	a.hand.add(possible.get(0));
	System.out.println("玩家---"+b.name+"---拿牌");
	b.hand.add(possible.get(1));
	System.out.println("玩家---"+a.name+"---拿牌");
	a.hand.add(possible.get(2));
	System.out.println("玩家---"+b.name+"---拿牌");
	b.hand.add(possible.get(3));
	System.out.println("---------发牌结束-----------");
}

public void start(){
	System.out.println("---------开始游戏...-----------");
	card Ace1=a.hand.get(0).compare(a.hand.get(1));
	card Ace2=b.hand.get(0).compare(b.hand.get(1));
	card Ace=Ace1.compare(Ace2);
	System.out.println("玩家:"+a.name+"的最大手牌为:"+Ace1.color+Ace1.num);
	System.out.println("玩家:"+b.name+"的最大手牌为:"+Ace2.color+Ace2.num);
	if(Ace.equals(Ace1)){String winner=a.name;
	System.out.println("-------玩家:"+winner+"获胜------------");}
	if(Ace.equals(Ace2)){String winner=b.name;
	System.out.println("-------玩家:"+winner+"获胜------------");}
	
	
}

public void showhand(){
	System.out.println("玩家各自手牌为:");
	System.out.println(a.name+":["+a.hand.get(0).color+a.hand.get(0).num+a.hand.get(1).color+a.hand.get(1).num+"]");
	System.out.println(b.name+":["+b.hand.get(0).color+b.hand.get(0).num+b.hand.get(1).color+b.hand.get(1).num+"]");
}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		initial I=new initial();
		I.create();
		I.test();
		I.shuffle();
		I.newplayer();
		I.distribute();
		I.showhand();
		I.start();
		
		
	}

}


慕粉3392422
浏览 1141回答 1
1回答

慕粉3392422

解决了已经。。。。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java