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

重新整理了下,基本实现了功能,不过和老师的略有不同,加油!完成第一季到第三季

package poketest;
public class card implements Comparable<card>{//记得加泛型
    String huase;
    String num;
    Double huasevalue;
    int numvalue;
    Double value;
    public card(String huase,String num,Double huasevalue,int numvalue){
        this.huase=huase;
        this.num=num;
        this.value=numvalue*10+huasevalue;
    }
    @Override
    public int compareTo(card o) {
        return this.value.compareTo(o.value);
    }
}
package poketest;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class player {
    int id;
    String name;
    List<card> handcard;
    Scanner input;
    public player(){
        handcard=new ArrayList<>();
        System.out.println("请输入玩家的id");
        input=new Scanner(System.in);
        this.id=input.nextInt();
        System.out.println("玩家id为"+this.id+"");
        System.out.println("请输入玩家的姓名");
        this.name=input.next();
        System.out.println("玩家姓名为"+this.name+"");
    }
}
package poketest;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class poke {
    //属性
    //List<card> suijipai;
    List<card> pai=new ArrayList<card>();//直接定义,为什么不能用构造方法
    player player1=new player();
    player player2=new player();
    card p1maxcard;
    card p2maxcard;

    //方法1 初始化完整的顺序牌
    public void intialCard(){
        String[] huase0={"黑桃","红桃","梅花","方片"};
        String[] num0={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
        double [] huasevalue0={1.0,2.0,3.0,4.0};
        int[] numvalue0={2,3,4,5,6,7,8,9,10,11,12,13,14};
        for(int i=0;i<4;i++){
            for(int j=0;j<13;j++){
                card c0=new card(huase0[i],num0[j],huasevalue0[i],numvalue0[j]);
                this.pai.add(c0);
            }
        }
        System.out.println("扑克初始化完成了啊");
    }
    public void show(){
        int index=0;
        System.out.println("开始展示扑克的" +
                "顺序啦啦啦");
        for (card c:this.pai) {
            System.out.print(c.huase+c.num+",");
            index++;
            if(index%13==0){
                System.out.println();
            }
        }System.out.println();
    }
    public void fapai(){
        this.player1.handcard.add(pai.get(0));
        System.out.println("玩家1摸第一张牌");
        this.player2.handcard.add(pai.get(1));
        System.out.println("玩家2摸第二张牌");
        this.player1.handcard.add(pai.get(2));
        System.out.println("玩家1摸第三张牌");
        this.player2.handcard.add(pai.get(3));
        System.out.println("玩家2摸第四张牌");
    }
    public void showMaxCard(){
        //比较player1两张牌哪个大并输出;比较player2两张牌哪个大并输出。
        Collections.sort(this.player1.handcard);
        Collections.sort(this.player2.handcard);
        p1maxcard=this.player1.handcard.get(1);
        p2maxcard=this.player2.handcard.get(1);
        System.out.println("玩家1手中最大的牌是"+p1maxcard.huase+p1maxcard.num);
        System.out.println("玩家2手中最大的牌是"+p2maxcard.huase+p2maxcard.num);
    }
    public void playerFight(){
        if(this.p1maxcard.value>this.p2maxcard.value){
            System.out.println("玩家一:"+this.player1.name+"胜利");
        }else{
            System.out.println("玩家二:"+this.player2.name+"胜利");
        }
    }
    public void showHandCard(){
        System.out.print("玩家一"+this.player1.name+"的手牌为");
        for (card showcard:this.player1.handcard) {
            System.out.print(showcard.huase+showcard.num+",");
        }
        System.out.println("---------------------------------");
        System.out.print("玩家二"+this.player2.name+"的手牌为");
        for (card showcard:this.player2.handcard) {
            System.out.print(showcard.huase+showcard.num+",");
        }
    }
}
package poketest;
import java.util.Collections;
public class mainmethod {
    public static void main(String[] args) {
        poke p1=new poke();
        p1.intialCard();
        p1.show();
        Collections.shuffle(p1.pai);
        System.out.println("洗牌!!!!!");
        p1.show();
        p1.fapai();
        p1.showMaxCard();
        p1.playerFight();
        p1.showHandCard();
    }
}

运行情况如下:

https://img3.mukewang.com/5b8218db0001a14e08081136.jpg


提问者:慕婉清9163763 2018-08-26 11:05

个回答

  • qq_不过六级不改名i_opIMVZ
    2018-11-05 15:02:08

    我想问一下我基本照着你的写的为啥会报错。就是 return this.rank.compareTO(o.rank);这一句。报错是

    Cannot invoke compareTO(int) on the primitive type int,我查了查还是没搞懂错在哪了





    package com.ft;

    public class Card implements Comparable<Card>{
       String color;
       String point;
       int rank;
      public Card(String color,String point,int rank) {
          this.color=color;
          this.point=point;
          this.rank=rank;
      }
      //public Card(){
     // };
    @Override
    public int compareTo(Card o) {
        // TODO Auto-generated method stub
        return this.rank.compareTO(o.rank);
    }
    }

  • _霞想_
    2018-09-08 22:15:19

    膜拜一下,准备开始写!