题外话
这不是魔法,而是科学小实验!!!
请大家多多支持我,我真的真的太想进步了啊!!!!
正题
扑克牌代码思路
1.代码分为买牌,洗牌还有发牌(三个人每个人五张牌)
2.要熟练掌握javase初阶和数据结构中的ArrayList类
扑克牌代码以及代码详解
package Card; import java.util.ArrayList; import java.util.List; import java.util.Random; public class CardDemo { //先设置四种花色,因为扑克牌花色就四种,所以设置为静态常量 private final String[] suit={"♠","♣","♥","♦"}; //1.买牌(没有大小王)共52张牌 public List<Card> buyCard() { //把卡牌全部放入ArrayList中 List cardList=new ArrayList(); //i代表四种花色,j代表13张卡牌 for (int i=0;i<4;i++) { for (int j=1;j<=13;j++) { //利用构造方法把扑克牌创建出来放入Card数组,最后放入cardList中 Card card=new Card(suit[i],j); cardList.add(card); } } return cardList; } //2.洗牌 public void shuffle(List<Card> cardList) { //先创建Random这个类的对象 Random random=new Random(); //洗牌利用交换swap方法洗牌,从51下标开始到0下标结束(0下标不需要交换) for (int i=cardList.size()-1;i>0;i--) { //random.nextInt(i)是指从0-51(包括0,不包括51)随机选一个数字 int index=random.nextInt(i); //把随机选的数字的下标和i下标交换牌值,这里交换swap函数交换的是cardList的i下标和index下标对应的值 swap(cardList,i,index); } } //因为交换swap方法只作用于此类,所以就可以封装起来 private void swap(List<Card> cardList,int i,int j) { //利用get方法,把cardList的i下标位置的值放入tmp Card tmp=cardList.get(i); //利用set方法,再利用get方法,把carrdList的j下标位置的值付给 cardList.set(i,cardList.get(j)); //用set方法,把tmp的值放到j下标位置 cardList.set(j,tmp); } //三个人一人抓五张牌 public void getCard(List<Card> cardList) { //创建三个对象,代表的就是三个人 List<Card> list1=new ArrayList(); List<Card> list2=new ArrayList(); List<Card> list3=new ArrayList(); //创建相当于二维数组,把每个人都放进去,一个人相当于一个一维数组 List<List<Card>> hands=new ArrayList<>(); hands.add(list1); hands.add(list2); hands.add(list3); //一个人发五张牌 for (int i=0;i<5;i++) { for (int j=0;j<3;j++) { //移除要发的牌,并将要发的牌放入当前人手中 Card card=cardList.remove(0); hands.get(j).add(card); } } //三个人各自手中的牌 System.out.println("第1个人揭牌如下:"); System.out.println(list1); System.out.println("第2个人揭牌如下:"); System.out.println(list2); System.out.println("第3个人揭牌如下:"); System.out.println(list3); //剩下的牌 System.out.println("牌堆如下"); System.out.println(cardList); } }
代码运行
小结
记住主要思维逻辑,然后再自己不看代码输入一遍,记得把昨天的杨辉三角打一遍复习一下哦!!!