Угадайку и сравнение чисел - PullRequest
1 голос
/ 03 февраля 2010

Я не понимаю, как сравнить числа в файле с числом, переданным из функции.

Это мой код:

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

namespace Guess_Game
{
  class Program
  {
    static void Main(string[] args)
    {
        int quantity;
        int min, max;
        Console.WriteLine("Enter the Quantity of Numbers : ");
        quantity = int.Parse(Console.ReadLine());

        Console.WriteLine("Enter the Maximum and Minimum Number that you wish to be in your file : \n");
        Console.WriteLine("MIN : ");
        min = int.Parse(Console.ReadLine());
        Console.WriteLine("MAX : ");
        max = int.Parse(Console.ReadLine());
        Console.WriteLine("Now, Guess the Number : ");
        int number = int.Parse(Console.ReadLine());

        Console.WriteLine("Now Guess a Number That already contains in a File : ");
         number = int.Parse(Console.ReadLine());
         GuessGame(min, max, quantity, number);

        //if(number!= // number not equal to that number that contains in a file.. how to write it in that 
            //if condition..
    }

    static void GuessGame(int min,int max,int quantity,int number)
    {
        Random r = new Random();
        StreamWriter sw = new StreamWriter(@"D:\nasir\Guess Game\Guess Game\bin\Debug\ Guess Game.txt");

        for (int i = 0; i < quantity; i++)
        {
            int temp = r.Next(min, max);
            sw.WriteLine(temp);
        }
       // while(number != sw.WriteLine())
        {
            Console.WriteLine("Your Guess is Wrong!");
        }
        sw.Close();
    }
  }
}

Ответы [ 3 ]

2 голосов
/ 03 февраля 2010

Вы бросаете кубики каждый раз (несправедливо, IMO) и не читаете этот файл, а просто записываете его.Давайте начнем с этого:

static void Main()
{
    Random r = new Random();
    bool lucky = false;
    int maxTries, minValue, maxValue, guess = 0;

    GetInput("Enter number of tries: ", out maxTries);
    GetInput("Enter minimum number : ", out minValue);
    GetInput("Enter maximum number : ", out maxValue);

    int magical = r.Next(minValue, maxValue); // only once
    for (int i = 1; i <= maxTries; i++)
    {
        GetInput("Enter your guess : ", out guess);
        if (guess == magical)
        {
            lucky = true;
            break;
        }
    }

    Console.WriteLine("you.Lucky = {0};", lucky);
    Console.ReadLine();
}

static void GetInput(string text, out int variable)
{
    do Console.Write(text);          // avoiding stackoverflow.com scroll
    while (!Int32.TryParse(Console.ReadLine(), out variable));
}

Если вы хотите получить свои номера из файла, попробуйте что-то вроде:

List<int> magicals = new List<int>();
using (StreamReader reader = new StreamReader("GuessGame.txt"))
{
    int magical = 0;
    string line = "";
    while (!String.IsNullOrEmpty(line = reader.ReadLine()))
    {
        if (Int32.TryParse(line, out magical))
            magicals.Add(magical);
    }
}

и тест будет выглядеть так:

if(magicals.Contains(guess))
0 голосов
/ 29 сентября 2014

у вас есть небольшая ошибка, что вы сравниваете целое число с автором файлов sw, поэтому предположение всегда будет неверным. поэтому закройте соединение после того, как вы угадаете, добавьте программу чтения файлов:

 sw.Close();      
 StreamReader sr = new StreamReader(@"C:Guess Game.txt");

тогда сделайте сравнение

в подарок я улучшаю ваш код зала наслаждаюсь

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

 namespace Guess_Game
{
class Program
{
    static void Main(string[] args)
    {
        int quantity;
        int min, max;
        int[] number = new int[10];
        Console.WriteLine("Enter the Quantity of Numbers : ");
        quantity = int.Parse(Console.ReadLine());

        Console.WriteLine("Enter the Maximum and Minimum Number t \n");
        Console.WriteLine("MIN : ");
        min = int.Parse(Console.ReadLine());
        Console.WriteLine("MAX : ");
        max = int.Parse(Console.ReadLine());
        for (int i = 0; i < quantity; i++)
        {
            Console.WriteLine("Now, Guess the {0}Number : ", i + 1);
            number[i] = int.Parse(Console.ReadLine());
        }

        GuessGame(min, max, quantity, number);

        //if(number!= // number not equal to that number that contains in a file.. how to write it in that 
        //if condition..
    }

    static void GuessGame(int min, int max, int quantity, int[] number)
    {
        Random r = new Random();
        StreamWriter sw = new StreamWriter(@"C: Guess Game.txt");

        int[] temp = new int[quantity];
        for (int i = 0; i < quantity; i++)
        {
            temp[i] = r.Next(min, max);
            sw.WriteLine(temp[i]);

        }
        sw.Close();
        StreamReader sr = new StreamReader(@"C: Guess Game.txt");
        int trying = 3;
        int[] guess = new int[10];
        for (int i = 0; i <= quantity; i++)
            guess[i] = Convert.ToInt32(sr.ReadLine());

        for (int i = 0; i < quantity;i++ )
            for (int j = 0; j < quantity; j++)
                if (number[j] != guess[i] )
                {


         System.Console.WriteLine("you have wrong Answer,you have {0} try ", trying--);
                    for (int k = 0; k < quantity; k++)
                    {
                        Console.WriteLine("you {0} Number is", k+1);
                        number[k] = Convert.ToInt32(System.Console.ReadLine());
                    }

                    if(trying==0)

                    for (j = 0; j <quantity; j++)
           Console.WriteLine("Your Guess is right! the right answer is{0} ", guess[j]);




                }

        for (int j = 0; j < quantity; j++)
         Console.WriteLine("Your Guess is right! the right answer is{0} ", guess[j]);

  Console.ReadLine();  } 
}
}
0 голосов
/ 03 февраля 2010

Понятия не имею, как твой файл ...

изображение, которое:

12
17
9

тогда вы используете:

string[] fileNumbers = File.ReadAllLines("C:\MyGuessNumbers.txt");

так что в fileNumbers вы получаете все числа в массив строк, просто зацикливайтесь и сравнивайте:)

ПОПЫТКА ПОПРОБОВАТЬ против PARSE

из вашего кода:

int quantity;
Console.WriteLine("Enter the Quantity of Numbers : ");
quantity = int.Parse(Console.ReadLine());

если Console.ReadLine () не является целым числом, вы получите исключение, говорящее о том, что объект не может быть проанализирован, если записано, «A» - это строка, а не целое число

если вы используете

int quantity = 0;
Console.WriteLine("Enter the Quantity of Numbers : ");
while(! int.TryParse(Console.ReadLine(), out quantity) )
   Console.WriteLine("That does not seam to be an integer, please only use numbers!\nEnter the Quantity of Numbers : ");

это будет проверять, если это число, так же как и TRY, и будет возвращать логическое значение ИСТИНА или ЛОЖЬ, если оно успешно проанализировало целое число.

в этом примере я зацикливаюсь, пока пользователь не введет число на языке прогейминга, в то время как TryParse возвращает false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...