ランダムに13牌の配牌を生成するjavaコード(牌重複チェックあり)
待機の時間暇なので書いてみました。
多分無駄な部分が多すぎてツッコミどころも満載。
(変数名・関数名は適当すぎるのでご容赦)
package test01;
import java.util.Arrays;
import java.util.Random;
public class Test01 {
public static void main(String[] args) {
Random rnd = new Random();
int rnd1 = 0;
int counter = 0;
int paicheck = 0;
int usepai = 0;
int tehai[] = {137,137,137,137,137,137,137,137,137,137,137,137,137};
while(counter<13) {
rnd1 = rnd.nextInt(136);
usepai = 0;
for(paicheck=0; paicheck<13; paicheck++) {
if(tehai[paicheck]==rnd1) {
usepai = 1;
break;
}
}
if(usepai==0) {
tehai[counter] = rnd1;
counter++;
}
}
Arrays.sort(tehai);
counter = 0;
int maisuu = 0;
int manpinsou = 0;
while(maisuu<13) {
for(paicheck=0; paicheck<13; paicheck++) {
if(tehai[paicheck]==counter) {
if(maisuu==0) {
System.out.print(tsumo(counter));
} else {
switch(manpinsou) {
case 0:
if(counter<36) {
System.out.print(tsumo(counter));
} else if(counter<72) {
System.out.print("m" + tsumo(counter));
manpinsou = 1;
} else if(counter<108) {
System.out.print("m" + tsumo(counter));
manpinsou = 2;
} else {
System.out.print("m" + tsumo(counter));
manpinsou = 3;
}
break;
case 1:
if(counter<72) {
System.out.print(tsumo(counter));
} else if(counter<108) {
System.out.print("p" + tsumo(counter));
manpinsou = 2;
} else {
System.out.print("p" + tsumo(counter));
manpinsou = 3;
}
break;
case 2:
if(counter<108) {
System.out.print(tsumo(counter));
} else {
System.out.print("s" + tsumo(counter));
manpinsou = 3;
}
break;
case 3:
System.out.print(tsumo(counter));
break;
}
}
maisuu++;
break;
}
}
counter++;
}
switch(manpinsou) {
case 0:
System.out.print("m");
break;
case 1:
System.out.print("p");
break;
case 2:
System.out.print("s");
break;
case 3:
break;
}
}
static String tsumo(int var1) {
String res1 = "";
if(var1 < 36) {
res1 = String.valueOf(((var1 - (var1 % 4)) / 4) + 1);
} else if(var1 < 72) {
res1 = String.valueOf(((var1 - 36 - (var1 % 4)) / 4) + 1);
} else if(var1 < 108) {
res1 = String.valueOf(((var1 - 72 - (var1 % 4)) / 4) + 1);
} else {
switch((var1 - 108 - (var1 % 4))/4) {
case 0:
res1 = "東";
break;
case 1:
res1 = "南";
break;
case 2:
res1 = "西";
break;
case 3:
res1 = "北";
break;
case 4:
res1 = "白";
break;
case 5:
res1 = "發";
break;
case 6:
res1 = "中";
break;
}
}
return res1;
}
}
なんかスッキリしないなぁ。なんでだろう。
ちゃんと考えてないからか。
ちなみに
rnd1 = rnd.nextInt(136);
の部分の136を36に変更すると、萬子だけの配牌になってメンチン考えるコードに早変わり。
なんだこれ。
この記事が気に入ったらサポートをしてみませんか?