如何在掷骰子后保持数字不变,以便我可以重新掷骰子,但不能全部掷骰子?C#(措辞糟糕的抱歉)
我正在做一个骰子游戏任务,我正在重新掷骰子,希望在6个骰子中找到3个或4个,等等。但是如果你掷一个2,我想保持这些值,然后再掷一个3,4,5。我正在努力弄清楚如何使程序在重新滚动其他程序的同时保留这些值,而不完全重新滚动所有内容如何在掷骰子后保持数字不变,以便我可以重新掷骰子,但不能全部掷骰子?C#(措辞糟糕的抱歉),c#,command-line,dice,C#,Command Line,Dice,我正在做一个骰子游戏任务,我正在重新掷骰子,希望在6个骰子中找到3个或4个,等等。但是如果你掷一个2,我想保持这些值,然后再掷一个3,4,5。我正在努力弄清楚如何使程序在重新滚动其他程序的同时保留这些值,而不完全重新滚动所有内容 using System; using System.Collections.Generic; using System.Linq; using System.Text; class die { // attributes private int
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class die
{
// attributes
private int numberOnTop;
private Random randomNumberGenerator;
// methods
// roll the die, get the number currently showing on top
public die(Random randomGenerator)
{
//initialise the random number generator
randomNumberGenerator = randomGenerator;
}
public void roll()
{
//create a random number from 1 to 6 and store it in the numberOnTop attribute
numberOnTop = randomNumberGenerator.Next(1, 7);
}
public int getNumberOnTop()
{
// a "get" method to get the value of the number currently on top and return the value to where the call was made
return numberOnTop;
}
}
class diceGame
{
//main program
public static void Main(String[] args)
{
Int32 UserSelect;
int playerone = 0;
int playertwo = 0;
int playeroneturn = 0;
Console.WriteLine("Welcome to my two person dice game. Would you like to play \r\n 1. Person vs Person \r\n 2. Person vs AI");
UserSelect = Convert.ToInt32(Console.ReadLine());
// A switch will select which option that the user input using the Value Selected variable
switch (UserSelect)
{
case 1:
do
{
Console.WriteLine("This is players 1's turn");
//create a random number generator to pass to the die objects
Random myRandomiser = new Random();
die[] myDie = new die[6];
//instantiate the three dice (the constructor is called)
for (int i = 0; i < 6; i++)
{
myDie[i] = new die(myRandomiser);
}
for (int i = 0; i < 6; i++)
{
myDie[i].roll();
switch (myDie[i].getNumberOnTop())
{
case 1:
Console.WriteLine(" ---------\r\n | |\r\n | O |\r\n | |\r\n ---------");
break;
case 2:
Console.WriteLine(" ---------\r\n | O |\r\n | |\r\n | O |\r\n ---------");
break;
case 3:
Console.WriteLine(" ---------\r\n | O |\r\n | O |\r\n | O |\r\n ---------");
break;
case 4:
Console.WriteLine(" ---------\r\n | O O |\r\n | |\r\n | O O |\r\n ---------");
break;
case 5:
Console.WriteLine(" ---------\r\n | O O |\r\n | O |\r\n | O O |\r\n ---------");
break;
case 6:
Console.WriteLine(" ---------\r\n | O O |\r\n | O O |\r\n | O O |\r\n ---------");
break;
}
}
// two of a kind check goes here and therefore the rerolls will happen here
var twoofakind = new[] { myDie[0].getNumberOnTop(), myDie[1].getNumberOnTop(), myDie[2].getNumberOnTop(), myDie[3].getNumberOnTop(), myDie[4].getNumberOnTop(), myDie[5].getNumberOnTop() };
var isLargeGroupTwo = twoofakind.GroupBy(n => n, (key, group) => group.Count())
.Any(count => count >= 2);
if (isLargeGroupTwo == true) {
Console.WriteLine("Please reroll to try and get a 3, 4, or 5 of a kind");
if (myDie[0].getNumberOnTop() == myDie[1].getNumberOnTop())
{
int i = 2;
myDie[i].roll();
}
}
// ends here
var threeofakind = new[] { myDie[0].getNumberOnTop(), myDie[1].getNumberOnTop(), myDie[2].getNumberOnTop(), myDie[3].getNumberOnTop(), myDie[4].getNumberOnTop(), myDie[5].getNumberOnTop() };
//three of a kind check
var isLargeGroupThree = threeofakind.GroupBy(n => n, (key, group) => group.Count())
.Any(count => count >= 3);
Console.WriteLine("Is there any 3 of a kind's in the roll?");
Console.WriteLine(isLargeGroupThree);
if (isLargeGroupThree == true)
{
playerone = playerone + 3;
Console.WriteLine("Player one has scored a 3 of a kind therefore earning 3 points.");
Console.WriteLine(playerone);
}
else if (isLargeGroupThree == false)
{
var fourofakind = new[] { myDie[0].getNumberOnTop(), myDie[1].getNumberOnTop(), myDie[2].getNumberOnTop(), myDie[3].getNumberOnTop(), myDie[4].getNumberOnTop(), myDie[5].getNumberOnTop() };
//four of a kind check
var isLargeGroupFour = fourofakind.GroupBy(n => n, (key, group) => group.Count())
.Any(count => count >= 4);
Console.WriteLine("Is there any 4 of a kind's in the roll?");
Console.WriteLine(isLargeGroupFour);
if (isLargeGroupFour == true)
{
playerone = playerone + 6;
Console.WriteLine("Player one has scored a 4 of a kind therefore earning 6 points.");
Console.WriteLine("Player one's total score is" + playerone);
}
else if (isLargeGroupFour == false)
{
var fiveofakind = new[] { myDie[0].getNumberOnTop(), myDie[1].getNumberOnTop(), myDie[2].getNumberOnTop(), myDie[3].getNumberOnTop(), myDie[4].getNumberOnTop(), myDie[5].getNumberOnTop() };
//four of a kind check
var isLargeGroupFive = fiveofakind.GroupBy(n => n, (key, group) => group.Count())
.Any(count => count >= 5);
Console.WriteLine("Is there any 5 of a kind's in the roll?");
Console.WriteLine(isLargeGroupFive);
if (isLargeGroupFive == true)
{
playerone = playerone + 12;
Console.WriteLine("Player one has scored a 5 of a kind therefore earning 12 points.");
Console.WriteLine("Player two's total score is" + playerone);
}
}
}
Console.ReadLine();
} while (playerone < 50);
Console.WriteLine("Player one has reached 50 points in " + playeroneturn + "turns");
break;
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
级模
{
//属性
私人国际电话号码;
专用随机数发生器;
//方法
//滚动模具,获取顶部当前显示的编号
公共骰子(随机发生器)
{
//初始化随机数生成器
randomNumberGenerator=随机生成器;
}
公众登记册()
{
//创建一个从1到6的随机数,并将其存储在numberOnTop属性中
numberrontop=randomNumberGenerator.Next(1,7);
}
public int getNumberOnTop()
{
//一个“get”方法,用于获取当前位于顶部的数字的值,并将该值返回到进行调用的位置
返回号码:RONTOP;
}
}
类骰子游戏
{
//主程序
公共静态void Main(字符串[]args)
{
Int32用户选择;
int-playerone=0;
int playertwo=0;
整圈=0;
Console.WriteLine(“欢迎来到我的双人骰子游戏。您想玩\r\n 1.个人对个人\r\n 2.个人对AI吗”);
UserSelect=Convert.ToInt32(Console.ReadLine());
//开关将选择用户使用所选变量值输入的选项
开关(用户选择)
{
案例1:
做
{
Console.WriteLine(“该轮到玩家1了”);
//创建随机数生成器以传递到模具对象
Random myRandomiser=新的Random();
模具[]myDie=新模具[6];
//实例化三个骰子(调用构造函数)
对于(int i=0;i<6;i++)
{
myDie[i]=新的die(myRandomiser);
}
对于(int i=0;i<6;i++)
{
myDie[i].roll();
开关(myDie[i].getNumberOnTop())
{
案例1:
Console.WriteLine(-----------\r\n | | \r\n | O | \r\n | | \r\n----------------);
打破
案例2:
Console.WriteLine(-----------\r\n | O | \r\n | | \r\n | O | \r\n----------------);
打破
案例3:
Console.WriteLine(-----------\r\n | O | \r\n | O | \r\n | O | \r\n----------------);
打破
案例4:
Console.WriteLine(-----------\r\n | O | \r\n | | \r\n | O | \r\n----------------);
打破
案例5:
Console.WriteLine(-----------\r\n | O | \r\n | O | \r\n | O | \r\n----------------);
打破
案例6:
Console.WriteLine(-----------\r\n | O | \r\n | O | \r\n | O | \r\n----------------);
打破
}
}
//这里有两个类似的检查,因此在这里会发生重滚
var twoofakind=new[]{myDie[0]。getNumberOnTop(),myDie[1]。getNumberOnTop(),myDie[2]。getNumberOnTop(),myDie[3]。getNumberOnTop(),myDie[4]。getNumberOnTop(),myDie[5]。getNumberOnTop();
var isLargeGroupTwo=twoofakind.GroupBy(n=>n,(键,组)=>group.Count())
。任何(计数=>计数>=2);
if(isLargeGroupTwo==true){
WriteLine(“请重新滚动以尝试获得3、4或5的类型”);
如果(myDie[0].getNumberOnTop()==myDie[1].getNumberOnTop())
{
int i=2;
myDie[i].roll();
}
}
//到此为止
var threeofakind=new[]{myDie[0]。getNumberOnTop(),myDie[1]。getNumberOnTop(),myDie[2]。getNumberOnTop(),myDie[3]。getNumberOnTop(),myDie[4]。getNumberOnTop(),myDie[5]。getNumberOnTop();
//三张支票
var isLargeGroupThree=threeofakind.GroupBy(n=>n,(key,group)=>group.Count())
。任何(计数=>计数>=3);
控制台。WriteLine(“卷中有3个同类的吗?”);
控制台写入线(isLargeGroupThree);
if(isLargeGroupThree==true)
{
playerone=playerone+3;
WriteLine(“玩家一得了3分,因此得到3分。”);
控制台。WriteLine(playerone);
}
else if(isLargeGroupThree==false)
{
var fourofeakind=new[]{myDie[0]。getNumberOnTop(),myDie[1]。getNumberOnTop(),myDie[2]。getNumberOnTop(),myDie[3]。getNumberOnTop(),myDie[4]。getNumberOnTop(),myDie[5]。getNumberOnTop();
//四张支票
var isLargeGroupFour=fourofakind.GroupBy(n=>n,(键,组)=>grou
if (isLargeGroupTwo == true) {
Console.WriteLine("Please reroll to try and get a 3, 4, or 5 of a kind");
if (myDie[0].getNumberOnTop() == myDie[1].getNumberOnTop())
{
for(int i = 2; i < 6; i++)
myDie[i].roll();