刚看完Java入门第三季,敲了一晚上的案例。在网上看到可以用Collections.shuffle()方法对List使用能达到洗牌的效果便作死尝试了一下。用了两个List表往牌堆里插入所有的牌。然后发现用集合类型并且是String属性的牌来进行比较的时候,JQKA并不好直接比较(:з」∠),便用了个比较蠢的方法来进行转换比较。萌新逻辑思路(不存在的)比较直,可能导致了代码比较冗长…参考参考就好
创建player类
package poker;
public class player {
private int ID;
private String name;
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public player(int ID,String name){
setID(ID);
setName(name);
}
}
创建Card类
package poker;
import java.util.ArrayList ;
import java.util.List;
public class Card {
public String number;
public String color;
public Card (String number,String color){
this.number=number;
this.color=color;
}
}
pokerGame类,游戏本体
package poker;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
import poker.player;
public class pokerGame {
private Scanner input=new Scanner(System.in);
List <Card> CardList=new ArrayList<Card>();//牌堆
List <Card> CardList1=new ArrayList<Card>();//P1手牌表
List <Card> CardList2=new ArrayList<Card>();//P2手牌表
player player1;//全局对象玩家1
player player2;//全局对象玩家2
public void washCard(){
//牌的大小
List <String> CNlist=new ArrayList<String>();//牌表
for(int i=1;i<10;i++){
CNlist.add(i+1+"");
}
CNlist.add("J");
CNlist.add("Q");
CNlist.add("K");
CNlist.add("A");
//牌的花色
List <String> colorList=new ArrayList<String>();//花色表
colorList.add("方块");
colorList.add("梅花");
colorList.add("红桃");
colorList.add("黑桃");
//所有牌插入牌堆
for(String x:CNlist){
for(String y:colorList){
Card z=new Card(x,y);
CardList.add(z);
}
}
//调用shuffle()方法洗牌
Collections.shuffle(CardList);
//输出牌堆
// for(Card k:CardList){
// System.out.println(k.color+k.number);
// }
System.out.println("----------洗牌完了----------");
}
public void login(){
//第一位选手输入信息
int inputID1;
while(true){
try{
System.out.println("有请第一位选手输入ID:");
Scanner input=new Scanner(System.in);
inputID1=input.nextInt();
break;
}catch(Exception e){
System.out.println("请输入整数!");
continue;
}
}
System.out.println("请第一位选手输入姓名:");
String inputName1=input.next();
player1=new player(inputID1,inputName1);
System.out.println("欢迎玩家:"+player1.getID()+"号,"+player1.getName());
//第二位选手输入信息
int inputID2;
while(true){
try{
System.out.println("有请第二位选手输入ID:");
Scanner input=new Scanner(System.in);
inputID2=input.nextInt();
break;
}catch(Exception e){
System.out.println("请输入整数!");
continue;
}
}
System.out.println("请第二位选手输入姓名:");
String inputName2=input.next();
player2=new player(inputID2,inputName2);
System.out.println("欢迎玩家:"+player2.getID()+"号,"+player2.getName());
}
public void doro(){
System.out.println("----------开始发牌----------");
//拿牌
CardList1.add(CardList.get(0));
System.out.println("----玩家:"+player1.getName()+"抽牌");
CardList2.add(CardList.get(1));
System.out.println("----玩家:"+player2.getName()+"抽牌");
CardList1.add(CardList.get(2));
System.out.println("----玩家:"+player1.getName()+"抽牌");
CardList2.add(CardList.get(3));
System.out.println("----玩家:"+player2.getName()+"抽牌");
System.out.println("-----发牌完了-----");
}
//用作比较
public String change1(String number){
if(number=="J")
number=11+"";
if(number=="Q")
number=12+"";
if(number=="K")
number=13+"";
if(number=="A")
number=14+"";
return number;
}
//用作比较
public String change2(String R){
if(R=="方块")
R=1+"";
if(R=="梅花")
R=2+"";
if(R=="红桃")
R=3+"";
if(R=="黑桃")
R=4+"";
return R;
}
public void comparable(){
System.out.println("-----游戏开始-----");
String bigP1=""; //存放玩家1最大牌数字
String bigP2=""; //存放玩家2最大牌数字
String CC1=""; //存放玩家1最大花色
String CC2=""; //存放玩家2最大花色
int T; //比较玩家1手牌数字大小
int R; //比较玩家2手牌数字大小
int B; //比较两个玩家手牌数字大小
int N; //比较两玩家手牌花色大小
String p11=CardList1.get(0).number;
p11 =change1(CardList1.get(0).number);
String c11=change2(CardList1.get(0).color);
String p12 =CardList1.get(1).number;
p12 =change1(CardList1.get(1).number);
String c12=change2(CardList1.get(1).color);
String p21=CardList2.get(0).number;
String c21=change2(CardList2.get(0).color);
p21 =change1(CardList2.get(0).number);
String p22 =CardList2.get(1).number;
p22 =change1(CardList2.get(1).number);
String c22=change2(CardList2.get(1).color);
//判断P1手牌大小
if(p11.length()>p12.length()){
bigP1=p11;
}
else if(p11.length()<p12.length()){
bigP1=p12;
}
else if(p11.length()==p12.length()){
T=p11.compareTo(p12);
if(T>0)
bigP1=p11;
if(T<0)
bigP1=p12;
if(T==0){
R=c11.compareTo(c12);
if(R>0)
{bigP1=p11;
CC1=c11;
}
else
{ bigP1=p12;
CC1=c12;
}
}
}
//判断p2手牌大小
if(p21.length()>p22.length()){
bigP2=p21;
}
else if(p21.length()<p22.length()){
bigP2=p22;
}
else if(p21.length()==p22.length()){
T=p21.compareTo(p22);
if(T>0)
bigP2=p21;
if(T<0)
bigP2=p22;
if(T==0){
R=c11.compareTo(c12);
if(R>0)
{ bigP2=p21;
CC2=c21;
}
else
{ bigP2=p22;
CC2=c22;
}
}
}
//判断玩家一最大手牌
if(bigP1==p11&&CC1==c11){
System.out.println(player1.getName()+"最大的手牌为:"+CardList1.get(0).color
+CardList1.get(0).number);
}
if(bigP1==p12&&CC1==c12){
System.out.println(player1.getName()+"最大的手牌为:"+CardList1.get(1).color
+CardList1.get(1).number);
}
else if(bigP1==p11)
System.out.println(player1.getName()+"最大的手牌为:"+CardList1.get(0).color
+CardList1.get(0).number);
else
System.out.println(player1.getName()+"最大的手牌为:"+CardList1.get(1).color
+CardList1.get(1).number);
//判断玩家二最大手牌
if(bigP2==p21&&CC2==c21){
System.out.println(player2.getName()+"最大的手牌为:"+CardList2.get(0).color
+CardList2.get(0).number);
}
if(bigP2==p22&&CC2==c22){
System.out.println(player2.getName()+"最大的手牌为:"+CardList2.get(1).color
+CardList2.get(1).number);
}
else if(bigP2==p21)
System.out.println(player2.getName()+"最大的手牌为:"+CardList2.get(0).color
+CardList2.get(0).number);
else
System.out.println(player2.getName()+"最大的手牌为:"+CardList2.get(1).color
+CardList2.get(1).number);
//比较双方最大的牌
B=bigP1.compareTo(bigP2);
if(B>0)
System.out.println("<<<<<"+player1.getID()+"号玩家:"+player1.getName()+"获胜!>>>>>");
if(B<0)
System.out.println("<<<<<"+player2.getID()+"号玩家:"+player2.getName()+"获胜!>>>>>");
if(B==0){ //若双方数字相同,则比较花色
N=CC1.compareTo(CC2);
if(N>0)
System.out.println("<<<<<"+player1.getID()+"号玩家:"+player1.getName()+"获胜!>>>>>");
else
System.out.println("<<<<<"+player2.getID()+"号玩家:"+player2.getName()+"获胜!>>>>>");
}
//输出双方最大手牌
System.out.println(player1.getID()+"号玩家"+player1.getName()+"的手牌为:["
+CardList1.get(0).color+CardList1.get(0).number+","
+CardList1.get(1).color+CardList1.get(1).number+"]");
System.out.println(player2.getID()+"号玩家"+player2.getName()+"的手牌为:["
+CardList2.get(0).color+CardList2.get(0).number+","
+CardList2.get(1).color+CardList2.get(1).number+"]");
System.out.println("-----游戏结束-----");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
pokerGame poi=new pokerGame();
poi.login();
poi.washCard();
poi.doro();
poi.comparable();
}
}
附上运行效果
点击查看更多内容
8人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