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 に答える