本篇实现的是imooc Java基础学习第三季7-1综合实战:简易扑克牌游戏(https://www.imooc.com/video/5475)
文章目录
踩坑分享
代码结构
代码
运行结果
踩坑分享
第一个坑:洗牌shuffle
第二个坑:比较手牌大小Comparator
待完善处:尚未完全掌握面向对象的程序设计思维
从早上9点开始写到晚上9点多才写完,第一次用Java写完整代码,很多不熟悉的地方暴露出来。
这个作业和老师前面讲的学生选课系统异曲同工,主要运用了List,Collections的Comparator自定义比较规则。
前面的代码参考老师的学生选课系统还能憋出来,包括洗牌shuffle都自己编出来了(然后发现Collections竟然自带shuffle方法)。但是到了比较手牌大小的时候就死也写不出来,数字JQK黑红梅方这都没法用compare比较大小。
忍不住去百度了一下,发现用indexOf()这个方法可以实现,于是重写了Comparator方法,搞定!结果AC
参考帖子链接如下https://blog.csdn.net/hr786250678/article/details/79210383?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control
代码思维还是沿用之前C语言的习惯偏面相过程的,没有完全掌握类对象编程思想,比如刚开始规划代码功能的时候不知道需要几个类,也不知道把哪些方法放在哪些类里,过段时间再回来改进一下把
2.代码结构
——Card类
——Player类
——CardDemo类(main函数在此)
——CardComparator类
3.代码
首先放Card.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
Player.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
CardDemo.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
|
CardComparator.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
4.运行结构
------创建扑克牌-------
------扑克牌创建成功-------
为[方片2 方片3 方片4 方片5 方片6 方片7 方片8 方片9 方片10 方片J 方片Q 方片K 方片A 梅花2 梅花3 梅花4 梅花5 梅花6 梅花7 梅花8 梅花9 梅花10 梅花J 梅花Q 梅花K 梅花A 红桃2 红桃3 红桃4 红桃5 红桃6 红桃7 红桃8 红桃9 红桃10 红桃J 红桃Q 红桃K 红桃A 黑桃2 黑桃3 黑桃4 黑桃5 黑桃6 黑桃7 黑桃8 黑桃9 黑桃10 黑桃J 黑桃Q 黑桃K 黑桃A ]
扑克牌的数量为:52
------开始洗牌-------
------洗牌结束-------
------创建玩家-------
请输入第1位玩家的ID和姓名:
1
请输入姓名:
tom
请输入第2位玩家的ID和姓名:
2
请输入姓名:
李四
----欢迎玩家tom
----欢迎玩家李四
------开始发牌-------
----玩家:tom-拿牌
----玩家:李四-拿牌
----玩家:tom-拿牌
----玩家:李四-拿牌
------发牌结束-------
------开始游戏-------
玩家:tom最大的手牌为:红桃Q
玩家:李四最大的手牌为:方片Q
------玩家:tom获胜!-------
玩家各自手牌为:
tom:梅花4红桃Q
李四:梅花9方片Q