利用java如何实现扑克牌小游戏-创新互联

这篇文章给大家分享的是有关利用java如何实现扑克牌小游戏的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

目前创新互联已为超过千家的企业提供了网站建设、域名、虚拟空间、网站托管、企业网站设计、溆浦网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

扑克牌小游戏:

游戏玩法简介:定义五个People在玩扑克牌游戏,玩法是5个人从一副没有大小王的扑克牌中各抽取4张,牌的类型有四种:♥,♣,♠,♦。牌的大小为从1~13。(此处为了简单,只取1-5)。

1、黑桃♠A在哪名玩家手中,哪名玩家就获胜。

package poker;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.concurrent.Callable;
public class Game {
 public static void main(String[] args) {
        //定义5名玩家,使用List
        List<Player> playerList=new ArrayList<>();
        playerList.add(new Player("于美人"));
        playerList.add(new Player("小婷子"));
        playerList.add(new Player("小晨子"));
        playerList.add(new Player("小艾"));
        playerList.add(new Player("小珍子"));
        //定义扑克牌顺序表
        List<Card> cardList=new ArrayList<>();
        //初始化扑克牌
        initializeCards(cardList);
        System.out.println(cardList);
        //调用collections下的shuffle(洗牌)方法
        //进行洗牌
        Collections.shuffle(cardList);
        //System.out.println("抽牌前,牌组中的牌:");
        System.out.println(cardList);
        //发牌
        int n=2;//每名玩家发几张牌
        for(int i=0;i<n;i++){//一共发n轮牌
            for(Player player:playerList){//每名玩家一次抽牌
                Card card=cardList.remove(0);//从牌组中,抽一张牌出来
                player.cardList.add(card);//把这张牌放到当前玩家的手中
            }
        }
        System.out.println("现在牌组中剩余的牌:");
        System.out.println(cardList);
        System.out.println("交换牌之前:");
      for(Player player:playerList){
            System.out.printf("玩家[%s]的手牌是: %s%n",player.name,player.cardList);
        }
        //要找的牌,方法1
        Card toFoundCard=new Card("♠",1);
        for(Player player:playerList){
            for(Card card:player.cardList){
                //比较每张牌和要找的是否为同一张牌
                if(card.equals(toFoundCard)){
                    System.out.println(player.name+"获胜");
                    return;
                }
            }
        }
        System.out.println("无人获胜");
 }
 //要找的牌,方法2
        Card toFoundCard2=new Card("♠",1);
       for(Player player:playerList){
            if(player.cardList.contains(toFoundCard)) {
                System.out.println(player.name + "获胜");
                return;
            }
          }
    private static void initializeCards(List<Card> cards){
        for(String suit:new String[]{"♠","♥","♦","♣"}){
            for(int rank=1;rank<=5;rank++){
                Card card=new Card(suit,rank);
                //把扑克牌放入牌组中
                cards.add(card);
            }
        }
    }

2、让每名玩家,依次抽取他的下家的一张手牌,然后再找♠A,找到♠A就获胜。

//添加打印手牌的方法
public static void printPlayerHandCard(List<Player> playerList){
        for(Player player:playerList){
            System.out.printf("玩家[%s]的手牌是:%s%n",player.name,player.cardList);
        }
    }
    //集体实现交换的过程
         //交换牌
        //每名玩家随机抽取下家的一张牌
        Random random=new Random();
        for(int i=0;i<playerList.size();i++){
            Player currentPlayer=playerList.get(i);
            //下家就是按照前后关系的下一个,最后一名玩家抽取第0个
            Player nextPlayer=playerList.get(i!=playerList.size()-1?i+1:0);

            //要取的牌的下标
            int toDrawIndex=random.nextInt(nextPlayer.cardList.size());
            //取牌
            Card drawCard=nextPlayer.cardList.remove(toDrawIndex);
            //放入当前玩家的手中
            currentPlayer.cardList.add(drawCard);

        }
        System.out.println("交换牌之后:");
        printPlayerHandCard(playerList);

3、于美人是赌神,她有变牌能力:她手中一旦没有♠A,她就可以把第一张牌变成♠A。(交换牌之前,有机会变一次;交换牌之后,有机会变一次)

Card toFoundCard=new Card("♠",1);
        //已知于美人的下标为0
        Player 于美人=playerList.get(0);
        if(!于美人.cardList.contains(toFoundCard)){
            于美人.cardList.set(0,toFoundCard);
        }
        System.out.println("于美人第一次发功:");
        printPlayerHandCard(playerList);
        System.out.println("交换牌之后:");
        printPlayerHandCard(playerList);
        //此处交换牌过程省略。。。。。。。。。。。。。。
        if(!于美人.cardList.contains(toFoundCard)){
            于美人.cardList.set(0,toFoundCard);
        }
        System.out.println("于美人第二次发功:");
        printPlayerHandCard(playerList);

定义玩家新的的一个类:

package poker;

import java.util.ArrayList;
import java.util.List;

public class Player {

    public List<Card> cardList=new ArrayList<>();
    public String name;
    public Player(String name){
        this.name=name;
    }
}

定义扑克牌的一个类:

package poker;
import java.util.Objects;
public class Card {
    public String suit;//花色
    public int rank;//分值
    //构造方法
    public Card(String suit,int rank){
        this.rank=rank;
        this.suit =suit;
    }
    @Override
    public String toString() {
        return String.format("[%s%d]",suit,rank);
    }
    //重写比较相等的方法
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Card card = (Card) o;
        return rank == card.rank &&
                Objects.equals(suit, card.suit);
    }
}

注意:

(1)要重新定义比较相等方法的重写。

(2)注意foreach 方法的写法。

感谢各位的阅读!关于利用java如何实现扑克牌小游戏就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!

网页题目:利用java如何实现扑克牌小游戏-创新互联
当前路径:https://www.cdcxhl.com/article40/csdeho.html

成都网站建设公司_创新互联,为您提供网站排名企业网站制作商城网站网站制作外贸建站营销型网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站制作