站長資訊網
        最全最豐富的資訊網站

        利用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         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 方法的寫法。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲精品卡2卡3卡4卡5卡区| 2021精品国产综合久久| 亚洲AV永久青草无码精品| 精品一卡2卡三卡4卡免费视频 | 天天爽夜夜爽夜夜爽精品视频| 国产精品久久影院| 无码人妻精品一区二区三区久久 | 国产精品无码av在线播放| 无码人妻精品一区二区蜜桃百度 | 久久免费国产精品| 久久国产热这里只有精品| 亚洲高清国产拍精品青青草原| 中文精品人人永久免费| 久久99精品久久久久婷婷| 国产福利91精品一区二区三区| 99久久国产热无码精品免费| 青青草国产精品| 亚洲精品NV久久久久久久久久| 久久精品99久久香蕉国产色戒 | 国产精品99爱免费视频| 亚洲国产精品丝袜在线观看| 6一12呦女精品| 无翼乌无遮挡全彩老师挤奶爱爱帝国综合社区精品 | 亚洲午夜久久久精品影院| 伊人久久综合精品无码AV专区| 国产成人精品无码片区在线观看| 99热这里只有精品国产66| 欧美精品videosse精子| 国产精品原创巨作?v网站| 精品久久久久久久无码| 精品欧美一区二区在线看片| 久久精品亚洲一区二区三区浴池 | 亚洲欧美日韩另类精品一区二区三区| 99精品视频在线| 最新国产乱人伦偷精品免费网站 | 夜夜精品无码一区二区三区| 国产成人精品福利网站在线观看 | 中文字幕久精品免费视频| 国产精品毛片无码| 国产精品网站在线观看| 久久久久久国产精品无码超碰|