Добавляем Русский язык и цвет в игру Крестики/Нолики

Забаненный
Статус
Оффлайн
Регистрация
6 Ноя 2016
Сообщения
587
Реакции[?]
311
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как я говорил в первом гайде:"Я расскажу вам как изменить Английский язык на Русский и как поменять цвет текста".

Открываем наш проект.Перед нами код.

Код:
#include <iostream>

#include <string>


char board[9] = {};           

                          
void clearscreen()             
{
    for (int i = 0; i<100; i++)
    {
        std::cout << std::endl;
    }
}


void clearboard()         
{
    for (int i = 0; i<9; i++)
    {
        board[i] = '-';
    }

}


bool has_wonQ(char player)                                     

{
    int wins[][3] = { { 0,1,2 },{ 3,4,5 },{ 6,7,8 },{ 0,3,6 },{ 1,4,7 },
    { 2,5,8 },{ 0,4,8 },{ 2,4,6 }
    };
  
  
    for (int i = 0; i<8; i++)   
    {
        int count = 0;          ]
        for (int j = 0; j<3; j++)
        {
            if (board[wins[i][j]] == player)
                count++;
        }
        if (count == 3)
        {
            return true;
        }
    }
    return false;   

void print_board(std::string indent)

{
    std::cout << "Game board\n";     
    std::cout << indent << "-" << board[6] << "-|-" << board[7] << "-|-" << board[8] << "- \n";
    std::cout << indent << "-" << board[3] << "-|-" << board[4] << "-|-" << board[5] << "- \n";
    std::cout << indent << "-" << board[0] << "-|-" << board[1] << "-|-" << board[2] << "- \n";
}


int get_move()
{
    std::cout << "\nMenu hodov: \n";   
    std::cout << "-7-|-8-|-9-" << std::endl;
    std::cout << "-4-|-5-|-6-" << std::endl;
    std::cout << "-1-|-2-|-3-" << std::endl;
    std::cout << "\n";                   

    print_board("");
    std::cout << "\nVvod chisla: ";


    int move;
    std::cin >> move;
    while (move > 9 || move < 1 || board[move - 1] != '-')
    {
        std::cout << "Vvedite chislo ot (1 do 9):\n";
        std::cin >> move;

    }
    return move;
}

char play_and_get_winner()

{
    int turn = 1;

    while (!has_wonQ('X') && !has_wonQ('0'))
    {
        clearscreen();
        int move = get_move();

        clearscreen();
        if (turn % 2 == 1)
        {
            board[move - 1] = 'X';
            if (has_wonQ('X'))
            {
                std::cout << "X,Pozdravlyau vi vuigrali!\n";
                return 'X';
            }

        }
        else                   
        {
            board[move - 1] = '0';
            if (has_wonQ('0'))
            {
                std::cout << "O,Pozdravlyau vi vuigrali!\n";
                return '0';     
            }
        }
        turn++;               
        if (turn == 10)       
        {
            std::cout << "nechya\n";
            return 'D';           
        }
    }
}

while (reply == "y")
    {
        clearboard();
        char winner = play_and_get_winner();
        print_board("\t  ");

        switch (winner)
        {
        case 'X': 
            x_wins++;
            break;   
        case '0':   
            o_wins++;
            break;   
        case 'D':   
            ties++; 
            break;   
        }

        std::cout << "\n\t*Winer statistic*\nPlayer X: " << x_wins
            << ", Player 0: " << o_wins << " and Ties: " << ties << "\n\n";
        std::cout << "\n would you like to play again? (y/n): ";
        std::cin >> reply;
        while (reply != "y" && reply != "n") //цикл while(пока значениеreply(ответ)  !=не равно "y" или&& пока значениеreply(ответ) !=не равно "n") то цикл бесконечен
        {
            std::cout << "please inter a valid reply (y/n):";
            std::cin >> reply;
        }

    }
Приступим к изменению цвета текста.Мы вписываем данную часть кода перед #include:
Код:
#include <iostream>
#include <Windows.h>
#include <string>

