java简易扑克牌游戏,慕课第三季作业

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lily960427/article/details/66479442

要求:

1、创建牌,分四个花色,每个花色13张,没有大小王

2、创建玩家,玩家有ID和姓名,每个人两张牌

3、洗牌,打乱牌序 利用Collections.shuffle方法,加个随机数循环多次洗牌,保证不重复。

4、发牌,发前四张

5、游戏规则:每个人选出两张中最大的进行比较,大的胜利(若大小相等则比较花色)

过程:

1、分为Card类,Player类,Game主类

2、Game类中包含CreateCards();CreatePlayers();ChangeCards();SendCards();Gameis();Compare(Caed x,Card y);这些方法

这里写图片描述

Card类:

package com.card;

public class Card {

    private String color;
    private String number;

    public Card(){

    }

    //构造器,把传进来的花色和大小传给本类的花色和属性
    public Card(String color,String number){

        this.color=color;
        this.number=number;
    }
    //返回花色
    public String getColor() {
        return color;
    }

     //返回大小
    public String getNumber() {
        return number;
    }

}

Player类:

package com.card;

public class Player {
    private String id;
    private String name;

    //空构造器
    public Player(){

    }

    public Player(String id,String name){
        this.id=id;
        this.name=name;

    }

     //返回id
    public String getId() {
        return id;
    }


    //返回姓名
    public String getName() {
        return name;
    }

}

Game类:

package com.card;


import java.util.ArrayList;  
import java.util.List;  
import java.util.Random;  
import java.util.Scanner;
import java.util.Collections;


//创建牌、玩家  CreateCards()  CreatePlayers()
//洗牌 打乱顺序  ChangeCards()  
//发牌 顺序发牌  SendCards()
//判断输赢  Gameis()

public class Game {

    public List<Card> CardList= new ArrayList<Card>();
    public List<Player> PlayerList=new ArrayList<Player>();
    public List<Card> nowCardList=new ArrayList<Card>();//当前玩家拿的牌

    public String[] color={"黑桃","红桃","梅花","方片"};
    public String[] number={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};

    public void CreateCards(){
        System.out.println("----开始创建扑克牌----");
        System.out.println("----正在创建扑克牌....");
        for (int i = 0; i < 4; i++)  
            for (int j = 0; j < 13; j++)  
                CardList.add(new Card(color[i], number[j]));


        System.out.println("----完成创建扑克牌----");
    }

    public void CreatePlayers(){

        System.out.println("请输入玩家的信息");
        Scanner input= new Scanner(System.in);

        for(int i=1;i<3;i++){
            System.out.println("请输入第"+i+"名玩家的ID");
            String id=input.next();
            System.out.println("请输入第"+i+"名玩家的名字");
            String name=input.next();
            PlayerList.add(new Player(id,name));        
        }


    }

    public void ChangeCards(){


        System.out.println("----开始洗牌....");
        Random ran =new Random();
        int x=ran.nextInt(10);
        for(int i=0;i<x;i++)
        Collections.shuffle(CardList);//引用Collections类中的shuffe方法打乱顺序
        System.out.println("----洗牌结束----");


    }

    public void SendCards(){
        System.out.println("----开始发牌----"); 
        for(int i=0;i<4;i++){
            nowCardList.add(new Card(color[i],number[i]));  
            System.out.println("玩家"+PlayerList.get(i%2).getName()+"拿牌"+nowCardList.get(i).getColor()+nowCardList.get(i).getNumber());
        }
        System.out.println("----发牌结束----");
    }

    public int Compare(Card x,Card y){
        int local1=0,local2=0,last=0;
        int local3=0,local4=0;
        for(int i=0;i<13;i++){  
            if(x.getNumber().equals(number[i]))   local1=i;//卡牌1的数字


        }

        for(int i=0;i<4;i++){   
            if(x.getColor().equals(color[i]))    local3=i;

        }
        for(int i=0;i<13;i++){  
            if(y.getNumber().equals(number[i]))   local2=i;//卡牌2的数字

        }

        for(int i=0;i<4;i++){   

            if(y.getColor().equals(color[i]))    local4=i;  
        }

        if(local1<local2){
            return 2;
        }else if(local1>local2){
            return 1;
        }else{
            if(local3<local4){
                return 2;
            }else{
                return 1;
            }

        }


    }

    public void Gameis(){
        List<Card> maxCardList= new ArrayList<Card>();

        int last1=0;
        last1=Compare(nowCardList.get(0),nowCardList.get(2));

        if(last1==1){
            maxCardList.add(nowCardList.get(0));
        }else if(last1==2){
            maxCardList.add(nowCardList.get(2));
        }

        System.out.println("玩家"+PlayerList.get(0).getName()+"最大的手牌是"+maxCardList.get(0).getColor()+maxCardList.get(0).getNumber());

        int last2=0;
        last2=Compare(nowCardList.get(1),nowCardList.get(3));
        if(last2==1){
            maxCardList.add(nowCardList.get(1));
        }else{
            maxCardList.add(nowCardList.get(3));
        }
        System.out.println("玩家"+PlayerList.get(1).getName()+"最大的手牌是"+maxCardList.get(1).getColor()+maxCardList.get(1).getNumber());

        int last3=0;

        last3=Compare(maxCardList.get(0),maxCardList.get(1));
        if(last1==1){
            System.out.println("玩家"+PlayerList.get(0).getName()+"获胜");
        }else{
            System.out.println("玩家"+PlayerList.get(1).getName()+"获胜");
        }

    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Game playgame=new Game();
        playgame.CreateCards();
        playgame.CreatePlayers();
        playgame.ChangeCards();
        playgame.SendCards();
        playgame.Gameis();

    }

}

猜你喜欢

转载自blog.csdn.net/lily960427/article/details/66479442