首页后端开发其他后端知识java也可以做游戏吗,如何制作扑克牌游戏

java也可以做游戏吗,如何制作扑克牌游戏

时间2024-03-27 13:08:04发布访客分类其他后端知识浏览338
导读:这篇文章给大家分享的是“java也可以做游戏吗,如何制作扑克牌游戏”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“java也可以做游戏吗,如何制作扑克牌游戏”吧。...
这篇文章给大家分享的是“java也可以做游戏吗,如何制作扑克牌游戏”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“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
        ListPlayer>
     playerList=new ArrayList>
    ();
    
        playerList.add(new Player("于美人"));
    
        playerList.add(new Player("小婷子"));
    
        playerList.add(new Player("小晨子"));
    
        playerList.add(new Player("小艾"));
    
        playerList.add(new Player("小珍子"));
    
        //定义扑克牌顺序表
        ListCard>
     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;
    in;
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(ListCard>
 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(ListPlayer>
 playerList){

        for(Player player:playerList){
    
            System.out.printf("玩家[%s]的手牌是:%s%n",player.name,player.cardList);

        }

    }
    
    //集体实现交换的过程
         //交换牌
        //每名玩家随机抽取下家的一张牌
        Random random=new Random();
    
        for(int i=0;
    iplayerList.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 ListCard>
     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也可以做游戏吗,如何制作扑克牌游戏”已经有了进一步的了解,更多相关的问题,欢迎关注网络或到官网咨询客服。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

java

若转载请注明出处: java也可以做游戏吗,如何制作扑克牌游戏
本文地址: https://pptw.com/jishu/654239.html
用node怎样开发一个mycli命令行工具 如何使用node开发一个命令行压缩工具

游客 回复需填写必要信息