8、用java的ArrayList集合完成模擬鬥地主案例
1. 模擬鬥地主案例-普通版本
案例需求:
通過程式實現鬥地主過程中的洗牌,發牌和看牌
程式碼實現:
import java.util.ArrayList;
import java.util.Collections;
/*
思路:
1:建立一個牌盒,也就是定義一個集合物件,用ArrayList集合實現
2:往牌盒裡面裝牌
3:洗牌,也就是把牌打撒,用Collections的shuffle()方法實現
4:發牌,也就是遍歷集合,給三個玩家發牌
5:看牌,也就是三個玩家分別遍歷自己的牌
*/
public class PokerDemo {
public static void main(String[] args) {
//建立一個牌盒,也就是定義一個集合物件,用ArrayList集合實現
ArrayList<String> array = new ArrayList<String>();
//往牌盒裡面裝牌
/*
♦2,♦3,♦4...♦K,♦A
♣2,...
♥2,...
♠2,...
小王,大王
*/
//定義花色陣列
String[] colors = {"♦", "♣", "♥", "♠"};
//定義點數陣列
String[] numbers = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
for (String color : colors) {
for (String number : numbers) {
array.add(color + number);
}
}
array.add("小王");
array.add("大王");
//洗牌,也就是把牌打撒,用Collections的shuffle()方法實現
Collections.shuffle(array);
// System.out.println(array);
//發牌,也就是遍歷集合,給三個玩家發牌
ArrayList<String> lqxArray = new ArrayList<String>();
ArrayList<String> lyArray = new ArrayList<String>();
ArrayList<String> fqyArray = new ArrayList<String>();
ArrayList<String> dpArray = new ArrayList<String>();
for (int i = 0; i < array.size(); i++) {
String poker = array.get(i);
if (i >= array.size() - 3) {
dpArray.add(poker);
} else if (i % 3 == 0) {
lqxArray.add(poker);
} else if (i % 3 == 1) {
lyArray.add(poker);
} else if (i % 3 == 2) {
fqyArray.add(poker);
}
}
//看牌,也就是三個玩家分別遍歷自己的牌
lookPoker("林青霞", lqxArray);
lookPoker("柳巖", lyArray);
lookPoker("風清揚", fqyArray);
lookPoker("底牌", dpArray);
}
//看牌的方法
public static void lookPoker(String name, ArrayList<String> array) {
System.out.print(name + "的牌是:");
for (String poker : array) {
System.out.print(poker + " ");
}
System.out.println();
}
}
2. 模擬鬥地主案例-升級版本
案例需求 :
通過程式實現鬥地主過程中的洗牌,發牌和看牌。要求:對牌進行排序
程式碼實現:
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;
/*
思路:
1:建立HashMap,鍵是編號,值是牌
2:建立ArrayList,儲存編號
3:建立花色陣列和點數陣列
4:從0開始往HashMap裡面儲存編號,並儲存對應的牌。同時往ArrayList裡面儲存編號
5:洗牌(洗的是編號),用Collections的shuffle()方法實現
6:發牌(發的也是編號,為了保證編號是排序的,建立TreeSet集合接收)
7:定義方法看牌(遍歷TreeSet集合,獲取編號,到HashMap集合找對應的牌)
8:呼叫看牌方法
*/
public class PokerDemo {
public static void main(String[] args) {
//建立HashMap,鍵是編號,值是牌
HashMap<Integer, String> hm = new HashMap<Integer, String>();
//建立ArrayList,儲存編號
ArrayList<Integer> array = new ArrayList<Integer>();
//建立花色陣列和點數陣列
String[] colors = {"♦", "♣", "♥", "♠"};
String[] numbers = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
//從0開始往HashMap裡面儲存編號,並儲存對應的牌。同時往ArrayList裡面儲存編號
int index = 0;
for (String number : numbers) {
for (String color : colors) {
hm.put(index, color + number);
array.add(index);
index++;
}
}
hm.put(index, "小王");
array.add(index);
index++;
hm.put(index, "大王");
array.add(index);
//洗牌(洗的是編號),用Collections的shuffle()方法實現
Collections.shuffle(array);
//發牌(發的也是編號,為了保證編號是排序的,建立TreeSet集合接收)
TreeSet<Integer> lqxSet = new TreeSet<Integer>();
TreeSet<Integer> lySet = new TreeSet<Integer>();
TreeSet<Integer> fqySet = new TreeSet<Integer>();
TreeSet<Integer> dpSet = new TreeSet<Integer>();
for (int i = 0; i < array.size(); i++) {
int x = array.get(i);
if (i >= array.size() - 3) {
dpSet.add(x);
} else if (i % 3 == 0) {
lqxSet.add(x);
} else if (i % 3 == 1) {
lySet.add(x);
} else if (i % 3 == 2) {
fqySet.add(x);
}
}
//呼叫看牌方法
lookPoker("林青霞", lqxSet, hm);
lookPoker("柳巖", lySet, hm);
lookPoker("風清揚", fqySet, hm);
lookPoker("底牌", dpSet, hm);
}
//定義方法看牌(遍歷TreeSet集合,獲取編號,到HashMap集合找對應的牌)
public static void lookPoker(String name, TreeSet<Integer> ts, HashMap<Integer, String> hm) {
System.out.print(name + "的牌是:");
for (Integer key : ts) {
String poker = hm.get(key);
System.out.print(poker + " ");
}
System.out.println();
}
}
相關文章
- 模擬鬥地主
- 使用Java實現簡單的鬥地主案例Java
- Java鬥地主專案碎片Java
- JAVA集合-ArrayListJava
- Java集合——ArrayListJava
- 用鬥地主的例項學會使用java Collections工具類Java
- Java寫的鬥地主遊戲原始碼Java遊戲原始碼
- 【java】【集合】去除ArrayList中的元素、ArrayList巢狀ArrayListJava巢狀
- Java 集合之ArrayListJava
- Java集合之ArrayListJava
- 【Java集合】2 ArrayListJava
- Java集合(一) —— ArrayListJava
- 用Python破解鬥地主殘局Python
- Python鬥地主Python
- Java集合框架(一)-ArrayListJava框架
- 9、ArrayList集合完成學生管理系統
- Java集合 ArrayList原理及使用Java
- JAVA集合:ArrayList原始碼分析Java原始碼
- 【Java集合】ArrayList原始碼分析Java原始碼
- Java Collection介面 ArrayList集合(容器)Java
- Java集合之ArrayList原始碼解析Java原始碼
- Java List 常用集合 ArrayList、LinkedList、VectorJava
- Java 集合框架------ArrayList原始碼分析Java框架原始碼
- java集合原始碼分析(三):ArrayListJava原始碼
- 自己實現鬥地主引擎
- java集合學習(一):詳解ArrayListJava
- Java集合原始碼學習(2)ArrayListJava原始碼
- 帶你走進Java集合之ArrayListJava
- 再說Java集合,subList之於ArrayListJava
- JAVA ArrayList集合底層原始碼分析Java原始碼
- 模擬軟體應用案例輯
- Java集合原始碼剖析——ArrayList原始碼剖析Java原始碼
- 死磕 java集合之ArrayList原始碼分析Java原始碼
- Java集合-ArrayList原始碼解析-JDK1.8Java原始碼JDK
- Java集合詳解(二):ArrayList原理解析Java
- 【java】【集合】LinkedList的特有功能,用LinkList模擬棧和佇列資料結構Java佇列資料結構
- Python 三人鬥地主程式碼Python
- 由《暗黑地牢》這款「地主模擬器」引發的思考