用C#编写一个骰子游戏,一共三个骰子,顺子豹子什么的,求代码

用C#编写一个骰子游戏,一共三个骰子,每个骰子有六个点数(1~6之间),你和电脑随机投掷,输出投掷的结果(你获胜,电脑获胜,平局)
结果是这个yang'zi'de图片说明

规则:
状态大小规则:豹子>顺子>对子>普通
豹子:三个数相同(例如:1 1 1,3 3 3),比较最大的数的大小
顺子:三个数连号(例如:1 2 3,3 4 5),比较最大的数的大小
对子:有两个数相同(例如:2 2 4,2 5 5),先比较对子的大小,如果对子相同,则比较单数的大小
普通:没规律(例如:1 2 4,2 3 6),比较最大的数的大小,如果最大数相同,则比较第二大数的大小,如果第二大数相同,则比较最小数的大小

要求:
1. 输出你的投掷点数和电脑的投掷点数
2. 输出你的骰子状态和电脑的骰子状态
3. 输出你和电脑的点数大小结果

问题解决的话,请点下采纳

https://download.csdn.net/download/caozhy/12247722

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Q1058514
{
    class Program
    {
        static int Rank(int[] arr)
        {
            if (arr.Distinct().Count() == 1) return 3;
            if (arr.OrderBy(x => x).Zip(Enumerable.Range(arr.Min(), 3), (x, y) => x == y).Count(x => x) == 3) return 2;
            if (arr.Distinct().Count() == 2) return 1;
            return 0;
        }
        static Random rnd = new Random();
        static int[] GenRnd()
        {
            return Enumerable.Range(0, 3).Select(x => rnd.Next(1, 7)).ToArray();
        }
        static int GetPairOrSingle(int[] arr, bool pair)
        {
            if (pair) return arr.GroupBy(x => x).OrderBy(x => x.Count()).Last().Key;
            return arr.GroupBy(x => x).OrderBy(x => x.Count()).First().Key;
        }
        static void Main(string[] args)
        {
            int[] arr1 = { };
            int[] arr2 = { };
            int a = 0;
            int b = 0;
            arr1 = GenRnd();
            arr2 = GenRnd();
            a = Rank(arr1);
            b = Rank(arr2);
            string[] rank = { "普通", "对子", "顺子", "豹子" };
            Console.WriteLine("你的投掷点数是:" + string.Join(" ", arr1));
            Console.WriteLine("电脑的投掷点数是:" + string.Join(" ", arr2));
            Console.WriteLine("你的骰子状态是:" + rank[a]);
            Console.WriteLine("电脑的骰子状态是:" + rank[b]);
            if (arr1.OrderBy(x => x).SequenceEqual(arr2.OrderBy(x => x)))
                Console.WriteLine("结果:平局");
            else if
            (
                (
                    a > b
                )
                ||
                (
                    (
                        a == b
                    )
                    &&
                    (
                        (
                            arr1.Max() > arr2.Max() && (a == 2 || a == 3)
                        )
                        ||
                        (
                            (
                                (
                                    GetPairOrSingle(arr1, true) > GetPairOrSingle(arr2, true)
                                )
                                || 
                                (
                                    (
                                        GetPairOrSingle(arr1, true) == GetPairOrSingle(arr2, true)
                                        &&
                                        (GetPairOrSingle(arr1, false) > GetPairOrSingle(arr2, false))
                                    )
                                )
                            )
                            && 
                            a == 1
                        )
                        ||
                        (
                            arr1.OrderByDescending(x => x).Zip(arr2.OrderByDescending(x => x), (x, y) => x - y).SkipWhile(x => x == 0).First() > 0
                            &&
                            a == 0
                        )
                    )
                )
            )
                Console.WriteLine("结果:你获胜");
            else
                Console.WriteLine("结果:电脑胜");
        }
    }
}

package cn.fy.test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
import java.util.Scanner;

public class DiceDemo {

static int a = 0; // 你自己选中的第一个数默认设置为0

static int b = 0; // 你自己选中的第二个数默认设置为0

static int c = 0; // 你自己选中的第三个数默认设置为0

static int x = 0; // 电脑选中的第一个数默认设置为0

static int y = 0; // 电脑选中的第二个数默认设置为0

static int z = 0; // 电脑选中的第三个数默认设置为0

public static void main(String[] args) {
    start();
}

public static void start() {
    a = yourSelfChoese(); // 实际手投掷的第一个数
    b = yourSelfChoese(); // 实际手投掷的第二个数
    c = yourSelfChoese(); // 实际手投掷的第三个数

    ArrayList list = new ArrayList<>(); // 该集合存放你选中的数
    list.add(a);
    list.add(b);
    list.add(c);
    Collections.sort(list); // 将你自己选中集合的中数升序排序
    System.out.print("你投掷的点数是:");
    getChooseNum(list);

    System.out.println();
    // 电脑投掷的数放在集合里
    int computerNum1 = getComputerNum();
    int computerNum2 = getComputerNum();
    int computerNum3 = getComputerNum();

    ArrayList computerNumList = new ArrayList<>(); // 该集合存放电脑选中的数
    computerNumList.add(computerNum1);
    computerNumList.add(computerNum2);
    computerNumList.add(computerNum3);
    Collections.sort(computerNumList); // 将电脑选中集合的中数升序排序
    System.out.print("电脑的投掷点数是:");
    getComputerRandom(computerNumList);

    everyYourSelfNum(list);
    a = (int) list.get(0); // 你自己选中数字之后的排序的最小的一个点数
    b = (int) list.get(1); // 你自己选中数字之后的排序的最小到最大之间的一个点数
    c = (int) list.get(2); // 你自己选中数字之后的排序的最大的一个点数

    everyComputerfNum(computerNumList);
    computerNum1 = (int) computerNumList.get(0); // 电脑选中数字之后的排序的最小的一个点数
    computerNum2 = (int) computerNumList.get(1); // 电脑选中数字之后的排序的最小到最大的一个点数
    computerNum3 = (int) computerNumList.get(2); // 电脑选中数字之后的排序的最大的一个点数

    x = computerNum1; // 改变下变量名,增加可读对称性
    y = computerNum2;
    z = computerNum3;

    System.out.println(); // 格式换行