`
RioCasTop
  • 浏览: 479 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java -洗牌、发牌、随机地主

阅读更多
package text03;

public class text1{

public static void main(String[] args) {

//练习一、
//请定义一副扑克牌,输出扑克牌里的所有的值,(例如红心J)
int k,j;
String[] puke=new String[60];
String[] dizhup=new String[20];
String[] huase={"方块","梅花","红心","黑桃"};
String[] shuzi={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
for( k=0;k<shuzi.length;k++){
for(j=0;j<huase.length;j++){
System.out.print(huase[j]+shuzi[k]+"  ");
}
System.out.println("");
}
System.out.print("大王"+"      "+"小王");
System.out.println("");
      /*课后练习:如果(int)Math.random()*10 表示的是一个随机的整数,
       * */
//(*10 是因为,Math.random() 随机出来的0-1之间的小数。)
//那么请你,基于以上练习,先把牌洗一下,再进行发牌 ,然后再随机地主吧。
//要求步骤:
//1、洗牌方法
//2、发牌方法
//3、(可选)随机地主方法
//4、(可选)显示3张底牌方法
//5、(可选)找出地主手中最小的牌
text1 a=new text1();
puke=a.kkk(huase, shuzi);
dizhup=a.kkk2(puke);
a.kkk3(puke);
a.kkk5(dizhup);


}
public String[] kkk(String huase[],String shuzi[]){
int i,j;
int hs,sz,sum=0;
String temp;
String[] puke;
puke=new String[54];
//给扑克牌赋值
for(i=0;i<=3;i++){
for(j=0;j<=12;j++){
puke[sum]=huase[i]+shuzi[j];
sum++;
if(sum>=53){
break;
}
}
if(sum>=53){
break;
}
}
puke[52]="大王";
puke[53]="小王";
//洗牌
for(i=0;i<=10000;i++){
hs=(int)(Math.random()*53);
sz=(int)(Math.random()*53);
temp=puke[hs];
puke[hs]=puke[sz];
puke[sz]=temp;
}
return puke;
}

public String[] kkk2(String puke[]){
String[] A=new String[20];
String[] B=new String[20];
String[] C=new String[20];
int i;
for(i=0;i<=16;i++){
A[i]=puke[i];
B[i]=puke[3*i+1];
C[i]=puke[3*i+2];
}
System.out.print("A的牌           ");
for(i=0;i<=16;i++){
System.out.print(A[i]+"   ");
}
System.out.println("   ");
System.out.print("B的牌          ");
for(i=0;i<=16;i++){
System.out.print(B[i]+"   ");
}
System.out.println("   ");
System.out.print("C的牌           ");
for(i=0;i<=16;i++){
System.out.print(C[i]+"   ");
}
System.out.println("");
//随机地主
String[] dizhup=new String[20];
int dizhu=(int)(Math.random()*10000);
if(dizhu>6666){
System.out.println("A是地主");
A[17]=puke[51];
A[18]=puke[52];
A[19]=puke[53];
for(i=0;i<=19;i++){
dizhup[i]=A[i];
}
}
else if(dizhu>3333){
System.out.println("B是地主");
B[17]=puke[51];
B[18]=puke[52];
B[19]=puke[53];
for(i=0;i<=19;i++){
dizhup[i]=B[i];
}
}
else{
System.out.println("C是地主");
C[17]=puke[51];
C[18]=puke[52];
C[19]=puke[53];
for(i=0;i<=19;i++){
dizhup[i]=C[i];
}
}
return dizhup;
}
//显示底牌
public void kkk3(String puke[]){
int i;
System.out.println("底牌是:");
for(i=51;i<=53;i++){
System.out.print(puke[i]+"   ");
}
System.out.println("");
}
//地主手中最小的牌
public void kkk5(String dizhup[]){
int i;
int[] num1=new int[20];
System.out.println("地主手中最小的牌是:");
for(i=0;i<=19;i++){
switch(dizhup[i]){
case "方块3":
num1[i]=0;
break;
case "梅花3":
num1[i]=1;
break;
case "红心3":
num1[i]=2;
break;
case "黑桃3":
num1[i]=3;
break;
case "方块4":
num1[i]=4;
break;
case "梅花4":
num1[i]=5;
break;
case "红心4":
num1[i]=6;
break;
case "黑桃4":
num1[i]=7;
break;
case "方块5":
num1[i]=8;
break;
case "梅花5":
num1[i]=9;
break;
case "红心5":
num1[i]=10;
break;
case "黑桃5":
num1[i]=11;
break;
case "方块6":
num1[i]=12;
break;
case "梅花6":
num1[i]=13;
break;
case "红心6":
num1[i]=14;
break;
case "黑桃6":
num1[i]=15;
break;
case "方块7":
num1[i]=16;
break;
case "梅花7":
num1[i]=17;
break;
case "红心7":
num1[i]=18;
break;
case "黑桃7":
num1[i]=19;
break;
case "方块8":
num1[i]=20;
break;
case "梅花8":
num1[i]=21;
break;
case "红心8":
num1[i]=22;
break;
case "黑桃8":
num1[i]=23;
break;
case "方块9":
num1[i]=24;
break;
case "梅花9":
num1[i]=25;
break;
case "红心9":
num1[i]=26;
break;
case "黑桃9":
num1[i]=27;
break;
case "方块10":
num1[i]=28;
break;
case "梅花10":
num1[i]=29;
break;
case "红心10":
num1[i]=30;
break;
case "黑桃10":
num1[i]=31;
break;
case "方块J":
num1[i]=32;
break;
case "梅花J":
num1[i]=33;
break;
case "红心J":
num1[i]=34;
break;
case "黑桃J":
num1[i]=35;
break;
case "方块Q":
num1[i]=36;
break;
case "梅花Q":
num1[i]=37;
break;
case "红心Q":
num1[i]=38;
break;
case "黑桃Q":
num1[i]=39;
break;
case "方块K":
num1[i]=40;
break;
case "梅花K":
num1[i]=41;
break;
case "红心K":
num1[i]=42;
break;
case "黑桃K":
num1[i]=43;
break;
case "方块A":
num1[i]=44;
break;
case "梅花A":
num1[i]=45;
break;
case "红心A":
num1[i]=46;
break;
case "黑桃A":
num1[i]=47;
break;
case "方块2":
num1[i]=48;
break;
case "梅花2":
num1[i]=49;
break;
case "红心2":
num1[i]=50;
break;
case "黑桃2":
num1[i]=51;
break;
case "小王":
num1[i]=52;
break;
case "大王":
num1[i]=53;
break;
}
}
int min;
min=num1[0];
for(i=0;i<=18;i++){
if(num1[i+1]<=min){
min=num1[i+1];
}
}
String[] mmin=new String[2];
System.out.println("");
switch(min){
case 0:
mmin[1]="方块3";
break;
case 1:
mmin[1]="梅花3";
break;
case 2:
mmin[1]="红心3";
break;
case 3:
mmin[1]="黑桃3";
break;
case 4:
mmin[1]="方块4";
break;
case 5:
mmin[1]="梅花4";
break;
case 6:
mmin[1]="红心4";
break;
case 7:
mmin[1]="黑桃4";
break;
case 8:
mmin[1]="方块5";
break;
case 9:
mmin[1]="梅花5";
break;
case 10:
mmin[1]="红心5";
break;
case 11:
mmin[1]="黑桃5";
break;
case 12:
mmin[1]="方块6";
break;
case 13:
mmin[1]="梅花6";
break;
case 14:
mmin[1]="红心6";
break;
case 15:
mmin[1]="黑桃6";
break;
case 16:
mmin[1]="方块7";
break;
case 17:
mmin[1]="梅花7";
break;
case 18:
mmin[1]="红心7";
break;
case 19:
mmin[1]="黑桃7";
break;
case 20:
mmin[1]="方块8";
break;
case 21:
mmin[1]="梅花8";
break;
case 22:
mmin[1]="红心8";
break;
case 23:
mmin[1]="黑桃8";
break;
case 24:
mmin[1]="方块9";
break;
case 25:
mmin[1]="梅花9";
break;
case 26:
mmin[1]="红心9";
break;
case 27:
mmin[1]="黑桃9";
break;
case 28:
mmin[1]="方块10";
break;
case 29:
mmin[1]="梅花10";
break;
case 30:
mmin[1]="红心10";
break;
case 31:
mmin[1]="黑桃10";
break;
case 32:
mmin[1]="方块";
break;
case 33:
mmin[1]="梅花J";
break;
case 34:
mmin[1]="红心J";
break;
case 35:
mmin[1]="黑桃J";
break;
case 36:
mmin[1]="方块Q";
break;
case 37:
mmin[1]="梅花Q";
break;
case 38:
mmin[1]="红心Q";
break;
case 39:
mmin[1]="黑桃Q";
break;
case 40:
mmin[1]="方块K";
break;
case 41:
mmin[1]="梅花K";
break;
case 42:
mmin[1]="红心K";
break;
case 43:
mmin[1]="黑桃K";
break;
case 44:
mmin[1]="方块A";
break;
case 45:
mmin[1]="梅花A";
break;
case 46:
mmin[1]="红心A";
break;
case 47:
mmin[1]="黑桃A";
break;
case 48:
mmin[1]="方块2";
break;
case 49:
mmin[1]="梅花2";
break;
case 50:
mmin[1]="红心2";
break;
case 51:
mmin[1]="黑桃2";
break;
case 52:
mmin[1]="小王";
break;
case 53:
mmin[1]="大王";
break;
}
System.out.print(mmin[1]);
}
}
分享到:
评论

相关推荐

    java斗地主发牌小程序

    在这个小程序中,我们将探讨如何生成牌,随机洗牌,以及公平地发牌给三个玩家。 【描述】:“牌的生成、随机洗牌、发牌、输出显示” 1. **牌的生成**:在Java中,首先我们需要创建一个表示扑克牌的数据结构。这...

    斗地主洗牌发牌算法

    在本文中,我们将深入探讨如何实现斗地主游戏中的洗牌和发牌算法。这是一个非常适合初学者学习编程逻辑和算法的实例,特别是对于Java编程语言的学习者。斗地主是一种广受欢迎的扑克游戏,通常由三名玩家进行,每名...

    java模拟斗地主的洗牌发牌.rar

    在Java编程语言中,模拟斗地主游戏的洗牌、发牌和看牌过程是一项有趣的实践,这有助于加深对集合框架的理解。在这个项目中,主要使用了三种集合类:HashMap、ArrayList和TreeSet,它们各自有其独特的特性和用途。 ...

    Java斗地主发牌课程设计.doc

    【Java斗地主发牌课程设计】是一个典型的Java编程项目,旨在帮助学生理解面向对象编程、数据结构和算法的应用。这个课程设计的核心是实现斗地主游戏中的发牌功能,通过编写Player类和Landlords类来模拟游戏流程。 ...

    java斗地主发牌程序

    【Java斗地主发牌程序】是一个典型的基于Java编程语言实现的桌面游戏应用,它主要用于模拟斗地主游戏中的发牌过程。在这个程序中,我们可以深入学习到Java的基础语法、面向对象编程思想以及随机数生成等核心概念。...

    斗地主 java源码 界面 发牌程序

    1. 随机洗牌:使用Java的Random类进行随机排序,确保每局游戏开始时牌的顺序不同。 2. 分配牌:将54张牌分成三组,地主获得17张,两个农民各获得13张。地主额外获得三张底牌。 3. 底牌处理:底牌通常是公开的,地主...

    j2me斗地主发牌源码

    发牌过程的公平性和随机性是游戏体验的关键,因此发牌算法的设计尤为重要。 在给出的源码中,有两个关键变量用于表示牌的信息:“type”和“id”。其中,“type”用来标识牌的花色,值为0至4,分别代表方块、梅花、...

    FAPAI.rar_发牌_斗地主

    斗地主是一款广受欢迎的三人对战扑克游戏,游戏的公平性和趣味性很大程度上取决于发牌和洗牌的随机性和公正性。 首先,我们来看"发牌"这个知识点。在斗地主游戏中,一共使用一副54张牌(包括大小王),三位玩家参与...

    史上最全斗地主发牌代码实现.rar

    2. 洗牌:随机打乱牌堆中的顺序,模拟实际洗牌过程。这可以通过Java的`Collections.shuffle()`方法实现。 3. 分牌:将牌堆分为三份,分别代表地主和两位农民的初始手牌。通常地主会比农民多拿三张底牌,因此第一轮发...

    斗地主程序Java源码

    1. **洗牌**:在游戏开始前,所有牌会按照一定的规则随机排列,这涉及到随机数生成和数组操作。在Java中,可以使用`java.util.Random`类来生成随机数,并对牌组进行重排。 2. **发牌**:通常,一副牌(54张)会被...

    java单机斗地主

    Java的Collections.shuffle()方法可以用于洗牌,然后通过循环分配给玩家。 3. **出牌逻辑**: - 玩家可以选择手牌进行出牌,系统需要检查出牌是否合法,如牌型是否正确,是否超过规定的出牌数量等。这涉及到对牌型...

    斗地主Java代码

    `shuffle.txt`可能包含了洗牌算法的描述,这通常涉及到对牌堆的随机化处理,如Fisher-Yates(Knuth)洗牌算法。 3. **发牌逻辑**:斗地主游戏有特定的发牌规则,如每人17张,留3张底牌。这需要在代码中精确实现,...

    斗地主Java游戏源码

    游戏逻辑的实现涉及到算法设计,包括洗牌、发牌、比较牌型大小等。这需要你理解和运用数组、集合、排序算法等基础知识。例如,使用`Collections.shuffle()`方法可以随机打乱牌的顺序,而牌型比较可能需要用到条件...

    java 斗地主

    - **洗牌与发牌**:使用随机数生成器确保每次游戏的随机性,保证公平性。 5. **用户界面**: - **图形界面**:可以使用Java Swing或JavaFX库创建用户友好的图形界面,展示牌面、玩家信息等。 - **事件处理**:...

    java_doudizhu.rar_java doudizhu_java斗地主_手机 斗地主_斗地主

    - 实现洗牌算法,确保发牌的随机性,可以使用Fisher-Yates洗牌算法。 - 编写出牌逻辑,考虑各种可能的牌型组合,使用条件语句和循环来处理。 3. **用户交互界面**: - 利用Java Swing或JavaFX创建图形用户界面...

    java模拟实现斗地主发牌小程序

    接着,使用`Collections.shuffle(box)`方法对牌进行洗牌,使得每一轮游戏的发牌顺序不同,增加了游戏的随机性和公平性。 发牌的过程是这样的:首先从洗好的牌堆中取出51张牌,按照每三张一组分别分给三个玩家,即...

    java斗地主

    然后,用一个`Deck`类管理整副牌,负责洗牌、发牌等操作。为了简化,可以使用枚举类型来表示花色和牌面值,如`Heart`, `Diamond`, `Club`, `Spade`和`2`到`A`。 接下来是玩家类的设计。每个玩家需要有一个牌堆,...

    java实现模仿斗地主发牌

    Java 实现模仿斗地主发牌 Java 是一种流行的编程语言,广泛应用于各种领域。在游戏开发中,Java 也扮演着重要的角色。本文将为大家详细介绍如何使用 Java 实现模仿斗地主发牌,提供了详细的示例代码和实现步骤,为...

    java斗地主源码

    - **发牌**:游戏开始时,需要随机分配牌给三位玩家,这涉及到随机数生成和数组操作。 - **出牌规则**:斗地主的出牌规则复杂,包括单张、对子、顺子、连对、飞机、炸弹等多种组合,源码中需要定义相应的函数来...

Global site tag (gtag.js) - Google Analytics