用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(); // 格式换行