?????.??????
????Github???????????????
????????Junit4??????????????????????
????????淶?????
????C/Java????????????????????á? (???????Щ????????β???
????????????????
????????????github???
????https://github.com/qingfengsuixin/test/blob/master/ShowHand
?????????????????????????????????????
package com.langsin.text2;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;
import java.util.TreeSet;
//??????
public class ShowHand {
// 1.????????????7-k????????????
//???????????
private List<String> pukelist = new ArrayList<String>();
//??????????
private Map<String?? TreeSet<String>> map=new HashMap<String?? TreeSet<String>>();
//??????
private Map<String?? Double> sorceMap=new HashMap<String?? Double>();
private boolean flag=true;
private void creatPuke() {
String[] point = { "7"?? "8"?? "9"?? "10"?? "J"?? "Q"?? "K" };
String[] type = { "????"?? "????"?? "÷??"?? "????" };
for (int i = 0; i < type.length; i++) {
for (int j = 0; j < point.length; j++) {
pukelist.add(type[i] + point[j]);
}
}
System.out.println(pukelist);
System.out.println("-------------------");
}
//2.?????????????
private void sortedPuke(){
Random rand=new Random();
for (int i = 0; i <pukelist.size()*5; i++) {
int index1=rand.nextInt(this.pukelist.size());
int index2=rand.nextInt(this.pukelist.size());
String temp=this.pukelist.get(index1);
this.pukelist.set(index1?? this.pukelist.get(index2));
this.pukelist.set(index2?? temp);
}
System.out.println(this.pukelist);
}
//3.?????μ????????
private void creatPlayer(){
System.out.println("??????????????????????????м?????????");
Scanner scan=new Scanner(System.in);
String players=scan.nextLine();
String data[] = players.split(" ");
if (!(data.length>=2&&data.length<=5)) {
System.out.println("???????????????????????????????????У?");
flag=false;
return;
}
//?????????????????????????????????????????????
Comparator<String> comp=new Comparator<String>() {
//????????
public int compare(String str1?? String str2) {
int point1=getPoint(str1.substring(2));
int point2=getPoint(str2.substring(2));
if(point1>point2){
return 1;
}else if(point1<point2){
return -1;
}else{
int type1=getType(str1.substring(0?? 2));
int type2=getType(str2.substring(0?? 2));
if (type1>type2) {
return 1;
} else {
return -1;
}
}
}
};
for (int i = 0; i < data.length; i++) {
map.put(data[i]?? new TreeSet<String>(comp));
}
}
//??????????????ж?????????????ж????????
private int getPoint(String point){
if ("J".equals(point)) {
return 11;
}else if("Q".equals(point)){
return 12;
}else if("K".equals(point)){
return 13;
}else{
return Integer.parseInt(point);
}
}
private int getType(String type){
if ("????".equals(type)) {
return 1;
}else if("????".equals(type)){
return 2;
}else if("÷??".equals(type)){
return 3;
}else{
return 4;
}
}
//4.????????
private void showPuke(){
for (int i = 0; i < 5; i++) {
for (String key : map.keySet()) {
String puke=this.pukelist.remove(0);
map.get(key).add(puke);
}
}
for (String key : map.keySet()) {
System.out.println("???????"+key+":"+map.get(key));
}
}
//??????????
private void getSorce(){
String winner=null;
double winnerSorce=0;
for (String key : map.keySet()) {
TreeSet<String> set=map.get(key);
double sorce = this.sorce(set);
this.sorceMap.put(key?? sorce);
System.out.println("???"+key+"???????"+this.map.get(key)+" ??????"+sorce);
for(String key1:sorceMap.keySet()){
if(sorceMap.get(key1)>winnerSorce){
winnerSorce=sorceMap.get(key1);
winner=key1;
}
}
}
System.out.println("???????? "+winner+"    ???????"+winnerSorce);
}
private double sorce(TreeSet<String> set){
double sorce=0;
String[] pukes= set.toArray(new String[set.size()]);
//?ж?????????
for (int i = 0; i < pukes.length; i++) {
int point1=getPoint(pukes[i].substring(2));
int point2=getPoint(pukes[i+1].substring(2));
if (point1-point2!=1) {
flag=false;
break;
}
}
if (flag) {
sorce=5.0+this.getPoint(pukes[4].substring(2))*0.01;
return sorce;
}
//???5?????????
int point1=this.getPoint(pukes[0].substring(2));
int point2=this.getPoint(pukes[1].substring(2));
int point3=this.getPoint(pukes[2].substring(2));
int point4=this.getPoint(pukes[3].substring(2));
int point5=this.getPoint(pukes[4].substring(2));
if (point1==point4||point2==point5) {
sorce=4.0+this.getPoint(pukes[3].substring(2))*0.01;
return sorce;
}
if (point1==point3||point2==point4||point3==point5) {
sorce=3.0+this.getPoint(pukes[2].substring(2))*0.01;
return sorce;
}
if (point1==point2&&point3==point4) {
sorce=2.0+this.getPoint(pukes[2].substring(2))*0.01+this.getPoint(pukes[0].substring(2))*0.0001+this.getPoint(pukes[4].substring(2))*0.000001;
return sorce;
}
if (point2==point3&&point4==point5) {
sorce=2.0+this.getPoint(pukes[4].substring(2))*0.01+this.getPoint(pukes[1].substring(2))*0.0001+this.getPoint(pukes[0].substring(2))*0.000001;
return sorce;
}
if (point1==point2&&point4==point5) {
sorce=2.0+this.getPoint(pukes[4].substring(2))*0.01+this.getPoint(pukes[0].substring(2))*0.0001+this.getPoint(pukes[2].substring(2))*0.000001;
return sorce;
}
if (point1==point2) {
sorce=1.0+this.getPoint(pukes[0].substring(2))*0.01+this.getPoint(pukes[4].substring(2))*0.0001+this.getPoint(pukes[3].substring(2))*0.000001+this.getPoint(pukes[2].substring(2))*0.00000001;
return sorce;
}
if (point2==point3) {
sorce=1.0+this.getPoint(pukes[1].substring(2))*0.01+this.getPoint(pukes[4].substring(2))*0.0001+this.getPoint(pukes[3].substring(2))*0.000001+this.getPoint(pukes[0].substring(2))*0.00000001;
return sorce;
}
if (point3==point4) {
sorce=1.0+this.getPoint(pukes[2].substring(2))*0.01+this.getPoint(pukes[4].substring(2))*0.0001+this.getPoint(pukes[1].substring(2))*0.000001+this.getPoint(pukes[0].substring(2))*0.00000001;
return sorce;
}
if (point4==point5) {
sorce=1.0+this.getPoint(pukes[3].substring(2))*0.01+this.getPoint(pukes[2].substring(2))*0.0001+this.getPoint(pukes[1].substring(2))*0.000001+this.getPoint(pukes[0].substring(2))*0.00000001;
return sorce;
}
return sorce=this.getPoint(pukes[4].substring(2))*0.01+this.getPoint(pukes[3].substring(2))*0.0001+this.getPoint(pukes[2].substring(2))*0.000001+this.getPoint(pukes[1].substring(2))*0.000001+this.getPoint(pukes[0].substring(2))*0.00000001;
}
//??????
public void init() {
this.creatPuke();
this.sortedPuke();
this.creatPlayer();
if(flag){
this.showPuke();
this.getSorce();
}
}
//main????
public static void main(String[] args) {
new ShowHand().init();
}