前言
Java项目实习第一次课后作业:实现斗地主的生成卡牌洗牌、发牌、理牌。
题目
一副牌 54 张:花色[“红桃”,“黑桃”,“方块”,“草花”];
序号[“A”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“J”,“Q”,“K”,“小鬼”,“大鬼”];
三名玩家:一人 17 张,留 3 张做底牌;
底牌:在确定地主之前玩家不能看底牌。
请用Java进行编程,实现生成卡牌、洗牌、发牌、理牌。
main函数
public static void main(String[] args) {
//1.生成卡牌
List<String> pokes = new ArrayList<>();
List<String> colors = new ArrayList<>();
List<String> numbers = new ArrayList<>();
colors.add("♥");
colors.add("♠");
colors.add("♦");
colors.add("♣");
numbers.add("A");
for (int i = 2; i <= 10; i++) {
numbers.add(i + "");
}
numbers.add("J");
numbers.add("Q");
numbers.add("K");
for (String c : colors) {
for (String n : numbers) {
String pai = c + n;
pokes.add(pai);
}
}
pokes.add("大鬼");
pokes.add("小鬼");
System.out.println("生成卡牌:");
System.out.println(pokes);
System.out.println();
//2.洗牌
System.out.println("洗牌:");
Collections.shuffle(pokes);
System.out.println(pokes);
System.out.println();
//3.发牌,留3张底牌
ArrayList<String> people_1 = new ArrayList<>();
ArrayList<String> people_2 = new ArrayList<>();
ArrayList<String> people_3 = new ArrayList<>();
ArrayList<String> dipai = new ArrayList<>();
for (int i = 0; i < pokes.size(); i++) {
String pai = pokes.get(i);
if (i >= 51) {
dipai.add(pai);
} else {
if (i % 3 == 0) people_1.add(pai);
else if (i % 3 == 1) people_2.add(pai);
else people_3.add(pai);
}
}
System.out.println("发牌:");
System.out.println(people_1);
System.out.println(people_2);
System.out.println(people_3);
System.out.println(dipai);
System.out.println();
//4.理牌
System.out.println("理牌:");
arrangecards(people_1);
arrangecards(people_2);
arrangecards(people_3);
arrangecards(dipai);
}
纸牌有序化函数
public static void arrangecards(ArrayList<String> list){
ArrayList<String> arrange = new ArrayList<>();
//将一些序号进行替换,方便排序
for(int i=0;i<list.size();i++){
if(list.get(i).substring(1,2).equals("J"))list.set(i,list.get(i).substring(0,1) + "11");
else if(list.get(i).substring(1,2).equals("Q"))list.set(i,list.get(i).substring(0,1) + "12");
else if(list.get(i).substring(1,2).equals("K"))list.set(i,list.get(i).substring(0,1) + "13");
else if(list.get(i).substring(1,2).equals("A"))list.set(i,list.get(i).substring(0,1) + "14");
else if(list.get(i).substring(1,2).equals("2"))list.set(i,list.get(i).substring(0,1) + "15");
}
//进行排序
for(int i=3;i<=15;i++){
for(int j=0;j<list.size();j++){
if(list.get(j).substring(1,2).equals("1")){
if(list.get(j).substring(1,3).equals(String.valueOf(i))){
arrange.add(list.get(j));
}
}else{
if(list.get(j).substring(1,2).equals(String.valueOf(i))){
arrange.add(list.get(j));
}
}
}
}
//直接将大小鬼放最后
for(int j=0;j<list.size();j++){
if(list.get(j).equals("大鬼") || list.get(j).equals("小鬼")){
arrange.add(list.get(j));
}
}
//将原本序号替换回来
for(int i=0;i<arrange.size();i++) {
if (arrange.get(i).substring(1, 2).equals("1")) {
if (arrange.get(i).substring(1, 3).equals("11"))
arrange.set(i, arrange.get(i).substring(0, 1) + "J");
else if (arrange.get(i).substring(1, 3).equals("12"))
arrange.set(i, arrange.get(i).substring(0, 1) + "Q");
else if (arrange.get(i).substring(1, 3).equals("13"))
arrange.set(i, arrange.get(i).substring(0, 1) + "K");
else if (arrange.get(i).substring(1, 3).equals("14"))
arrange.set(i, arrange.get(i).substring(0, 1) + "A");
else if (arrange.get(i).substring(1, 3).equals("15"))
arrange.set(i, arrange.get(i).substring(0, 1) + "2");
}
}
//输出
System.out.println(arrange);
}
效果图
完整·程序段
import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
public class DouDiZhu {
public static void main(String[] args) {
//1.生成卡牌
List<String> pokes = new ArrayList<>();
List<String> colors = new ArrayList<>();
List<String> numbers = new ArrayList<>();
colors.add("♥");
colors.add("♠");
colors.add("♦");
colors.add("♣");
numbers.add("A");
for (int i = 2; i <= 10; i++) {
numbers.add(i + "");
}
numbers.add("J");
numbers.add("Q");
numbers.add("K");
for (String c : colors) {
for (String n : numbers) {
String pai = c + n;
pokes.add(pai);
}
}
pokes.add("大鬼");
pokes.add("小鬼");
System.out.println("生成卡牌:");
System.out.println(pokes);
System.out.println();
//2.洗牌
System.out.println("洗牌:");
Collections.shuffle(pokes);
System.out.println(pokes);
System.out.println();
//3.发牌,留3张底牌
ArrayList<String> people_1 = new ArrayList<>();
ArrayList<String> people_2 = new ArrayList<>();
ArrayList<String> people_3 = new ArrayList<>();
ArrayList<String> dipai = new ArrayList<>();
for (int i = 0; i < pokes.size(); i++) {
String pai = pokes.get(i);
if (i >= 51) {
dipai.add(pai);
} else {
if (i % 3 == 0) people_1.add(pai);
else if (i % 3 == 1) people_2.add(pai);
else people_3.add(pai);
}
}
System.out.println("发牌:");
System.out.println(people_1);
System.out.println(people_2);
System.out.println(people_3);
System.out.println(dipai);
System.out.println();
//4.理牌
System.out.println("理牌:");
arrangecards(people_1);
arrangecards(people_2);
arrangecards(people_3);
arrangecards(dipai);
}
public static void arrangecards(ArrayList<String> list){
ArrayList<String> arrange = new ArrayList<>();
//将一些序号进行替换,方便排序
for(int i=0;i<list.size();i++){
if(list.get(i).substring(1,2).equals("J"))list.set(i,list.get(i).substring(0,1) + "11");
else if(list.get(i).substring(1,2).equals("Q"))list.set(i,list.get(i).substring(0,1) + "12");
else if(list.get(i).substring(1,2).equals("K"))list.set(i,list.get(i).substring(0,1) + "13");
else if(list.get(i).substring(1,2).equals("A"))list.set(i,list.get(i).substring(0,1) + "14");
else if(list.get(i).substring(1,2).equals("2"))list.set(i,list.get(i).substring(0,1) + "15");
}
//进行排序
for(int i=3;i<=15;i++){
for(int j=0;j<list.size();j++){
if(list.get(j).substring(1,2).equals("1")){
if(list.get(j).substring(1,3).equals(String.valueOf(i))){
arrange.add(list.get(j));
}
}else{
if(list.get(j).substring(1,2).equals(String.valueOf(i))){
arrange.add(list.get(j));
}
}
}
}
//直接将大小鬼放最后
for(int j=0;j<list.size();j++){
if(list.get(j).equals("大鬼") || list.get(j).equals("小鬼")){
arrange.add(list.get(j));
}
}
//将原本序号替换回来
for(int i=0;i<arrange.size();i++) {
if (arrange.get(i).substring(1, 2).equals("1")) {
if (arrange.get(i).substring(1, 3).equals("11"))
arrange.set(i, arrange.get(i).substring(0, 1) + "J");
else if (arrange.get(i).substring(1, 3).equals("12"))
arrange.set(i, arrange.get(i).substring(0, 1) + "Q");
else if (arrange.get(i).substring(1, 3).equals("13"))
arrange.set(i, arrange.get(i).substring(0, 1) + "K");
else if (arrange.get(i).substring(1, 3).equals("14"))
arrange.set(i, arrange.get(i).substring(0, 1) + "A");
else if (arrange.get(i).substring(1, 3).equals("15"))
arrange.set(i, arrange.get(i).substring(0, 1) + "2");
}
}
//输出
System.out.println(arrange);
}
}