新乡建设企业网站三台网站seo
目前我们并不是要实现一个游戏,而是要对斗地主游戏做准备,主要是做牌+洗牌+发牌+给发的牌进行排序。在这个过程中我希望通过集中方式来实现:
1. 使用集合+方法+字符串的运用完成以上功能
2. 使用面向对象思想,对1做改进,主要是对其排序的改进,从而理解面向对象的真正意义
3. 对2中代码再次进行简化,增强其可读性,同样的实现,可以用更简洁更省内存的方法来实现代码
实现1中的代码
package test02;
import java.util.*;
public class Entry {public static void main(String[] args) {//1.创建牌盒List<String> porkers = new ArrayList<>();//创建花色和点数String[] colors = {"♥","♠","♣","♦"};String[] pointNumbers = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};//将牌插入集合中for (String point : pointNumbers) {for (String color : colors) {porkers.add(color+point);}}//添加大小王porkers.add("大王");porkers.add("小王");//遍历porkershowPorker(porkers);//打乱扑克:多线程下要考虑线程安全Collections.shuffle(porkers);System.out.println("打乱后的扑克牌:");showPorker(porkers);//2.创建三个玩家集合和一个底牌集合List<String> play1 = new ArrayList<>();List<String> play2 = new ArrayList<>();List<String> play3 = new ArrayList<>();List<String> bottomPorkers = new ArrayList<>();//发牌for (int i = 0; i < porkers.size(); i++) {String s = porkers.get(i);if (i>=porkers.size()-3){//获取底牌bottomPorkers.add(s);}else if (i%3==0){//剩下的牌中可以被3整除的索引值给第一位玩家play1.add(porkers.get(i));} else if (i%3==1) {//剩下的牌中可以被3整除余1的索引值给第一位玩家play2.add(s);}else if (i%3==2){play3.add(s);}}//查看每一位玩家的牌System.out.println("玩家1的牌");showPorker(play1);System.out.println("玩家2的牌");showPorker(play2);System.out.println("玩家3的牌");showPorker(play3);System.out.println("底牌");showPorker(bottomPorkers);//随机选择地主,将底牌给地主玩家Random ra = new Random();int dz = ra.nextInt(3)+1;switch (dz){case 1:System.out.println("选中玩家1为地主");play1.addAll(bottomPorkers);break;case 2:System.out.println