##测试类
package doudizhu;
import org.omg.CORBA.CODESET_INCOMPATIBLE;
import java.util.ArrayList;
import java.util.Collections;
/*
* 需求:
* 斗地主:
* 分析:♥3,♦3,♠3,♣3,♥4,♦4,♠4,♣4,....小🃏,大🃏
* 0 1 2 3 4 5 6 7 53 54
*
* 玩家1拿到的索引:♣3,♥4,♠4,♥5,小🃏
*
* 1、牌面(花色♥,♠,♦,♣,数字,A,2,3,4,5,6,7,8,9,10,J,Q,K,大🃏,小🃏)
* 第一种:使用索引控制牌
* 第二种:使用键控制牌
* 2、洗牌:使用随机算数的机制,随机打乱顺序
* 3、发牌:(发牌在玩家手中的牌其实只是一些数字(索引/键))
* 第一种:使用索引,随机生成三个玩家和底牌的索引
* 第二种:安顺序发牌,每个玩家发方17张,最后剩下三张底牌(统计出来)
* 排序,只需要将玩家手中的索引/键进行自然排序就好
* */
public class Test extends Poker {
public static void main(String[] args)
{
Test t=new Test();
User user=new User();
t.Keep_card();
t.special_keep_cards();
System.out.println("参加斗地主游戏的有三个人,分别为:");
user.user();
System.out.println("游戏开始喽!");
t.shuffle_cards();//洗牌
t.sort_cards(0,num1);
t.sort_cards(17,num2);
t.sort_cards(34,num3);
num.addAll(num1);
num.addAll(num2);
num.addAll(num3);
System.out.println(num);
System.out.println(num4);
System.out.println("三张底牌为:");
for (int i=0;i<=2;i++)
{
System.out.print(arrayList1.get(num4.get(i))+" ");
}
System.out.println();
t.set_cards();//
t.grab_landlord();//抢地主
}
}
##方法类
package doudizhu;
import java.util.*;
public class Poker extends User{
int p=0;
public static ArrayList<Object> arrayList=new ArrayList<>();//花色的列表
public static ArrayList<Object> arrayList1=new ArrayList<>();//普通数字牌的列表
public static ArrayList<Object> arrayList2=new ArrayList<>();//A,2,J,Q,K,小🃏,大🃏
ArrayList<Integer> intdex=new ArrayList<>();//索引列表
public static ArrayList<Integer> num1=new ArrayList<>();//对索引进行排序,从而达到对牌的排序
public static ArrayList<Integer> num2=new ArrayList<>();
public static ArrayList<Integer> num3=new ArrayList<>();
public static ArrayList<Integer> num=new ArrayList<>();
public static ArrayList<Integer> num4=new ArrayList<>();//最后预留的三张牌
//普通数字牌存牌
public void Keep_card()
{
Collections.addAll(arrayList,"♥","♠","♦","♣");
arrayList.addAll(arrayList1);
for (int i=3;i<=10;i++)
{
for (int j=0;j<=3;j++)
{
Collections.addAll(arrayList1,arrayList.get(j)+""+i);
}
}
// System.out.println(arrayList1);
}
//特殊数字牌存牌
public void special_keep_cards()
{
Collections.addAll(arrayList2,"J","Q","K","A","2","小🃏","大🃏");
for (int i=0;i<=4;i++)
{
for (int j=0;j<=3;j++)
{
Collections.addAll(arrayList1,arrayList.get(j)+""+arrayList2.get(i));
}
}
Collections.addAll(arrayList1,"小🃏","大🃏");
System.out.println(arrayList1);
}
//洗牌
public void shuffle_cards()
{
System.out.println("洗牌中(3次)...");
int a=1;
for(int i=0;i<=53;i++)
{
Collections.addAll(intdex,i);
}
do {
Collections.shuffle(intdex);
a++;
if(a>3) break;
}while (true);
System.out.println(intdex);
for (int i=51;i<=53;i++)
{
num4.add(intdex.get(i));
}
// System.out.println(num4);
}
// public static ArrayList<Integer> arrayList3=new ArrayList<>();//对索引进行排序,从而达到对牌的排序
//排序
//0-16 17-33 34-50
public void sort_cards(int j,ArrayList arrayList00)
{
for (int i=j;i<=j+16;i++)
{
Collections.addAll(arrayList00,intdex.get(i));
Collections.sort(arrayList00);
}
}
//发牌
public void set_cards()
{
int count=0;
int i=0;
do {
System.out.println("给用户"+users.get(i)+"发牌");
for (;count<=53;count++)
{
System.out.print(arrayList1.get(num.get(count)));
System.out.print(" ");
if(count==16)
{count++;break;}
if(count==33)
{count++;break;}
if(count==50)
break;
}
System.out.println();
i++;
}while(i<=2);
}
//抢地主
public void grab_landlord()
{
// ArrayList<String> str_h=new ArrayList<>();
String[] str_h=new String[4];
String str;
for (int i=0;i<=2;i++)
{
System.out.println("请问用户"+users.get(i)+"抢地主吗?");
str_h[i]=sc.next();
}
str_h[3]="抢";
System.out.println(Arrays.toString(str_h));
for ( p=0;p<=3;p++)
{
if(str_h[0].equals("抢"))
{
grab_landlord_1(num1);
break;
}
if(str_h[1].equals("抢"))
{
grab_landlord_1(num2);
break;
}
if(str_h[2].equals("不抢")||str_h[3].equals("抢"))
{
p=2;
grab_landlord_1(num3);
break;
}
}
/*if (x==-1)
{
grab_landlord_1(num3);
}else {
if (x == 0) {
grab_landlord_1(num1);
} else if (x == 1) {
grab_landlord_1(num2);
} else if (x == 2) {
grab_landlord_1(num3);
}
}*/
}
public void grab_landlord_1(ArrayList<Integer> arrayList00)
{
arrayList00.addAll(17,num4);
System.out.println("用户"+users.get(p)+"为地主");
System.out.println("增加底牌之后为:");
Collections.sort(arrayList00);
for (int i=0;i<=19;i++)
{
System.out.print(arrayList1.get(arrayList00.get(i)));
System.out.print(" ");
}
System.out.println();
System.out.println("其余两位用户为农民!");
}
}
##用户类
package doudizhu;
import java.util.ArrayList;
import java.util.Scanner;
public class User {
private String name;
public static ArrayList<String> users=new ArrayList<>();
Scanner sc=new Scanner(System.in);
public void user()
{
int i=1;
do {
name=sc.next();
users.add(name);
i++;
}while (i<=3);
}
}
想了解前端相关内容,请参考:
https://blog.csdn.net/qq_42440991/article/details/113406863
小生不才,有自己的网站,望大家支持。
https://to24615835.jzfkw.cn/