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

        利用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號
        主站蜘蛛池模板: 在线精品国产一区二区三区 | 国产美女精品一区二区三区 | 94久久国产乱子伦精品免费 | 国产成人精品久久亚洲| 亚洲线精品一区二区三区影音先锋| 久久精品国产亚洲沈樵| 无码国内精品人妻少妇蜜桃视频| 精品伦精品一区二区三区视频| 精品国产自在在线在线观看| 精品国产乱码一区二区三区| 亚洲精品乱码久久久久久不卡| 国内精品久久久久久麻豆| 久久精品国产亚洲沈樵| 国产精品久久久久久久久鸭| 日韩精品无码一区二区三区| 亚洲精品国产精品国自产观看| 国产亚洲色婷婷久久99精品91| 亚洲国产精品久久久久婷婷老年| 成人伊人精品色XXXX视频| 久久久久久久久无码精品亚洲日韩 | 久久精品无码一区二区无码| 亚洲综合欧美精品一区二区| 久久久久久久亚洲精品| 九九线精品视频在线观看| 国产高清精品在线| 亚洲国产精品自在在线观看| 久久精品国产91久久综合麻豆自制| 精品人妻系列无码天堂| 久久精品国产亚洲AV香蕉| 精品欧洲AV无码一区二区男男| 欧美精品hdvideosex4k| 久久亚洲精品无码AV红樱桃| 嫩草伊人久久精品少妇AV| 日韩精品人妻系列无码专区| 久久久久无码精品国产| 久久精品国产亚洲av水果派| 国产日韩精品欧美一区喷水 | 精品国产sm捆绑最大网免费站| 久久66热人妻偷产精品9| 成人伊人精品色XXXX视频| 久久国产精品-国产精品|