黑马程序员技术交流社区
标题:
Java之通过集合模拟斗地主游戏【随机奖励黑马币】
[打印本页]
作者:
万合天宜
时间:
2015-2-8 19:35
标题:
Java之通过集合模拟斗地主游戏【随机奖励黑马币】
import java.util.HashMap;
import java.util.ArrayList;
import java.util.Collections;
import java.util.TreeSet;
/*
* 需求:模拟斗地主游戏
*
* 思路:
* 用 HashMap 来存储牌:定义一个对应的索引,以键为索引,值为牌的对应关系存入 hashMap 集合
* 用 ArrayList 来存储索引,看牌的时候,通过索引来拿对应的牌。同时,发牌为了保证牌的顺序,所以用 TreeSet 来接收牌。
*/
public class PokerDemo {
public static void main(String[] args) {
// 分析:
// 1、创建一副牌(集合)
// 创建 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" };
// 定义一个索引
int index = 0;
// 把牌的颜色和数字组合在一块儿
// 通过双重 for 循环,得到每一个牌的颜色和数字
for (String number : numbers) {
for (String color : colors) {
// 获取到每一张牌
String poker = color.concat(number);
// 把牌和索引添加进 HashMap 集合
hm.put(index, poker);
// 把索引添加进 ArrayList 集合
array.add(index);
// 索引自增
index++;
}
}
// 创建大小王
hm.put(index, "小王");
array.add(index);
index++;
hm.put(index, "大王");
array.add(index);
// 2、洗牌
// 调用 Collections 的 shuffle 方法:随机置换功能
Collections.shuffle(array);
// 3、发牌
// 创建玩家和底牌 TreeMap 集合
TreeSet<Integer> wanPing = new TreeSet<Integer>();
TreeSet<Integer> maoXuePing = new TreeSet<Integer>();
TreeSet<Integer> yangXiao = new TreeSet<Integer>();
TreeSet<Integer> diPai = new TreeSet<Integer>();
// 用取模的方式,进行发牌
for (int x = 0; x < array.size(); x++) {
// 剩余的3张底牌
if (x >= array.size() - 3) {
diPai.add(array.get(x));
} else if (x % 3 == 1) {
wanPing.add(array.get(x));
} else if (x % 3 == 2) {
maoXuePing.add(array.get(x));
} else if (x % 3 == 0) {
yangXiao.add(array.get(x));
}
}
// 4、看牌
// 调用看牌功能即可
lookPoker("万平", wanPing, hm);
lookPoker("毛雪平", maoXuePing, hm);
lookPoker("杨晓", yangXiao, hm);
lookPoker("底牌", diPai, hm);
}
// 由于有三个人看牌,所以定义看牌功能
public static void lookPoker(String name, TreeSet<Integer> ts,
HashMap<Integer, String> hm) {
System.out.println(name + "的牌是:");
// 遍历 TreeSet 集合,获得索引
for (Integer key : ts) {
// 通过索引获取值
String value = hm.get(key);
System.out.print(value + " ");
}
System.out.println();
}
}
复制代码
作者:
guiqi225
时间:
2015-2-8 20:44
最喜欢这种贴了,尽管你的代码我还是看不太懂~~~
作者:
jojo
时间:
2015-2-8 20:58
来看看,O(∩_∩)O
作者:
janstk
时间:
2015-2-8 21:04
真的送吗?LZ土豪不解释。。
作者:
张_磊
时间:
2015-2-8 22:53
不明觉厉!
作者:
coolmiao13
时间:
2015-2-8 23:07
运行了一下,貌似是发牌的游戏,回去好好看看。
作者:
些许
时间:
2015-2-8 23:22
路过 打个酱油!!!
作者:
张思语
时间:
2015-2-8 23:25
我只能说你的照片和昵称为你的代码加分了?要是送技术分,那我旧就是最爱的!
作者:
俺做android开发
时间:
2015-2-9 13:26
真有黑马币吗
作者:
Oo不弃
时间:
2015-2-9 14:35
原来是发牌程序。
作者:
书生灬流年
时间:
2015-2-9 14:45
支持一下 回去研究研究
作者:
xiaoyi
时间:
2015-2-9 18:28
先复制一下再看看
作者:
时间都去哪了
时间:
2015-2-9 19:41
有奖励的贴子我最喜欢了
作者:
qiuyuhuaihua
时间:
2015-2-9 20:40
楼主真是有心了,感谢技术分享!
作者:
小丑
时间:
2015-2-9 21:27
大爱这种贴!! 新手可以好好看看~学习学习~
作者:
huangchunwei
时间:
2015-2-9 23:08
楼主棒棒哒!!!但是代码看不懂。。。
作者:
浮夸
时间:
2015-2-11 09:52
{:3_53:}感觉很吊的样子
作者:
a410709560
时间:
2015-2-21 18:07
感谢分享!!!
作者:
Aily
时间:
2015-2-21 23:21
我只会做出来发牌。。
作者:
linuxpara910829
时间:
2015-2-22 02:18
好贴 技术的整合 研究研究
作者:
ZZGFF
时间:
2015-2-22 04:09
酱油来。
作者:
书生灬流年
时间:
2015-2-22 06:59
厉害!!!
作者:
franksight
时间:
2015-2-22 07:45
来看看。。。不错
作者:
qwe2820435o2
时间:
2015-2-22 09:59
好吧,还没学到~不明觉厉:)
作者:
H马凯
时间:
2015-2-23 22:48
好厉害!!!
作者:
xyf19881010
时间:
2015-2-23 22:56
楼主好样的
作者:
鲍阳
时间:
2015-2-25 15:28
还有黑马币奖励吗
作者:
正在输入...
时间:
2015-2-25 16:13
斗地主发牌程序。
作者:
yang4414
时间:
2015-11-24 02:09
打打酱油!!!!!!!!!!!!!
作者:
woxinfeixiang
时间:
2015-11-25 21:50
好牛逼!
作者:
serge
时间:
2015-11-26 13:56
最喜欢这种贴了,尽管你的代码我还是看不太懂~~
作者:
清风徐来_1
时间:
2015-11-27 19:06
好厉害666
作者:
吴志超
时间:
2015-12-5 23:08
有奖励的贴子我最喜欢了
作者:
liuxingyu
时间:
2015-12-6 20:06
喜欢这种贴了,尽管你的代码我还是看不太懂~~~
作者:
雪山飞熊
时间:
2015-12-7 10:43
来看看,O(∩_∩)O
作者:
尼玛大叔
时间:
2015-12-7 20:36
大神求带啊
作者:
hmgui7219
时间:
2015-12-10 21:33
大神的东西
作者:
zfx435199612
时间:
2015-12-16 00:09
加油,努力,相信自己!
作者:
yyt199108
时间:
2015-12-16 18:47
来看看,呵呵
作者:
木头小丸子
时间:
2015-12-27 13:07
我也是,尽管看不懂,但还是可以膜拜
作者:
湘陵依点
时间:
2015-12-27 23:03
已阅,飘过
作者:
信徒的前行
时间:
2016-1-5 04:19
厉害!用到的东西挺多的!
作者:
jinxiaodong
时间:
2016-1-7 16:59
先保存下,等通过考试了,好好研究下
作者:
1210871468
时间:
2016-1-7 21:38
66666666666666
作者:
李佳儒
时间:
2016-1-9 21:51
楼主,楼主俺是小白,来顶你
作者:
湘陵依点
时间:
2016-1-9 23:16
来看看,O(∩_∩)O
作者:
执笔写毛头
时间:
2016-1-15 23:42
写的不错 这个代码很有用 赞一个
作者:
ZhuHuaLei0903
时间:
2016-1-15 23:54
我是才上了五天课的小白 这个帖子自己发现好多自己没有学到过的东西,不过我还是看完了 ! 其实也有很多是我们已经接触过的了! 希望等我学完了之后弄个更好的出来 ~哈哈! 不过在那之前还是先求大神的 黑马币吧!
作者:
xule86
时间:
2016-1-16 12:23
这一看就是大神才能写出来的东西,让我等膜拜
作者:
老朱
时间:
2016-1-17 23:13
哥们 可以 加油 加油
作者:
18817602013
时间:
2016-1-29 15:49
新人报道!(我是为黑马币来的)
作者:
lizi432522
时间:
2016-3-4 11:01
谢谢版主,非常好的技术贴
作者:
kelin410
时间:
2016-3-4 18:51
支持!!!!!!
作者:
执剑人
时间:
2016-3-7 14:28
赞一个!
作者:
艾斯空气
时间:
2016-3-9 18:44
少侠好身手!
作者:
蔡恒
时间:
2016-3-17 19:14
是不是真的有黑马币?
作者:
玉堂散人
时间:
2016-4-5 23:28
呵呵,原来斗地主也不过如此!
作者:
沒亊→偸著樂
时间:
2016-4-16 14:35
好像很牛的样子啊
作者:
Jason.wang
时间:
2016-4-28 20:19
好,顶,赞,,
作者:
xiaowanghua
时间:
2016-4-30 23:12
感谢版主,马上要点招了,黑马币能抛抛吗,顶贴了
作者:
Midicy
时间:
2016-5-2 21:24
花色是怎么选的?特殊符号?
作者:
小小M
时间:
2016-5-3 22:38
膜拜大神,菜鸟过来学习学习希望能赐点黑马币啦
作者:
卢起
时间:
2016-5-6 23:25
这个都敲了好几遍了
作者:
陈军舰
时间:
2016-5-7 20:53
好厉害的样子
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2