线程——扑克牌发牌

多线程随机发牌

随机发牌!!!
在这里插入图片描述

import java.util.Scanner;
import java.util.Arrays;
import java.util.Random;
public class Main {
 public static void main(String[] args) {
  Poker res = new Poker();
  Thread a = new Thread(res);
  a.start();
 }
}
class Poker implements Runnable {
 People[] r;
 int[] d;
 String[] card;
 int w;
 public Poker() {
  r = new People[] { new People("玩家1"), new People("玩家2"), new People("玩家3"), };
  d = new int[54];
  w = 0;
  card = new String[54];
  Random rec = new Random();
  while (w < 54) {
   int ji = 0;
   int x = rec.nextInt(54);
   for (int i = 0; i < w; i++) {
    if (d[i] == x) {
     ji++;
    }
   }
   if (ji == 0) {
    d[w] = x;
    if (x + 1 <= 52) {
     if (x % 4 == 0) {
      card[w] = "♦";
     } else if (x % 4 == 1) {
      card[w] = "♣";
     } else if (x % 4 == 2) {
      card[w] = "♠";
     } else if (x % 4 == 3) {
      card[w] = "♥";
     }
     card[w] = card[w] + ((x / 4) + 1);
    } else if (x + 1 == 53) {
     card[w] = "小王";
    } else if (x + 1 == 54) {
     card[w] = "大王";
    }
    w++;
   }
  }
 }
 public String zh(int x) {
  if (x + 1 <= 52) {
   if (x % 4 == 0) {
    return "♦" + ((x / 4) + 1);
   } else if (x % 4 == 1) {
    return "♣" + ((x / 4) + 1);
   } else if (x % 4 == 2) {
    return "♠" + ((x / 4) + 1);
   } else if (x % 4 == 3) {
    return "♥" + ((x / 4) + 1);
   }
  } else if (x + 1 == 53) {
   return "小王";
  } else if (x + 1 == 54) {
   return "大王";
  }
  return null;
 }
 @Override
 public void run() {
  int i = 0;
  r[0].f = true;
  while (i < 54) {
   int z = 0;
   for (;;) {
    if (r[z].f) {
     try {
      Thread.sleep(1000);
     } catch (InterruptedException e) {
// TODO Auto-generated catch block
      e.printStackTrace();
     }
     System.out.print(r[z].name + "摸牌 " + card[i] + ",");
     r[z].t[r[z].g] = d[i];
     r[z].c[r[z].g] = card[i];
     r[z].g = r[z].g + 1;
     i++;
     r[z].f = false;
     if (i == 54) {
      System.out.println("发牌结束");
      break;
     } else {
      if (z + 1 == 3) {
       System.out.println("下一个" + r[0].name);
       r[0].f = true;
      } else {
       System.out.println("下一个" + r[z + 1].name);
       r[z + 1].f = true;
      }
     }
     break;
    } else {
     z++;
     if (z == 3) {
      z = 0;
     }
    }
   }
  }
  this.String();
 }
 public void String() {
  for (int i = 0; i < 3; i++) {
   Arrays.sort(r[i].t);
   System.out.print(r[i].name + " ");
   for (int b = 0; b < 18; b++) {
    System.out.print(this.zh(r[i].t[b]) + " ");
   }
   System.out.println();
  }
 }
 private void sort() {
// TODO Auto-generated method stub
 }
}
class People {
 String name;
 boolean f;
 String[] c;
 int g;
 int[] t;
 public People(String name) {
  c = new String[18];
  this.name = name;
  f = false;
  t = new int[18];
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大大大大龙虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值