象棋比赛助手

package ZuoYe;

import java.util.Scanner;

/**
 * @author zyh
 * @version 1.0
 * @ClassName SaiZhu
 * Description:
 * @date 2023/11/20 10:13
// */
public class SaiZhu {
    public static void main(String[] args) {
//        选手名
        String st[]=new String[32];
//        选手分数
        int a[]=new int[32];
//        对手分数
        int b[]=new int[32];
//        选手对手
        int ab[][]=new int[32][8];
        Scanner s=new Scanner(System.in);
        for(int i=1;i<33;i++){
            System.out.println("请输入"+i+"号选手的名字:");
            st[i-1]=s.next();
        }
//        第一轮比赛对阵表0 01 1 23  2  45   3   67红方先走
        for(int k=1;k<=7;k++) {
            System.out.println("第" + k + "轮比赛对阵表!");
            for (int i = 0; i < 16; i++) {
                System.out.println((i + 1) + "组 红方:" + st[i * 2] +"\t"+ a[i*2]+"分 对手"+b[i*2]+"分 ------------"
                        + (i + 1) + "组 黑方:" + st[i * 2 + 1]+"\t"+a[i*2+1]+"分!对手"+b[i*2+1]+"分");
            }
//        第一轮比赛结束
            for (int i = 0; i < 16; i++) {
                while (true) {
                    System.out.println((i + 1) + "组红方选手" + st[i * 2] + "------------" + (i + 1) + "组黑方选手" + st[i * 2 + 1]);
                    System.out.println("输入获胜方--1红方  2黑方   3和棋:");
                    int n = s.nextInt();
                    if (n == 1) {
                        System.out.println((i + 1) + "组红方选手" + st[i * 2] + "获胜!");
                        a[i * 2] += 2;
//                    标记对手号
                        ab[i * 2][k] = i * 2 + 1;
                        ab[i * 2 + 1][k] = i * 2;
                        System.out.println(st[i * 2] + "获胜现得分!" + a[i * 2] + "**||**" + st[i * 2 + 1] + "失败现得分" + a[i * 2 + 1]);
                        break;
                    } else if (n == 2) {
                        System.out.println((i + 1) + "组黑方选手" + st[i * 2 + 1] + "获胜!");
                        a[i * 2 + 1] += 2;
                        ab[i * 2][k] = i * 2 + 1;
                        ab[i * 2 + 1][k] = i * 2;
                        System.out.println(st[i * 2] + "失败现得分!" + a[i * 2] + "**||**" + st[i * 2 + 1] + "获胜现得分" + a[i * 2 + 1]);
                        break;
                    } else if (n == 3) {
                        System.out.println("和棋!");
                        a[i * 2] += 1;
                        a[i * 2 + 1] += 1;
                        ab[i * 2][k] = i * 2 + 1;
                        ab[i * 2 + 1][k] = i * 2;
                        System.out.println(st[i * 2] + "和棋现得分!" + a[i * 2] + "**||**" + st[i * 2 + 1] + "和棋现得分" + a[i * 2 + 1]);
                        break;
                    } else {
                        System.out.println("输入错误!重新输入:");
                    }
                }
//
            }
//            对手分
            for(int i=0;i<32;i++){
                for(int j=1;j<=k;j++)b[i]+=a[ab[i][j]];
            }
//             全部红方排序
            for (int i = 1; i < 16; i++) {
                for (int j = 0; j < 30; j += 2) {
                    if (a[j] < a[j + 2]||a[j]==a[j+2]&&b[j]<b[j+2]) {
                        int n = a[j];String ming=st[j];int m[]=new int[8];m=ab[j];
                        a[j] = a[j + 2];st[j]=st[j+2];ab[j]=ab[j+2];
                        a[j + 2] = n;st[j+2]=ming;ab[j+2]=m;
                    }
                }
//                全部黑方排序
                for (int j = 1; j < 30; j += 2) {
                    if (a[j] < a[j + 2]||(a[j]==a[j+2]&&b[j]<b[j+2])) {
                        int n = a[j];String ming=st[j];int m[]=new int[8];m=ab[j];
                        a[j] = a[j + 2];st[j]=st[j+2];ab[j]=ab[j+2];
                        a[j + 2] = n;st[j+2]=ming;ab[j+2]=m;
                    }
                }
            }
//            黑红交换
            for (int j = 0; j < 16; j++) {
                int n = a[j * 2];
                a[j * 2] = a[j * 2 + 1];
                a[j * 2 + 1] =n;
            }

        }
//        对手分计算
        for(int i=0;i<32;i++){
            for(int j=1;j<8;j++)b[i]+=a[ab[i][j]];
        }
        //        最后总排序
        for(int i=0;i<31;i++){
            for(int j=0;j<31-i;j++){
                if(a[j]<a[j+1]||a[j]==a[j+1]&&b[j]<b[j+1]){
                    int n=a[j];a[j]=a[j+1];a[j+1]=n;
                }
            }
        }

//第七轮比赛结果排名
        for(int i=0;i<32;i++){
            System.out.println("第"+(i+1)+"名"+st[i]+"   获得:"+a[i]+"分   "+"对手分"+b[i]);

        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值