Страницы

среда, 8 июля 2015 г.

Игра Угадай число С++

Напишем еще одну небольшую программу на С++. Это игра, в которой компьютер (то есть программа) загадывает число и предлагает пользователю угадать его. Если пользователь называет верное число, то выдается сообщение и предлагается поиграть еще. Если число неверное, то программа сообщает, больше или меньше оно, чем нужно.
Ведется подсчет числа попыток, и в зависимости от этого выводятся разные сообщения.
Можно отработать технологию двоичного поиска и потренироваться в циклах.
В программе использованы два цикла. Один внешний (работа программы, пока пользователь согласен продолжить), второй внутренний (сам процесс отгадывания и подсчет попыток).
Оба цикла – do-while, то есть с постусловием. Можно использовать другие циклы.
Вот, вроде, и все.
Текст программы с комментариями:

//программа Угадай число
#include <iostream>
#include <ctime>
using namespace std;

void main()
{
    //загаданное число, угадываемое число, количество попыток
    int number, usernumber, numberOfAttempts;
    //символьная переменная
    char YesNo;
    //инициализация генератора случайных чисел
    srand(time(NULL));
    //цикл программы - внешний
    do
    {
        //программа загадывает случайное число
        number = rand()%1000 + 1;
        cout<<"My number between 1 and 1000\n";
        cout<<"Can you guess?\n";
        //обныление числа попыток
        numberOfAttempts=0;
        //начинается отгадывание
        do
        {
            cout<<"Make attempt: "<<numberOfAttempts + 1<<endl;
            cout<<"Enter the number: ";
            cin>>usernumber;
            //увеличиваем число попыток
            numberOfAttempts++;
            //число угадано
            if(number==usernumber)
            {
                cout<<"Excellent! You guessed the number\n";
            }
            //число не угадано
            else
            {
                if(usernumber<number)
                {
                    cout<<"Too small number. Try again\n";
                }
                else
                {
                    cout<<"too big number. Try again\n";
                }
            }
        } while(number!=usernumber);//пока число не угадано
        //в зависимости от числа попыток
        //выводим разные сообщения
        if(numberOfAttempts<10)
            cout<<"Or you know the secret, or you're lucky\n";
        else
        {
            if(numberOfAttempts==10)
                cout<<"Aha! You know the secret!\n";
            else
                cout<<"You have to develop your abilities!\n";
        }       
        //предложение играть дальше
        cout<<"Want to play again (y or n)?";
        cin>>YesNo;
    } while(YesNo=='Y'||YesNo=='y');
    cin.get();
    return;
}
Процесс игры: