还在苦于学了知识没处练而遗忘知识而发愁吗?
我想是的,
那么来跟我一起,用宇宙无敌第一帅的Java语言来练习一下人尽皆知的斗地主游戏(壳子),
那么为什么只做个壳子呢?…因为!高手看不上,低手做不出高级部分 ,所以!壳子足以!上结果图!
不知道能不能看清,看不清也问题不大
上代码!细节与知识点都在注释里了(希望看官能学到一丢丢)
其中变量的命名我是很随意的,反正我想你也愿意敲一遍,名字你自己再改吧,这样你就能理解了!
第一部分、弄出一副完整的牌,存入集合
ArrayList<String> PkCover = new ArrayList<>();//牌盒,放牌
String[] color={"♠","♣","♢","♥"};//花色
String[] shuzi={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};//牌号
String[] King={"大王","小王"};
//把牌放进盒子,需要两个for循环组合放入,大小王单独放入。
for(String c:color){//foreach,增强for循环,好用
for(String s:shuzi){
String poker=c+s;
PkCover.add(poker);
}
}
PkCover.add(King[1]);
PkCover.add(King[0]);//放入大小王
System.out.println("打乱前"+PkCover);//插进去了,遍历一下
Collections.shuffle(PkCover);//打乱顺序,无可作弊。干!
System.out.println("打乱后"+PkCover);//康康打乱没有,
遍历一下是否成功
第二部分、发牌分底牌功能实现
ArrayList<String> DPoker = new ArrayList<>();//三张底牌
ArrayList<String> A = new ArrayList<>();//把牌分成A,B,C三幅,存入集合
ArrayList<String> B = new ArrayList<>();
ArrayList<String> C = new ArrayList<>();
String name;//斗地主人名字
for(int k=0;k<PkCover.size();k++){//发牌
if(k>=PkCover.size()-3){//从打乱的牌中把后三张拿出来当底牌
DPoker.add((PkCover.get(k)));//dddd懂得都懂
}else if(k%3==0) {//分三副就对3取余,分几副牌就对几取余,道理很简单
A.add(PkCover.get(k));
}else if(k%3==1){
B.add(PkCover.get(k));
}else if(k%3==2){
C.add(PkCover.get(k));
}
}
第三部分、看牌!
Putpoker("host",A);//调用函数,直接调用
Poker.Putpoker("张三",B);//静态函数可通过类名.方法调用(又TM一个小细节)
Poker.Putpoker("王五",C);
}
public static void Putpoker(String name,ArrayList<String> poker){//发牌函数]
//朴实无华的函数,很简单
System.out.println(name+"的牌是:"+poker);
}
}
用到的方法不是很多,显然发到的牌很乱,所以它是不完善的,那么如何将这些东西变得更高级呢,明天告诉你优化后的代码!万事都有个循序渐进的过程,不能一开始就追求所谓完美,一步一步来才能有更加深刻得理解!优化部分明天更新(面向对象),今天我累了,要早睡哈哈哈哈。