Java實現(xiàn)撲克牌游戲的示例代碼
一、三人撲克
想不想帶上好朋友來上一局三人撲克呢。
二、具體實現(xiàn)
Card類
定義一個花色color變量和一個大小rank變量。
public class Card { public int rank; public String color; @Override public String toString() { return String.format("[%s,%d]",color,rank); } }
生成52張牌
我們先買一副新牌
public class Cards { public static final String[] COLORS = {"?","?","?","?"}; //輸入52張牌 public static List<Card> buyCard() { List<Card> list = new ArrayList<>(52); for (int i = 0; i < 4; i++) { for (int j = 1; j <= 13; j++) { String color = COLORS[i]; int rank = j; Card card = new Card(); card.color = color; card.rank =rank; list.add(card); } } return list; } }
我截取了部分圖片,我們可以發(fā)現(xiàn)這是一副新牌,按照花色大小放著,我們玩撲克的時候肯定要打亂撲克牌。
打亂順序
這個方法負責(zé)將撲克牌打亂
public static void mixed(List<Card> cards) { for (int i = 51; i > 0; i--) { Random random = new Random(); int j = random.nextInt(i); Card c = cards.get(i); cards.set(i,cards.get(j)); cards.set(j,c); } }
發(fā)牌
public static void main(String[] args) { List<Card> list = buyCard();//獲取新牌 mixed(list);//把牌打亂 List<List<Card>> lists = new ArrayList<>(); lists.add(new ArrayList<Card>()); lists.add(new ArrayList<Card>()); lists.add(new ArrayList<Card>()); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { lists.get(j).add(list.remove(0)); } } System.out.println("三個人的牌分別是: "); System.out.println(lists.get(0)); System.out.println(lists.get(1)); System.out.println(lists.get(2)); }
三、完整代碼
import java.util.ArrayList; import java.util.List; import java.util.Random; public class Card { public int rank; public String color; @Override public String toString() { return String.format("[%s,%d]",color,rank); } } public class Cards { public static final String[] COLORS = {"?","?","?","?"}; //輸入52張牌 public static List<Card> buyCard() { List<Card> list = new ArrayList<>(52); for (int i = 0; i < 4; i++) { for (int j = 1; j <= 13; j++) { String color = COLORS[i]; int rank = j; Card card = new Card(); card.color = color; card.rank =rank; list.add(card); } } return list; } public static void mixed(List<Card> cards) { for (int i = 51; i > 0; i--) { Random random = new Random(); int j = random.nextInt(i); Card c = cards.get(i); cards.set(i,cards.get(j)); cards.set(j,c); } } public static void main(String[] args) { List<Card> list = buyCard();//獲取新牌 mixed(list);//把牌打亂 List<List<Card>> lists = new ArrayList<>(); lists.add(new ArrayList<Card>()); lists.add(new ArrayList<Card>()); lists.add(new ArrayList<Card>()); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { lists.get(j).add(list.remove(0)); } } System.out.println("三個人的牌分別是: "); System.out.println(lists.get(0)); System.out.println(lists.get(1)); System.out.println(lists.get(2)); } }
到此這篇關(guān)于Java實現(xiàn)撲克牌游戲的示例代碼的文章就介紹到這了,更多相關(guān)Java撲克牌游戲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot 結(jié)合 aop 實現(xiàn)讀寫分離
這篇文章主要介紹了Spring Boot 結(jié)合 aop 實現(xiàn)讀寫分離的示例,幫助大家更好的理解和使用Spring Boot框架,感興趣的朋友可以了解下2020-11-11Spring中的BeanFactory與FactoryBean區(qū)別詳解
這篇文章主要介紹了Spring中的BeanFactory與FactoryBean區(qū)別詳解,BeanFactory是一個接口,它是spring中的一個工廠,FactoryBean也是一個接口,實現(xiàn)了3個方法,通過重寫其中方法自定義生成bean,需要的朋友可以參考下2024-01-01Spring深入分析講解BeanUtils的實現(xiàn)
java知識體系統(tǒng)有很多數(shù)據(jù)實體,比較常用的DTO、BO、DO、VO等,其他類似POJO概念太老了現(xiàn)在基本廢棄掉了,本篇幅直接忽略,對于這幾種數(shù)據(jù)實體各自代表的含義和應(yīng)用場景先做一下簡單描述和分析2022-06-06基于springboot微信公眾號開發(fā)(微信自動回復(fù))
這篇文章主要介紹了基于springboot微信公眾號開發(fā)(微信自動回復(fù)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11圖解Java?ReentrantLock公平鎖和非公平鎖的實現(xiàn)
ReentrantLock是Java并發(fā)中十分常用的一個類,具備類似synchronized鎖的作用。但是相比synchronized,?它具備更強的能力,同時支持公平鎖和非公平鎖。本文就來聊聊ReentrantLock公平鎖和非公平鎖的實現(xiàn),需要的可以參考一下2022-10-10