Click here to Skip to main content
12,296,174 members (60,251 online)
Click here to Skip to main content
Add your own
alternative version

Tagged as

Stats

13K views
315 downloads
9 bookmarked
Posted

C#: Random Number Guessing Game

, 18 Jun 2014 CPOL
Rate this:
Please Sign up or sign in to vote.
A simple C# program to implement a "Random Number Guessing Game"

Introduction

This article will give you some tips to write a simple "Random Number Guessing Game" using C#. The program generates a 4 digit random number. For each digit, the number is chosen from 1 to 5 and the number can repeat. You have 5 attempts to guess the random number.

For example, if the random number generated is 5241 and Your Guess is 2143 in the first attempt then the program will display a message "Digit(s) in place 3 correct" indicating that the number entered at position 3 is correct.

Code

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

public class Program
{
    public class Result
    {
        public int Index { get; set; }
        public bool Flag { get; set; }
    }

    static void Main()
    {
        Program game = new Program();
        game.Run();
    }

    void Run()
    {
        // initialize the number of attempts
        int numberOfAttempts = 5;

        Console.WriteLine("\nWelcome to Random Number Guessing Game.");
        Console.WriteLine("\n\nGuess the 4 digit random number XXXX.");
        Console.WriteLine("\nFor each digit, the number is chosen from 1 to 5  \nNumbers can repeat.");
        Console.WriteLine(string.Format("\nYou have {0} attempts to win the game.", numberOfAttempts));

        // Call the method to Generate the Random Number
        string randomNumber = GenerateRandomNumber();

        for (int i = 1; i <= numberOfAttempts; i++)
        {
            // Call the method to get the user input
            string userInput = GetUserInput(i);

            // Get the result - Collection containing the result of all 4 digits
            List<Result> result = GetResult(randomNumber, userInput);

            // Guess the count of number of digits that are correct
            int flagCount = result.Where(f => f.Flag == true).Count();

            // Get the place(s)/index of digits that are correct
            string digitsCorrect = string.Join(",", result.Where(f => f.Flag == true)
                .Select(c => (++c.Index).ToString()));

            // check the flag count and display appropriate message
            if (flagCount == 4)
            {
                Console.WriteLine("Random Number:{0} , Your Input:{1}", randomNumber, userInput);
                Console.WriteLine("You guess is correct! Game Won..hurray...:)");
                break;
            }
            else if (i == numberOfAttempts)
            {
                Console.WriteLine("sorry, You missed it! Game Lost..:(");
                Console.WriteLine("Random Number is {0}", randomNumber);
            }
            else
            {
                digitsCorrect = flagCount == 0 ? "none" : digitsCorrect;
                Console.WriteLine(string.Format("Digit(s) in place {0} correct", digitsCorrect));
            }
        }

        Console.ReadLine();
    }

    public List<Result> GetResult(string randomNumber, string userInput)
    {
        char[] splitRandomNumber = randomNumber.ToCharArray();
        char[] splitUserInput = userInput.ToCharArray();

        List<Result> results = new List<Result>();

        for (int index = 0; index < randomNumber.Length; index++)
        {
            Result result = new Result();
            result.Index = index;
            result.Flag = splitRandomNumber[index] == splitUserInput[index];
            results.Add(result);
        }

        return results;
    }

    public string GetUserInput(int attempt)
    {
        int inputNumber;

        Console.WriteLine(string.Format("\nGuess the number. Attempt:{0}", attempt));
        Console.WriteLine("Input a 4 digit number");

        if (int.TryParse(Console.ReadLine(), out inputNumber)
            && inputNumber.ToString().Length == 4)
        {
            return inputNumber.ToString();
        }
        else
        {
            Console.WriteLine("You have entered a invalid input.");
            return "0000";
        }
    }

    public string GenerateRandomNumber()
    {
        Random random = new Random();
        string number = string.Empty;
        int length = 4;

        for (int i = 0; i < length; i++)
        {
            number += random.Next(1, 6);
        }

        return number;
    }
}

Output

Happy Coding!!!!

 

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

John-ph
Technical Lead
India India


You may also be interested in...

Comments and Discussions

 
GeneralMy vote of 4 Pin
Kaushal Jain21-Jun-14 22:09
memberKaushal Jain21-Jun-14 22:09 
GeneralMy vote of 5 Pin
Volynsky Alex21-Jun-14 0:18
professionalVolynsky Alex21-Jun-14 0:18 
GeneralRe: My vote of 5 Pin
John-ph21-Jun-14 0:31
memberJohn-ph21-Jun-14 0:31 
GeneralRe: My vote of 5 Pin
Volynsky Alex21-Jun-14 0:33
professionalVolynsky Alex21-Jun-14 0:33 
GeneralI did things like this in the first year of studying programming Pin
csakii20-Jun-14 11:21
professionalcsakii20-Jun-14 11:21 
GeneralRe: I did things like this in the first year of studying programming Pin
John-ph21-Jun-14 0:23
memberJohn-ph21-Jun-14 0:23 
QuestionLiked a lot...so posting a bit more improved version using StringBuilder, no LINQ etc Pin
AnandChavali19-Jun-14 0:49
memberAnandChavali19-Jun-14 0:49 
GeneralRe: Liked a lot...so posting a bit more improved version using StringBuilder, no LINQ etc Pin
John-ph19-Jun-14 1:27
memberJohn-ph19-Jun-14 1:27 
GeneralRe: Random Number Guessing Game Pin
CodeFrux Technologies18-Jun-14 22:00
groupCodeFrux Technologies18-Jun-14 22:00 
GeneralRe: Random Number Guessing Game Pin
John-ph19-Jun-14 1:27
memberJohn-ph19-Jun-14 1:27 
BugCode Correction Pin
Yugandhar Lakkaraju18-Jun-14 8:28
memberYugandhar Lakkaraju18-Jun-14 8:28 
GeneralRe: Code Correction Pin
Dewey18-Jun-14 18:05
memberDewey18-Jun-14 18:05 
GeneralRe: Code Correction Pin
John-ph19-Jun-14 1:27
memberJohn-ph19-Jun-14 1:27 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.160525.2 | Last Updated 18 Jun 2014
Article Copyright 2014 by John-ph
Everything else Copyright © CodeProject, 1999-2016
Layout: fixed | fluid