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)這是一副新牌,按照花色大小放著,我們玩撲克的時候肯定要打亂撲克牌。
打亂順序
這個方法負責將撲克牌打亂
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-11
Spring中的BeanFactory與FactoryBean區(qū)別詳解
這篇文章主要介紹了Spring中的BeanFactory與FactoryBean區(qū)別詳解,BeanFactory是一個接口,它是spring中的一個工廠,FactoryBean也是一個接口,實現(xiàn)了3個方法,通過重寫其中方法自定義生成bean,需要的朋友可以參考下2024-01-01
Spring深入分析講解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ù)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11
圖解Java?ReentrantLock公平鎖和非公平鎖的實現(xiàn)
ReentrantLock是Java并發(fā)中十分常用的一個類,具備類似synchronized鎖的作用。但是相比synchronized,?它具備更強的能力,同時支持公平鎖和非公平鎖。本文就來聊聊ReentrantLock公平鎖和非公平鎖的實現(xiàn),需要的可以參考一下2022-10-10

