以下代码适用于掷骰子游戏。我不确定代码的逻辑是否正确。我想测试它,但是当我运行这段代码时,没有输出。它将编译并显示空白屏幕,没有输出。我不知道为什么什么都不显示。同样,任何对代码逻辑的建议也将不胜感激。当最初不滚动2、3、7、11或12时,我在如何执行重新滚动过程上遇到困难。谢谢
对于那些不熟悉游戏的人:掷2个骰子,掷7或11则获胜。 2、3或12是亏损。其他任何数字都将成为“点”,并且玩家将重新滚动直到该点或7被掷出为止。达到目标就是胜利。这次7是亏损。
class Craps
{
const int dieSides = 6;
int roll;
//const int repeatGame = 1000;
Random random = new Random();
public void RollDice()
{
int die1 = 0;
int die2 = 0;
die1 = random.Next(6) + 1;
die2 = random.Next(6) + 1;
roll = die1 + die2;
Console.WriteLine("The shooter roled: {0}", roll);
}
public void PlayCraps()
{
RollDice();
int gameStatus = 0;
int point = roll;
int numRolls = 1;
while (gameStatus < 1)
{
if (roll == 7 || roll == 11)
{
Console.WriteLine("You won!");
break;
}
else if (roll == 2 || roll == 3 || roll == 12)
{
Console.WriteLine("You lost.");
break;
}
else
{
RollDice();
Console.WriteLine("The point is: {0}", point);
while (point != roll || roll != 7)
{
if (roll == point)
{
Console.WriteLine("You won!");
numRolls++;
gameStatus++;
}
if (roll == 7)
{
Console.WriteLine("You lost");
numRolls++;
gameStatus++;
}
RollDice();
numRolls++;
}
}
}
}
static void Main(string[] args)
{
Craps NewGame = new Craps();
Console.ReadLine();
}
}
}
答案 0 :(得分:3)
在您的Main
函数中,您正在创建一个Craps
对象,但从未对其进行任何操作。
如果您调用Craps.PlayCraps()
,它将导致它实际上执行除创建对象以外的其他操作,然后等待用户输入。
答案 1 :(得分:2)
我可能会弄错,但是我相信在main方法中,您应该调用该方法,而不仅仅是类。 示例:
static void Main(string[] args)
{
Craps NewGame = new Craps();
NewGame.PlayCraps();
Console.ReadLine();
}
} }
答案 2 :(得分:0)
作为您在Main()
中提出的其他建议的替代方法,您可以在新的PlayCraps()
对象上调用NewGame
方法,例如:
Craps NewGame = New Craps();
NewGame.PlayCraps();
您可以代替在PlayCraps()
构造函数中调用Craps
方法:
class Craps
{
const int dieSides = 6;
int roll;
//const int repeatGame = 1000;
Random random = new Random();
//start the game in the constructor:
public Craps()
{
this.PlayCraps();
}
public void RollDice()
{
int die1 = 0;
int die2 = 0;
die1 = random.Next(6) + 1;
die2 = random.Next(6) + 1;
roll = die1 + die2;
Console.WriteLine("The shooter roled: {0}", roll);
}
public void PlayCraps()
{
RollDice();
int gameStatus = 0;
int point = roll;
int numRolls = 1;
while (gameStatus < 1)
{
if (roll == 7 || roll == 11)
{
Console.WriteLine("You won!");
break;
}
else if (roll == 2 || roll == 3 || roll == 12)
{
Console.WriteLine("You lost.");
break;
}
else
{
RollDice();
Console.WriteLine("The point is: {0}", point);
while (point != roll || roll != 7)
{
if (roll == point)
{
Console.WriteLine("You won!");
numRolls++;
gameStatus++;
}
if (roll == 7)
{
Console.WriteLine("You lost");
numRolls++;
gameStatus++;
}
RollDice();
numRolls++;
}
}
}
}
static void Main(string[] args)
{
Craps NewGame = new Craps();
Console.ReadLine();
}
}
现在,当您初始化NewGames
掷骰子对象时,PlayCraps()
方法将作为该初始化的一部分被调用,游戏将开始。我认为另一种方法更清晰一些,它允许您在调用Craps
方法之前设置PlayCraps()
属性(如果有的话),但是我觉得这里使用构造函数是值得一提。