1

我做了一个骰子游戏,就在几分钟前,我在这里寻求解决方案,我得到了。它提出了一个新问题,我似乎无法找到答案。

这是代码。

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

namespace Noppapeli
{
    class Program
    {
        static void Main(string[] args)
        {
            int pyöräytys;
            int satunnainen;
            int luku = 0;

            Random noppa = new Random((int)DateTime.Now.Ticks);

            Console.WriteLine("Anna arvaus");
            int.TryParse(Console.ReadLine(),out pyöräytys);

            Console.WriteLine("Haettava numero on: " + pyöräytys);
            Console.ReadLine();
            do
            {
                luku++;
                satunnainen = noppa.Next(1, 7);
                Console.WriteLine("numero on: " + satunnainen);
                if (satunnainen == pyöräytys)
                {
                    satunnainen = pyöräytys;
                }
            } while (pyöräytys != satunnainen);

            Console.WriteLine("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
            Console.WriteLine("Haettu numero: " + pyöräytys);
            Console.WriteLine("Pyöräytetty numero: " + satunnainen);
            Console.Write("Kesti " + luku + " Nopan pyöräytystä saada tulos!");
            Console.ReadLine();
        }
    }
}

问题是int.TryParse(Console.ReadLine(),out pyöräytys);只需要取 1-6 之间的值。现在如果我把 7 放在那里,游戏就会循环从 D6 中找到 7。有没有简单的解决方案,或者我应该让骰子更大。

4

2 回答 2

1

您只需添加某种循环以确保该值有效并继续循环直到提供有效值。

pyöräytys = -1; // Set to invalid to trigger loop

while (pyöräytys < 1 || pyöräytys > 6)
{
   Console.WriteLine("Anna arvaus");
   int.TryParse(Console.ReadLine(),out pyöräytys);

   if (pyöräytys < 1 || pyöräytys > 6)
   {
       Console.WriteLine("Invalid value, must be 1-6"); // Error message
   }
}
于 2013-05-02T13:17:24.880 回答
0

只需验证输入值在 1 到 6 之间:

bool valid;
while (!valid)
{
    Console.WriteLine("Anna arvaus");
    int.TryParse(Console.ReadLine(),out pyöräytys);
    valid = (pyöräytys > 0 && pyöräytys <= 6);
}
于 2013-05-02T13:17:49.137 回答