2016-02-14 4 views
-1

Я потратил почти час на эту ошибку, и я не могу найти, где я ошибся (свежий набор глаз, вероятно, поможет LOL). это {array = Random.genRandom();} Я тоже получаю Имя rand не существует в контексте для моего MainClass. где он говорит: «а также получаю ошибку для моего контрструктора. Я в основном просто делаю игру с генератором случайных чисел, где номер отображается в начале, и человек может получить удар, мяч и т. д. за неправильные ответы. У меня есть два класса. Основной класс и подкласс.System.Random не содержит определения .... C#?

MainClass:

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

namespace NumBaseBall 
{ 
    class MainClass 
    { 
     static void Main(string[] args) 
     { 
      int[] player; 
      int[] array; 
      int NumberOfTries = 0; 
      int Strikes = 0; 
      int ball = 0; 
      int input; 
      int count = 0; 
      int g = 0; 
      decimal game = 0; 
      decimal wins = 0; 
      decimal percent = 0; 
      int Ru = 0; 



      Console.WriteLine("Welcome to Number Baseball Game"); 
      Console.WriteLine("By: "); 


      while (Ru != -1) 
      { 
       Console.WriteLine("The three Digit random number is: \t"); 

       MethodClass = rand = new MethodClass(); 

       array = Random.genRandom(); 
       Console.WriteLine(); 

       NumberOfTries = 0; 

       game++; 

       while (NumberOfTries < 5) 
       { 

        ball = 0; 
        Strikes = 0; 

        Console.Write("Enter three digit number: \t"); 
        input = Convert.ToInt32(Console.ReadLine()); 

        player = MethodClass.splitNumber(input); 

        for (int i = 0; i < 3; i++) 
        { 
         count = 0; 

         if ((player[i] == array[g]) && (count == 0)) 
         { 
          if (player[0] == array[0]) 
          { 
           Strikes++; 
          } 

          else 
          { 
           ball++; 
          } 
          count++; 

         } 

         else if ((player[i] == array[g + 1]) && (Strikes == 0)) 
         { 
          if (player[2] == array[2]) 
          { 
           Strikes++; 
          } 
          else 
          { 
           ball++; 
          } 
         } 
         if (Strikes == 3) 
         { 
          Console.WriteLine("Goodjob! You guessed the random number!"); 
          wins++; 
          continue; 

         } 
         else if (Strikes == 0 && ball == 0) 
         { 
          Console.WriteLine("0 Strikes, 0 ball"); 
         } 
         else if ((Strikes > 0 && Strikes < 3) || (ball > 0)) 
         { 
          Console.WriteLine("{0} Strikes and {1}", Strikes, ball); 
         } 
         NumberOfTries++; 
        } 
        if (Strikes == 0) 
        { 
         Console.WriteLine("\nYou lost!"); 
        } 
        percent = (wins/game) * 100; 

        Console.WriteLine("Total amount played: {0}, Number of wins: {1}, Winning Percentage: {2:F2}", 
           game, wins, percent); 
        Console.WriteLine("Press Enter to exist"); 
        Console.ReadLine(); 
       } 
      } 

     } 
    } 
} 

MethodsClass:

//Mohamed Shire 



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

namespace NumBaseBall 
{ 
    class MethodClass 
    { 
     int[] random = new int[3]; 


     public int[] genRandom() 
     { 
      int my; 
      Random rand = new Random();  
      for (int i = 0; i < random.Length; i++) 
      { 
       my = rand.Next(1, 10); 
       if (isExists(random, my) == false) 
       { 
        random[i] = my; 
        Console.Write(random[i]); 
       } 
       else 
       { 
        i--; 
       } 
      } 
      return random; 


     } 

     public bool isExists(int[] array, int my) 
     { 
      for (int i = 0; i < array.Length; i++) 
      { 
       if (array[i] == my) 
       { 
        return true; 

       } 
      } 

      return false; 
     } 

     public static int[] splitNumber(int input) 
     { 
      int[] uInput = new int[3]; 
      uInput[0] = input/100; 
      uInput[1] = input % 100/10; 
      uInput[2] = input % 100 % 10; 
      return uInput; 

     } 

     public static void outputArray(int[] array) 
     { 
      for (int i = 0; i < array.Length; i++) 
      { 
       Console.WriteLine(array[i]); 
      } 

     } 


    } 


} 
+1

Пожалуйста, прочтите [this] (https://stackoverflow.com/help/mcve) и попробуйте обрезать код на меньший пример, который воспроизводит проблему. При этом вы, скорее всего, решите проблему самостоятельно. –

+0

Используйте ['int.TryParse()'] (http://stackoverflow.com/a/199484/380384), чтобы обеспечить плавный поток программы после проверки «ENTER». – ja72

ответ

0

Попробуйте изменить это:

MethodClass = rand = new MethodClass(); 

array = Random.genRandom(); 

к:

MethodClass rand = new MethodClass(); 

array = rand.genRandom(); 
+0

Эй, просто быстрый вопрос: я хочу получить подсказку в конце, где, когда игрок набирает 0, игра перезапускается, и когда они нажимают кнопку ввода, она заканчивается. Вот что у меня есть: 'Console.Write (« Чтобы продолжить играть, нажмите 0: для выхода из игры нажмите enter. Чтобы продолжить вводить любое число, отличное от -1: »);' – JavaStudent22

+0

Я знаю, что я могу использовать 'Convert.ToInt32 'для 0, но как насчет того, когда они нажимают ENTER для выхода? – JavaStudent22