问答详情
源自:7-1 简易扑克牌游戏

基本实现功能

//PokeGame类

package com.bae;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class PokeGame {
	List<Player> player;	
	List<Card> cards;	
	Player p1;    //玩家	
	Player p2;	
	Card p1max;   //玩家1最大的牌     
	Card p2max;   	
	Card p1min;   	
	Card p2min;   //玩家2最小的牌	
	
	//创建扑克牌数组	    
	String[] CardType=new String[] {"方块","梅花","红桃","黑桃"};	    
	String[] CardNum=new String[] {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};	    	
	public void PokeGame(){
			this.player = new ArrayList<Player>();
			this.cards = new ArrayList<Card>();
				}	    
	
	//创建扑克牌并打印	
	public void cardShow(){
			System.out.println("########创建扑克牌########");		
			for(int i=0;i<13;i++) {            
			for(int j=0;j<4;j++) {
			             cards.add(new Card(CardType[j],CardNum[i],i*10+j));
			}       
			}
	//遍历打印扑克牌		
	System.out.println("########扑克牌创建成功########");	    
	System.out.print("扑克牌为:");	    
	for(Card c:cards){	    	
	System.out.print(c.cardType+c.cardNum+",");		    
	}		
	System.out.println("共52张牌");	}			
	
	//洗牌	
	public void washCard(){		
	System.out.println("########开始洗牌########");		
	Collections.shuffle(cards);		
	System.out.println("正在努力地洗洗洗洗,请等待");		
	System.out.println("########结束洗牌########");	}		
	
	//创建玩家
	
	public void Players() {    	 
	//创建一个Scanner对象,用来获取输入的玩家ID和姓名		
	Scanner console = new Scanner(System.in);		
	int rept =0;		
	int i=0;		
	while(i<2){
			System.out.println("请输入玩家的ID:");
			String ID = null;				
			if(console.hasNextInt()){
						ID = console.next();
						for(int j=0;j<player.size();j++){
						Player pl = player.get(j);
						if(ID.equals(pl.id)){
									rept =1;							
									System.out.println("id"+pl.id+"重复");							
									}else rept=0;
									}					
						//rept为0则未被占用
						if(rept==0){						
									//提示输入玩家姓名						
									System.out.println("请输入玩家姓名:");						
									String name = console.next();						
									//创建新的玩家对象						
									Player newPlayer = new Player(ID, name);						
									//通过调用player的add方法,添加ID-玩家						
									player.add(newPlayer);						
									i++;		            
									}else{					
									System.out.println("该玩家ID已被占用");		            
									}				
									}else{					
									System.out.println("请输入整数类型的ID!请重新输入!");					
									console.next();				}				
						}
			}
	//开始游戏
	public void startGame(){		
	//开始发牌		
	System.out.println("########开始发牌########");        
	p1= player.get(0);        
	p2= player.get(1);		
	p1.handCard.add(cards.get(0));		
	System.out.println("————————————玩家:"+p1.name+"————————拿牌————————————");		
	p2.handCard.add(cards.get(1));		
	System.out.println("————————————玩家:"+p2.name+"————————拿牌————————————");		
	p1.handCard.add(cards.get(2));		
	System.out.println("————————————玩家:"+p1.name+"————————拿牌————————————");
	p2.handCard.add(cards.get(3));		
	System.out.println("————————————玩家:"+p2.name+"————————拿牌————————————");		
	System.out.println("########发牌结束########");				
        
        //开始游戏		
        System.out.println("########开始游戏########");		
        Collections.sort(p1.handCard);//对集合handCard进行排序		
        Collections.sort(p2.handCard);		
        p1max = p1.handCard.get(1);		
        p2max = p2.handCard.get(1);		
        System.out.println(p1.name+"最大的手牌:"+p1max.cardType+p1max.cardNum);   
        //输出玩家1的最大手牌		
        System.out.println(p2.name+"最大的手牌:"+p2max.cardType+p2max.cardNum);   
        //输出玩家2的最大手牌		
        if(p1max.rank>p2max.rank){  
        System.out.println("————————————!!!!玩家"+p1.name+"获胜!!!!————————————");
        }
        else{
          System.out.println("————————————!!!!玩家"+p2.name+"获胜!!!!————————————");  
          }	
        //输出玩家的手牌
        System.out.println("########玩家各自的手牌########");		
        p1min = p1.handCard.get(0);		
        p2min = p2.handCard.get(0);		
        System.out.println(p1.name+":"+p1max.cardType+p1max.cardNum+","+p1min.cardType+p1min.cardNum);		
        System.out.println(p2.name+":"+p2max.cardType+p2max.cardNum+","+p2min.cardType+p2min.cardNum);	    
        System.out.println("————————————游戏结束————————————");					} 	public static void main(String[] args){		PokeGame pg = new PokeGame();		pg.PokeGame();		pg.cardShow();		pg.washCard();		pg.Players();		pg.startGame();	}			}
//Card类

package com.bae;
public class Card implements Comparable<Card>{
	String cardType;	
	String cardNum;	
	int rank ;	
	public  Card(String cardType,String cardNum,int rank){
			this.cardType = cardType;		
			this.cardNum = cardNum;		
			this.rank = rank;
	}	    
	public Card(){
	}	  
	
	@Override	
	public int compareTo(Card o) {	    
	return this.rank-o.rank;      
	//比较rank值的大小	
	}
	
}
//Player类

package com.bae;
import java.util.ArrayList;
import java.util.List;
public class Player {	
String id;	
String name;	
List<Card> handCard;

    public  Player(String id,String name){
		this.id = id;		
		this.name = name;		
		handCard = new ArrayList<Card>();	
    }


    public Player(){
    }
}

怎么判断输入的玩家ID不要是负数呢

原本不会判断牌大小,参考了qq_冰柠檬_3的作业中,设置rank值!

运行结果:

https://img.mukewang.com/5bdabda200010a1713780791.jpg

https://img2.mukewang.com/5bdabdc8000163e213370140.jpg

提问者:BAE4U 2018-11-01 16:48

个回答

  • weixin_慕码人3577581
    2018-11-15 16:02:16

    如果输入的值小于0,可以友好提示下ID不能为负数,并且continue一下