//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值!
运行结果:


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