package com.formssi.testTream;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* 分组猜拳PK
* @author pindu
*
*/
public class BuildTeam {
/**
* 分组PK情况
* @param teamNum
*/
public static void buildTeam(int teamNum) {
List<Integer> list = new ArrayList<>();
//生成随机组数
nums(teamNum, 1, teamNum, list);
List<Integer> list2 = new ArrayList<>();
//将随机组分组
while (list2.size() < list.size()) {
list2.add(list.remove(list.size()-1));
}
System.out.println("分组情况");
//输出分组对阵
for(int i=0;i<list2.size();i++){
System.out.println(list2.get(i)+"\t"+list.get(i));
}
//输出分组猜拳情况
System.out.println("分组猜拳情况");
for(int i=0;i<list2.size();i++){
isTeam(list2.get(i), list.get(i));
}
}
/**
* 判断两队猜拳的输赢情况,并输出
* @param host
* @param guest
*/
public static void isTeam(int host,int guest) {
if (paper(host, guest)) {
System.out.println(host+" 队与 "+guest+" 队猜拳情况 "+host+" 队胜");
}else {
System.out.println(host+" 队与 "+guest+" 队猜拳情况 "+guest+" 队胜");
}
}
/**
* 生成一组不同的随机数 arr{1,2,3,4,5,6} 比如随机生成了3 取出arr[3]=3,然后将arr{1,2,6,4,5,3} 数组模拟长度减1
* 比如随机生成了3 取出arr[3]=6,然后将arr{1,2,5,4,6,3} 数组模拟长度减1
*
* @author pindu
*/
public static void nums(int num, int min, int max,List<Integer> list) {
// 如果生成树目超出范围直接返回
int len = max - min + 1;
if (num > len) {
return;
}
// 生成有序数组
int[] arr = new int[len];
for (int i = 0; i < len; i++) {
arr[i] = i + min;
}
// 生成随机数
int t = 0;
while (num > 0) {
t = (int) (Math.random() * (max - min + 1)) % len;
// System.out.println(arr[t]);
list.add(arr[t]);
arr[t] = arr[--len];
num--;
}
}
/**
* 判断两队猜拳输赢
* @param host
* @param guest
* @return 返回TRUE 说明主队赢
*/
public static boolean paper(int host,int guest) {
List<Integer> list = new ArrayList<>();
int temp = -6;
int sum = 0;
while (list.size() < 3) {
sum = 0;
if(0 != (temp=isWin(fight(), fight()))){
list.add(temp);
}
switch (temp) {
case 0:
System.out.println("\t平");
break;
case 1:
System.out.println("\t胜");
break;
case -1:
System.out.println("\t输");
break;
}
for(Integer i:list){
sum +=i;
}
if (sum > 1) {
return true;
}else if (sum < -1) {
return false;
}
}
for(Integer i:list){
sum +=i;
}
return sum >= 1 ? true : false;
}
/**
* 随机猜拳情况
* @return 随机出拳
*/
public static char fight() {
int t = (int) (Math.random()*3);
if (0 == t) {
return 'O';
}else if (1 == t) {
return 'X';
}else {
return '#';
}
}
/**
* 猜拳的所有情况
* @param host 主队的出拳
* @param guest 客队的出拳
* @return
*/
public static int isWin(char host,char guest) {
System.out.print("host:"+host+"\tguest:"+guest);
if ('O' == host && 'X' == guest) {
return 1;
}
if ('O' == host && '#' == guest) {
return -1;
}
if ('O' == host && 'O' == guest) {
return 0;
}
if ('X' == host && 'O' == guest) {
return -1;
}
if ('X' == host && '#' == guest) {
return 1;
}
if ('X' == host && 'X' == guest) {
return 0;
}
if ('#' == host && 'X' == guest) {
return -1;
}
if ('#' == host && 'O' == guest) {
return 1;
}
if ('#' == host && '#' == guest) {
return 0;
}
return 0;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入比赛组数:");
int team = in.nextInt();
while (team%2 != 0 || team <1) {
System.out.println("比赛对数需要为偶数,请重新输入:");
team = in.nextInt();
}
buildTeam(team);
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* 分组猜拳PK
* @author pindu
*
*/
public class BuildTeam {
/**
* 分组PK情况
* @param teamNum
*/
public static void buildTeam(int teamNum) {
List<Integer> list = new ArrayList<>();
//生成随机组数
nums(teamNum, 1, teamNum, list);
List<Integer> list2 = new ArrayList<>();
//将随机组分组
while (list2.size() < list.size()) {
list2.add(list.remove(list.size()-1));
}
System.out.println("分组情况");
//输出分组对阵
for(int i=0;i<list2.size();i++){
System.out.println(list2.get(i)+"\t"+list.get(i));
}
//输出分组猜拳情况
System.out.println("分组猜拳情况");
for(int i=0;i<list2.size();i++){
isTeam(list2.get(i), list.get(i));
}
}
/**
* 判断两队猜拳的输赢情况,并输出
* @param host
* @param guest
*/
public static void isTeam(int host,int guest) {
if (paper(host, guest)) {
System.out.println(host+" 队与 "+guest+" 队猜拳情况 "+host+" 队胜");
}else {
System.out.println(host+" 队与 "+guest+" 队猜拳情况 "+guest+" 队胜");
}
}
/**
* 生成一组不同的随机数 arr{1,2,3,4,5,6} 比如随机生成了3 取出arr[3]=3,然后将arr{1,2,6,4,5,3} 数组模拟长度减1
* 比如随机生成了3 取出arr[3]=6,然后将arr{1,2,5,4,6,3} 数组模拟长度减1
*
* @author pindu
*/
public static void nums(int num, int min, int max,List<Integer> list) {
// 如果生成树目超出范围直接返回
int len = max - min + 1;
if (num > len) {
return;
}
// 生成有序数组
int[] arr = new int[len];
for (int i = 0; i < len; i++) {
arr[i] = i + min;
}
// 生成随机数
int t = 0;
while (num > 0) {
t = (int) (Math.random() * (max - min + 1)) % len;
// System.out.println(arr[t]);
list.add(arr[t]);
arr[t] = arr[--len];
num--;
}
}
/**
* 判断两队猜拳输赢
* @param host
* @param guest
* @return 返回TRUE 说明主队赢
*/
public static boolean paper(int host,int guest) {
List<Integer> list = new ArrayList<>();
int temp = -6;
int sum = 0;
while (list.size() < 3) {
sum = 0;
if(0 != (temp=isWin(fight(), fight()))){
list.add(temp);
}
switch (temp) {
case 0:
System.out.println("\t平");
break;
case 1:
System.out.println("\t胜");
break;
case -1:
System.out.println("\t输");
break;
}
for(Integer i:list){
sum +=i;
}
if (sum > 1) {
return true;
}else if (sum < -1) {
return false;
}
}
for(Integer i:list){
sum +=i;
}
return sum >= 1 ? true : false;
}
/**
* 随机猜拳情况
* @return 随机出拳
*/
public static char fight() {
int t = (int) (Math.random()*3);
if (0 == t) {
return 'O';
}else if (1 == t) {
return 'X';
}else {
return '#';
}
}
/**
* 猜拳的所有情况
* @param host 主队的出拳
* @param guest 客队的出拳
* @return
*/
public static int isWin(char host,char guest) {
System.out.print("host:"+host+"\tguest:"+guest);
if ('O' == host && 'X' == guest) {
return 1;
}
if ('O' == host && '#' == guest) {
return -1;
}
if ('O' == host && 'O' == guest) {
return 0;
}
if ('X' == host && 'O' == guest) {
return -1;
}
if ('X' == host && '#' == guest) {
return 1;
}
if ('X' == host && 'X' == guest) {
return 0;
}
if ('#' == host && 'X' == guest) {
return -1;
}
if ('#' == host && 'O' == guest) {
return 1;
}
if ('#' == host && '#' == guest) {
return 0;
}
return 0;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入比赛组数:");
int team = in.nextInt();
while (team%2 != 0 || team <1) {
System.out.println("比赛对数需要为偶数,请重新输入:");
team = in.nextInt();
}
buildTeam(team);
}
}