HANDLE hConsole;
//HANDLE hStdout, hStdin;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
char board[9] = {}; 
using namespace std;

enum ConsoleColor
{
    Black = 0,
    Blue = 1,
    Green = 2,
    Cyan = 3,
    Red = 4,
    Magenta = 5,
    Brown = 6,
    LightGray = 7,
    DarkGray = 8,
    LightBlue = 9,
    LightGreen = 10,
    LightCyan = 11,
    LightRed = 12,
    LightMagenta = 13,
    Yellow = 14,
    White = 15
};       
void SetColor(ConsoleColor text, ConsoleColor background)
{
    SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}
#include <Windows.h> включает функции WinAPI sleep(), beep() и т.д
HANDLE hConsole;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); получение хєндла консоли.
using namespace std; пространство имен, используется для того, чтобы ограничить видимость переменных.
enum ConsoleColor Задает константы, которые определяют основной цвет и цвет фона консоли.
SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text)); этим мы задаём атрибуты для шрифта консоли, можем и покрасить его.
void SetColor(ConsoleColor text, ConsoleColor background) устанавливаем цвет текста,заднего плана.Пример:
Код:
void print_board(std::string indent) //функция void print_board(){ … } которая будит выводить  доску на экран[/COLOR]
[COLOR=rgb(166, 255, 77)]{
    SetColor(Yellow, Black);
    std::cout << "свой текст\n";        //Выводится на экран заголовок Game board
    std::cout << indent << "-" << board[6] << "-|-" << board[7] << "-|-" << board[8] << "- \n";//Выводится пустая доска с заголовком “Game board” (игровое поле)
    std::cout << indent << "-" << board[3] << "-|-" << board[4] << "-|-" << board[5] << "- \n";// в которой и будут отображаться X или О
    std::cout << indent << "-" << board[0] << "-|-" << board[1] << "-|-" << board[2] << "- \n";//Заменяется переменная стринг (-) на переменную board[] с номером клетки, т.к.  переменные начинаются с нуля, то  вместо 1 пишется 0, вместо 2 пишется 1 и т.д.
}
В данном примере вы увидели значение SetColor(Yellow,Black);1-ый цвет означает цвет текста,а 2-ой цвет означает "цвет фона"
В моём случае я поставил значения цвета (Red,White).

Изменению цвета текста мы научились, далее изменения языка.
В изменение языка нам поможет код setlocale(LC_ALL, "Russian");
Теперь вам остается вставить его перед std::cout <<
void print_board(std::string indent) //функция void print_board(){ … } которая будит выводить доску на экран
{
SetColor(LightRed,White);
setlocale(LC_ALL, "Russian");
std::cout << "Ваш текст"; //Выводится на экран заголовок Game board
std::cout << indent << "-" << board[6] << "-|-" << board[7] << "-|-" << board[8] << "- \n";//Выводится пустая доска с заголовком “Game board” (игровое поле)
std::cout << indent << "-" << board[3] << "-|-" << board[4] << "-|-" << board[5] << "- \n";// в которой и будут отображаться X или О
std::cout << indent << "-" << board[0] << "-|-" << board[1] << "-|-" << board[2] << "- \n";//Заменяется переменная стринг (-) на переменную board[] с номером клетки, т.к. переменные начинаются с нуля, то вместо 1 пишется 0, вместо 2 пишется 1 и т.д.
}

На этом я заканчиваю гайд. Всем спасибо.
 
Последнее редактирование модератором:
Забаненный
Статус
Оффлайн
Регистрация
31 Май 2017
Сообщения
26
Реакции[?]
23
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Шаппорд топ кодер
 
Забаненный
Статус
Оффлайн
Регистрация
14 Июн 2017
Сообщения
1,025
Реакции[?]
324
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Впринцепе для изучения норм.Будет время почитаю внимательнее
 
Забаненный
Статус
Оффлайн
Регистрация
6 Ноя 2016
Сообщения
587
Реакции[?]
311
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сверху Снизу