站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        利用java實(shí)現(xiàn)簡單的撲克牌小游戲

        利用java實(shí)現(xiàn)簡單的撲克牌小游戲

        撲克牌小游戲:

        (推薦教程:java課程)

        游戲玩法簡介:定義五個(gè)People在玩撲克牌游戲,玩法是5個(gè)人從一副沒有大小王的撲克牌中各抽取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);         //調(diào)用collections下的shuffle(洗牌)方法         //進(jìn)行洗牌         Collections.shuffle(cardList);         //System.out.println("抽牌前,牌組中的牌:");         System.out.println(cardList);         //發(fā)牌         int n=2;//每名玩家發(fā)幾張牌         for(int i=0;i<n;i++){//一共發(fā)n輪牌             for(Player player:playerList){//每名玩家一次抽牌                 Card card=cardList.remove(0);//從牌組中,抽一張牌出來                 player.cardList.add(card);//把這張牌放到當(dāng)前玩家的手中             }         }         System.out.println("現(xiàn)在牌組中剩余的牌:");         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);         }     }     //集體實(shí)現(xiàn)交換的過程          //交換牌         //每名玩家隨機(jī)抽取下家的一張牌         Random random=new Random();         for(int i=0;i<playerList.size();i++){             Player currentPlayer=playerList.get(i);             //下家就是按照前后關(guān)系的下一個(gè),最后一名玩家抽取第0個(gè)             Player nextPlayer=playerList.get(i!=playerList.size()-1?i+1:0);              //要取的牌的下標(biāo)             int toDrawIndex=random.nextInt(nextPlayer.cardList.size());             //取牌             Card drawCard=nextPlayer.cardList.remove(toDrawIndex);             //放入當(dāng)前玩家的手中             currentPlayer.cardList.add(drawCard);          }         System.out.println("交換牌之后:");         printPlayerHandCard(playerList);

        3、于美人是賭神,她有變牌能力:她手中一旦沒有♠A,她就可以把第一張牌變成♠A。(交換牌之前,有機(jī)會(huì)變一次;交換牌之后,有機(jī)會(huì)變一次)

        Card toFoundCard=new Card("♠",1);         //已知于美人的下標(biāo)為0         Player 于美人=playerList.get(0);         if(!于美人.cardList.contains(toFoundCard)){             于美人.cardList.set(0,toFoundCard);         }         System.out.println("于美人第一次發(fā)功:");         printPlayerHandCard(playerList);         System.out.println("交換牌之后:");         printPlayerHandCard(playerList);         //此處交換牌過程省略。。。。。。。。。。。。。。         if(!于美人.cardList.contains(toFoundCard)){             于美人.cardList.set(0,toFoundCard);         }         System.out.println("于美人第二次發(fā)功:");         printPlayerHandCard(playerList);

        定義玩家新的的一個(gè)類:

        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;     } }

        定義撲克牌的一個(gè)類:

        package poker; import java.util.Objects; public class Card {     public String suit;//花色     public int rank;//分值     //構(gòu)造方法     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)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 国产精品第一页在线| 亚洲国产精品自在拍在线播放| 蜜臀久久99精品久久久久久| 国产精品成人观看视频免费| 亚洲国产精品无码专区在线观看| 国产高清国内精品福利99久久| 久久久久99精品成人片欧美| 精品欧美小视频在线观看| 一区二区三区四区精品视频| 第一福利永久视频精品| 久久精品国产网红主播| 亚洲第一极品精品无码久久| 免费精品精品国产欧美在线欧美高清免费一级在线 | 91精品国产91久久久久福利| 无码人妻精品一区二区在线视频| 四虎国产精品成人免费久久| 久久久久久亚洲精品无码| 国内精品久久久久久麻豆| 国产精品久久久久一区二区三区| 欧美成人精品一级高清片| 国产精品福利网站导航| 500av导航大全精品| 国产精品1024香蕉在线观看| 538国产精品一区二区在线| 激情亚洲一区国产精品| 久久99国产精品尤物| 国产在线精品无码二区| 国产精品99久久99久久久| 国内精品九九久久久精品| 国产麻豆精品久久一二三| 精品欧洲av无码一区二区三区| 老司机67194精品线观看| 久久精品国产精品亚洲毛片| 精品国产一区二区三区不卡 | 在线精品视频一区二区| 无码AV动漫精品一区二区免费| 热久久国产欧美一区二区精品| 亚洲七七久久精品中文国产| 亚洲精品二区国产综合野狼 | 久久久久久久久无码精品亚洲日韩 | 精品熟女少妇a∨免费久久|