• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

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

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

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

Код:
Expand Collapse Copy
#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:
Код:
Expand Collapse Copy
#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) устанавливаем цвет текста,заднего плана.Пример:
Код:
Expand Collapse Copy
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-ой цвет означает "цвет фона"
nnUwDws.png
В моём случае я поставил значения цвета (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 и т.д.
}
PlaYaJr.png

На этом я заканчиваю гайд. Всем спасибо.
 
Последнее редактирование модератором:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Шаппорд топ кодер
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Впринцепе для изучения норм.Будет время почитаю внимательнее
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Назад
Сверху Снизу