Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.65/71: Рейтинг темы: голосов - 71, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 05.03.2023
Сообщений: 1

Оцените и посоветуйте как можно улучшить код Крестики-нолики

05.03.2023, 19:56. Показов 17266. Ответов 284
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я учусь в 10 классе и для индивидуального проекта мне нужно чтобы вы оценили и как-то посоветовали улучшить код программы крестики нолики на C++. Вот сам код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <windows.h>
using namespace std;
 
void output(char** field) {
    cout << "  1 2 3" << endl;
    for (int i = 0; i < 3; i++) {
        cout << i + 1 << " ";
        for (int j = 0; j < 3; j++) {
            cout << field[i][j] << " ";
        }
        cout << endl;
    }
}
void input(char** field, bool& gamer, string& Name1, string& Name2) {
 
    int answer;
    while (true) {
 
        if (gamer) {
            cout << Name1;
        }
        else {
            cout << Name2;
        }
        cout << ", введите номер строки и столбца: ";
 
 
        cin >> answer;
        if (answer > 10 && answer < 34) {
            int i = answer / 10;
            int j = answer % 10;
 
            if (0 < j && j < 4) {
                if (field[i - 1][j - 1] != 'X' && field[i - 1][j - 1] != 'O') {
                    if (gamer) {
                        field[i - 1][j - 1] = 'X';
                    }
                    else {
                        field[i - 1][j - 1] = 'O';
                    }
                    gamer = !gamer;
                    break;
                }
            }
        }
        cout << "Вы ввели неверную ячейку" << endl;
    }
}
char** fieldCreate(char c = '_') {
    int const n = 3;
    char** field = new char* [n];
    for (int i = 0; i < n; i++) {
        field[i] = new char[n];
        field[i][0] = c;
        field[i][1] = c;
        field[i][2] = c;
    }
    return field;
}
bool chekWin(char** field, string& Name1, string& Name2) {
    bool chekWin = false, gamer = false;
 
    if (field[0][0] == field[1][1] && field[0][0] == field[2][2] && (field[0][0] == 'X' || field[0][0] == 'O') || field[2][0] == field[1][1] && field[2][0] == field[0][2] && (field[2][0] == 'X' || field[2][0] == 'O')) {
        chekWin = true;
        if (field[1][1] == 'X') {
            gamer = true;
        }
    }
    else {
        for (int i = 0; i < 3; i++) {
            if (field[i][0] == field[i][1] && field[i][0] == field[i][2] && (field[i][0] == 'X' || field[i][0] == 'O') || field[0][i] == field[1][i] && field[0][i] == field[2][i] && (field[0][i] == 'X' || field[0][i] == 'O')) {
                chekWin = true;
                if (field[i][i] == 'X') {
                    gamer = true;
                }
                break;
            }
        }
    }
 
    if (chekWin) {
        if (gamer) {
            cout << "победил !" << Name1 << endl;
        }
        else {
            cout << "победил  !" << Name2 << endl;
        }
        return true;
    }
    else {
        bool draw = true;
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                if (field[i][j] != 'X' && field[i][j] != 'O') {
                    draw = false;
                }
            }
        }
 
        if (draw) {
            cout << "ничья";
            return true;
        }
    }
 
    return false;
}
void defoultMassive(char** field, char c = '_') {
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            field[i][j] = c;
        }
    }
}
bool continueGame() {
    bool flag = true;
    while (true) {
        string answer;
        cout << "Хотите ли вы продолжить игру?(Да/Нет)" << endl << "Введите ответ: "; //<< answer;
        cin >> answer;
        if (answer == "Да") {
            break;
        }
        else if (answer == "Нет") {
            flag = false;
            break;
        }
        else {
            cout << "Такого ответа не существует!";
        }
    }
    return flag;
}
void deleteMassive(char** field) {
    for (int i = 0; i < 3; i++) {
        delete[] field[i];
    }
    delete[] field;
}
void randomPlayer(string& Name1, string& Name2) {
    srand(time(0));
    int num = rand() % 2;
    cout << "Введите имя первого игрока: ";
    cin >> Name1;
    cout << "Введите имя второго игрока: ";
    cin >> Name2;
    if (num) {
        string tmp = Name1;
        Name1 = Name2;
        Name2 = tmp;
    }
    cout << "Первым ходит: " << Name1 << endl;
}
 
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    bool gamer = true;
    char** field = fieldCreate();
    string Name1, Name2;
    randomPlayer(Name1, Name2);
    while (true) {
        defoultMassive(field);
        while (true) {
            system("Cls");
            output(field);
            if (chekWin(field, Name1, Name2))
                break;
            input(field, gamer, Name1, Name2);
 
        }
        if (!continueGame())
            break;
    }
    deleteMassive(field);
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.03.2023, 19:56
Ответы с готовыми решениями:

Крестики-нолики, улучшить программу
Здравствуйте, нужна помощь в улучшении программы. Игра &quot;крестики-нолики&quot;. Суть заключается в проверке на число от 1 до 9 если введено не от...

Как оптимизировать данный код игры крестики нолики?
Привет всем! Я написал консольную игру &quot;Крестики нолики&quot;. Хочу посоветоваться как можно оптимизировать игру. Вот исходный код: ...

Оцените игру крестики нолики (Player vs Bot easy)
Отцените игру. Уровень : легкий

284
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
23.03.2023, 02:06
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от zayats80888 Посмотреть сообщение
Итого имеем: система контроля версий и распределения задач, система документированя и система сборки.
Не -не, еще не имеем, хотим иметь )
Я как простой Junior develoпер, хочу кусочек проекта по кодингу.
А не вот это вот все, СМаке, картинки с абстрактными структурами, и всякое такое.
Нет.

Добавлено через 3 минуты
Цитата Сообщение от XLAT Посмотреть сообщение
некоторые можно даже скомпилить задав ручками ссылки на буст
Собирал libtorrent, подключение библиотек , включая boost, там задаются специальными параметрами.
Это как раз таки не проблема.
Проблема Cmake, что каждая студия его делает как хочет, потому что можно.
Поэтому автоегенерация всегда есть и будет делом для "бедняков".
Я не верю что части проекта сгенерированные из разных иде студий ос соберутся в тимлидера.
0
23.03.2023, 02:11

Не по теме:

как то раз настраивал я спутниковый инет.
изучил всё - НЕДЕЛЮ проверял все запятые и перепробовал все комбинации.
нету инета хоть ты тресни...
позвал соседа - что не так?
сосед десять минут проверял и сделал заключение - ПЕРЕУСТАНОВИТЬ ВИНДУ.
и ушёл.
так как сил опаться у мя уже не оставалось, то я последовал совету - и переустановил винду.

и что?
инет завёлся с пол оборота....

0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
23.03.2023, 02:23
Цитата Сообщение от XLAT Посмотреть сообщение
как то раз настраивал я спутниковый инет

Вполне возможно что не была запущена всего лишь одна служба.
А вообще, С МастДаем всегда так
Я вот буквально вчера обновил семерку, пакеты безопасности.
ОДна из стим игр, единственная еще онлайн в которую играю, перестала работать.
Но она уже давно выеживалась. Вручную ей подменял ее плагины старыми версиями.
Разрабы тупо забили.
Так же как юнити, играл в легендарную Heartstone, с одним из выходом обнолвений, у меня пропали анимационные текстуры.
И все. Пока до свидания.
То есть, их выбор писать на Юнити, привел к тому что они потеряли часть клиентов.

Добавлено через 3 минуты
Цитата Сообщение от SmallEvil Посмотреть сообщение
То есть, их выбор писать на Юнити, привел к тому что они потеряли часть клиентов.
Почему именно виноват Юнити, спросите ?
Потому что Близзард вполне хотел бы еще поддерживать много старых видеокарт и Win7 в том числе.
Но так как они изначально созданы на Юнити, то и дальнейшая работа так же зависит уже не только от них.
Кроссплатформенность звучит здорово, самому это не поднять, используем 3пати инструменты, и стаем их заложниками.
1
И тут вот те нате
322 / 209 / 117
Регистрация: 12.07.2016
Сообщений: 555
23.03.2023, 02:43
Цитата Сообщение от SmallEvil Посмотреть сообщение
Вот в этой ветке, на мой скромное мнение, как раз таки скатывается )
Мы тут учимся чему-то новому, почему бы не освоить универсальный, "христоматийный" cmake, а надо довольствоваться имеющимся билдером IDE? Я его недавно изучал, с удовольствием бы почитал (и возможно поучаствовал) в его "разборе"
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
23.03.2023, 03:06
Evgen173, хоть тут уже и тесно, и cmake, и другие подобные темы, нужно обговаривать в отдельных тредах/потоках того же проекта.
Но вот при первом знакомстве не могу отделать от чувства что меня "натягивают"(CMAKE).
Пишут про модульность, а на самом деле все связанно по рукам и ногам.
Простой пример :
- подпроект создает несколько библиотек.
- главный проект подключает их и линкует.
Так вот, этот главный проект обязан знать где находятся хидеры этих библиотек.
А можно было брать инфу из этих подпроектов.
И наверное есть возможность. Но опять, это э сколько нужно изучать всего
И ради чего ?
Смотри, кросс проект и так делается с мейкфайлом, хоть тем же автотулзом.
Каким боком тут пристроился этот Симаке ?
Кто его впихивает в невпихуемое ?
Покажите мне этого дядю с большими ушами
0
23.03.2023, 06:47

Не по теме:

Цитата Сообщение от SmallEvil Посмотреть сообщение
Простой пример :
- подпроект создает несколько библиотек.
- главный проект подключает их и линкует.
Так вот, этот главный проект обязан знать где находятся хидеры этих библиотек.
А можно было брать инфу из этих подпроектов.
Все свои зависимости "цели" подпроектов подтягиваю сами.
Нужно их только прописать у самих "целей": target_(link_libraries/include_directories/compile_options/compile_definitions/...), причем будут ли и как эти зависимости распратроняться на тех, кто "линкуется" с этими "целями", тоже настраивается (PUBLIC / PRIVATE / INTERFACE)

Тебе достаточно лишь привязать дочернюю "цель" к "цели" главного пректа (target_link_libraries).
Цитата Сообщение от SmallEvil Посмотреть сообщение
И наверное есть возможность. Но опять, это э сколько нужно изучать всего
И ради чего ?
Смотри, кросс проект и так делается с мейкфайлом, хоть тем же автотулзом.
Каким боком тут пристроился этот Симаке ?
Кто его впихивает в невпихуемое ?
Покажите мне этого дядю с большими ушами
Так у нас тут спец по autoconf...
Теперь понятно, почему бочку на cmake катит.
Чего ж ты раньше молчал? Я не против,. Ты только проект нам построй, я думаю разберусь как у себя его сбилдить. Ну и поддержку оказывать будешь по ходу.

0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
23.03.2023, 08:23
Цитата Сообщение от zayats80888 Посмотреть сообщение
Так у нас тут спец по autoconf...
К сожалению я в нем не екпсерт, слышал такое.
По cmake : выбирать единственную система сборки и минимум компиляторов - это конечно хороший путь.
Но вопросов не становится меньше. И видится что для сборки подпроектов созданных на разных компиляторах, одного симейка может быть недостаточно.
Придется писать свои скрипты, под действующую систему.
Как я понял, сборка QT настраивается своими средствами.

И еще, у этого самого человека по написанию сценариев cmake должен быть полный набор компиляторов и утилит для всех используемых подпроектов ?

Что у нас имеется/используется по текущему состоянию ?
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
23.03.2023, 08:41

Не по теме:

Цитата Сообщение от SmallEvil Посмотреть сообщение
К сожалению я в нем не екпсерт, слышал такое.
Но тон и несомый смысл твоей цитаты предполагает обратное...
К чему она тогда и зачем вообще упомянул?
Цитата Сообщение от SmallEvil Посмотреть сообщение
Как я понял, сборка QT настраивается своими средствами.
Я Qt с симейком пользуюсь...
Цитата Сообщение от SmallEvil Посмотреть сообщение
И еще, у этого самого человека по написанию сценариев cmake должен быть полный набор компиляторов и утилит для всех используемых подпроектов ?
Как минимум тех, что планируется поддерживать. (Самых популярных, и VS, например, не очень удачный выбор, там свои инструменты для совместной разработки, её имеет смысл поддерживать только для сборки конечного продукта. Хотя она вроде поддерживает именно проекты cmake, а не .vcproj. Я VSCode пользуюсь, вполне удобный продукт от мелгкомягких, хотя и тормознутый маленько). Остальное по мере надобности и по мере поступления проблем.



Добавлено через 5 минут

Не по теме:

З.Ы. А вообще и для это есть свои инструменты, типа https://docs.buildbot.net/current/index.html

0
23.03.2023, 09:14

Не по теме:

zayats80888, спасибо, надо все это переварить ...

0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
24.03.2023, 09:04
Цитата Сообщение от Evgen173 Посмотреть сообщение
Я его недавно изучал, с удовольствием бы почитал (и возможно поучаствовал) в его "разборе"
теоретик?

зачем балобольство?
вот есть готовый симейк проект:
https://www.cyberforum.ru/post16817999.html
собери его под какую нить свою любимую ИДЕ.

или тоже, как "профессионал" в блокноте код пишешь?

почему я это тебе предлагаю, потому у мя не получается.

сделай пжлста и отпишись тут - хотя бы уже мне поможешь.
0
24.03.2023, 09:58

Не по теме:

Цитата Сообщение от XLAT Посмотреть сообщение
потому у мя не получается.
А с MSYS и CodeBlocks не вышло?
По памяти примерно так должно быть:
работаешь из оболочки msys mingw/clang,
устанавливаешь пакет буста, cmake (тоже пакет, там скрипт для запуска, типа mingw-тратата-cmake),
создаешь каталог сборки проекта, условно:
Code
1
2
3
4
5
6
cd server
mkdir build
cd build
mingw-тратата-cmake ../source -G "CodeBlocks - MinGW Makefiles" 
...
mingw-тратата-cmake --open .
Смысл последней строки - запустить CB из оболочки, чтоб он энвайронмент msys подхватил.

---

Цитата Сообщение от zayats80888 Посмотреть сообщение
mingw-тратата-cmake --open .
UPD, попробовал у себя с CB, не запускает, короче явно запустить CB из оболочки и ок.
Code
1
path/to/codeblocks server.cbp

0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
24.03.2023, 14:22
Цитата Сообщение от zayats80888 Посмотреть сообщение
А с MSYS и CodeBlocks не вышло?
c vs вожусь:
поправил рутовый симейклист:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
...
# boost
set(Boost_USE_STATIC_LIBS        ON)
set(Boost_USE_MULTITHREADED      ON)
set(Boost_USE_STATIC_RUNTIME     ON)
set(Boost_DEBUG                  OFF)
 
#if (Boost_NO_SYSTEM_PATHS)
  set(BOOST_ROOT "C:/local/boost_1_80_0")
  set(BOOST_INCLUDE_DIRS "${BOOST_ROOT}/boost")
  set(BOOST_LIBRARY_DIRS "${BOOST_ROOT}/lib64-msvc-14.2")
#endif (Boost_NO_SYSTEM_PATHS)
 
#[[
памятка по компонентам:
...
билд солушена:


и куда в симейку написать эту либ?

среди прочего пробовал так:
Code
1
2
3
4
5
6
find_package(Boost      1.76
             REQUIRED
             COMPONENTS thread
                        system
                        filesystem
                        )
бестолку.
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
24.03.2023, 14:33
Цитата Сообщение от XLAT Посмотреть сообщение
и куда в симейку написать эту либ?
Ваще, для проекта нужен только system компонент. Это из вторичных зависимостей походу.
А она вообще есть?
После find_package распечатай список либ:
Code
1
message(STATUS "LIBS = ${Boost_LIBRARIES}")
1
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
24.03.2023, 14:40
Цитата Сообщение от zayats80888 Посмотреть сообщение
message(STATUS "LIBS = ${Boost_LIBRARIES}")
Code
1
2
3
4
5
6
7
8
9
10
11
LIBS = 
optimized;C:/local/boost_1_80_0/lib64-msvc-14.2/libboost_thread-vc142-mt-s-x64-1_80.lib;
debug;C:/local/boost_1_80_0/lib64-msvc-14.2/libboost_thread-vc142-mt-sgd-x64-1_80.lib;
optimized;C:/local/boost_1_80_0/lib64-msvc-14.2/libboost_system-vc142-mt-s-x64-1_80.lib;
debug;C:/local/boost_1_80_0/lib64-msvc-14.2/libboost_system-vc142-mt-sgd-x64-1_80.lib;
optimized;C:/local/boost_1_80_0/lib64-msvc-14.2/libboost_filesystem-vc142-mt-s-x64-1_80.lib;
debug;C:/local/boost_1_80_0/lib64-msvc-14.2/libboost_filesystem-vc142-mt-sgd-x64-1_80.lib;
optimized;C:/local/boost_1_80_0/lib64-msvc-14.2/libboost_chrono-vc142-mt-s-x64-1_80.lib;
debug;C:/local/boost_1_80_0/lib64-msvc-14.2/libboost_chrono-vc142-mt-sgd-x64-1_80.lib;
optimized;C:/local/boost_1_80_0/lib64-msvc-14.2/libboost_atomic-vc142-mt-s-x64-1_80.lib;
debug;C:/local/boost_1_80_0/lib64-msvc-14.2/libboost_atomic-vc142-mt-sgd-x64-1_80.lib
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
24.03.2023, 14:59
Цитата Сообщение от XLAT Посмотреть сообщение
libboost_filesystem-vc142-mt-s-x64-1_80.lib
Это статическая либа.
А сборка просит динамическую, странно.
А если в динамику собрать? А то ты там все в статику включил.

А еще попробуй после find_package link_directories(${Boost_LIBRARY_DIRS}). Это редко нужно, но возможно, как раз твой случай.
1
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
24.03.2023, 15:39
Цитата Сообщение от zayats80888 Посмотреть сообщение
А то ты там все в статику включил.
Цитата Сообщение от zayats80888 Посмотреть сообщение
А если в динамику собрать?
на размер екзетублов и остальное заметное не влияет.

Цитата Сообщение от zayats80888 Посмотреть сообщение
link_directories(${Boost_LIBRARY_DIRS})
оно самое.
заработало.


лог тока чета сильно $асранный:
шесть раз написало:
Code
1
2
3
2>Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. For example:
2>- add -D_WIN32_WINNT=0x0601 to the compiler command line; or
2>- add _WIN32_WINNT=0x0601 to your project's Preprocessor Definitions.
как этот макрос добавить в симейк?

и вот это
static constexpr size_type fail = -1;

можно же по сишному:
static constexpr size_type fail = (size_type)-1;
?

и ещё
1.
Code
1
2>E:\CB-2023\serverZ\server_1\source\src\io\stdio_channel.cpp(26,64): warning C4100: 'context': unreferenced formal parameter
2.
Code
1
2
Severity    Code    Description Project File    Line    Suppression State
Error (active)  E0992   command-line error: invalid macro definition: -DBOOST_LIB_DIAGNOSTIC    service_tictactoe   E:\CB-2023\serverZ\server_1\source\src\service\tictactoe\client.cpp 1
ну и потом можно переходить к кодеблоку ...
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
24.03.2023, 15:49
Цитата Сообщение от XLAT Посмотреть сообщение
как этот макрос добавить в симейк?
там ниже строчка add_compile_definitions(...), туда можно добавить.
Цитата Сообщение от XLAT Посмотреть сообщение
можно же по сишному:
static constexpr size_type fail = (size_type)-1;
?
Чтоб ворнинг заглушить? Ну добавь.
Цитата Сообщение от XLAT Посмотреть сообщение
и ещё
1.
Да, для винды не реализовывал (да и нельзя, вроде). Можешь просто убрать идентификатор context или [[maybe_unused]] добавить.
Цитата Сообщение от XLAT Посмотреть сообщение
2.
#233
1
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
24.03.2023, 16:38
вот теперь чистенький лог:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Rebuild started...
1>------ Rebuild All started: Project: ZERO_CHECK, Configuration: Release x64 ------
1>Checking Build System
2>------ Rebuild All started: Project: server_io, Configuration: Release x64 ------
3>------ Rebuild All started: Project: echo_cli, Configuration: Release x64 ------
2>Building Custom Rule E:/CB-2023/serverZ/server_1/source/src/io/CMakeLists.txt
3>Building Custom Rule E:/CB-2023/serverZ/server_1/source/src/ai/CMakeLists.txt
3>echo_cli.cpp
2>process_channel.cpp
3>echo_cli.vcxproj -> E:\CB-2023\serverZ\128\bin\Release\echo_cli.exe
2>tcp_channel.cpp
2>stdio_channel.cpp
2>Generating Code...
2>server_io.vcxproj -> E:\CB-2023\serverZ\128\src\io\Release\server_io.lib
4>------ Rebuild All started: Project: service_tictactoe, Configuration: Release x64 ------
4>Building Custom Rule E:/CB-2023/serverZ/server_1/source/src/service/tictactoe/CMakeLists.txt
4>text_v1_protocol_parser.cpp
4>parser.cpp
4>player.cpp
4>service.cpp
4>arbiter.cpp
4>session.cpp
4>client.cpp
4>Generating Code...
4>service_tictactoe.vcxproj -> E:\CB-2023\serverZ\128\src\service\tictactoe\Release\service_tictactoe.lib
5>------ Rebuild All started: Project: test_tictactoe, Configuration: Release x64 ------
5>Building Custom Rule E:/CB-2023/serverZ/server_1/source/src/test/CMakeLists.txt
5>test_tictactoe.cpp
5>test_tictactoe.vcxproj -> E:\CB-2023\serverZ\128\bin\Release\test_tictactoe.exe
6>------ Skipped Rebuild All: Project: ALL_BUILD, Configuration: Release x64 ------
6>Project not selected to build for this solution configuration 
========== Rebuild All: 5 succeeded, 0 failed, 1 skipped ==========
Кликните здесь для просмотра всего текста

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
cmake_minimum_required(VERSION 3.13)
 
project(server VERSION 0.1.0 LANGUAGES CXX)
 
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
 
if (NOT EXISTS ${CMAKE_BINARY_DIR}/CMakeCache.txt)
  if (NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)
  endif()
endif()
 
set(Boost_USE_STATIC_LIBS        OFF)
set(Boost_USE_MULTITHREADED      ON)
set(Boost_USE_STATIC_RUNTIME     OFF)
set(Boost_DEBUG                  OFF)
 
#if (Boost_NO_SYSTEM_PATHS)
  set(BOOST_ROOT "C:/local/boost_1_80_0")
  set(BOOST_INCLUDE_DIRS "${BOOST_ROOT}/boost")
  set(BOOST_LIBRARY_DIRS "${BOOST_ROOT}/lib64-msvc-14.2")
#endif (Boost_NO_SYSTEM_PATHS)
 
#[[
памятка по компонентам:
    atomic
    chrono
    container
    context
    coroutine
    date_time
    exception
    fiber
    filesystem
    graph
    graph_parallel
    iostreams
    locale
    log
    math
    metaparse
    mpi
    program_options
    python
    random
    regex
    serialization
    signals
    stacktrace
    system
    test
    thread
    timer
    type_erasure
    wave
]]
 
find_package(Boost      1.76
             REQUIRED
             COMPONENTS thread
                        system
                        filesystem
                        )
    
                        
#message(STATUS "LIBS = ${Boost_LIBRARIES}")
link_directories(${Boost_LIBRARY_DIRS})
 
add_compile_definitions(#$<$<CONFIG:Debug>:BOOST_ASIO_ENABLE_HANDLER_TRACKING> # для отладки boost:asio
                        _WIN32_WINNT=0x0603
                        )
 
if (NOT MSVC)
  add_compile_options(-Wall -Wextra -pedantic-errors)
else()
  add_compile_options(/W4)
endif()
 
include_directories(include)
 
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
 
add_subdirectory(src)


вот теперь настала очередь кодоблокса ...
1
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
24.03.2023, 16:42
XLAT, только твой жесткие пути не надо прописывать прям в файл, желательно передавать их при запуске cmake, но это ладно, пока. Так же убери компоненты thread и filesystem, не нужны они (тоже пока).
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
24.03.2023, 17:56
Цитата Сообщение от zayats80888 Посмотреть сообщение
только твой жесткие пути не надо прописывать прям в файл
добавить опцию для гуя в которой можно задать директорию либы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.03.2023, 17:56

Оцените сборку в днс , как можно улучшить ? Бюджет 50 к
Вот http://www.dns-shop.ru/conf/b6dc324d86718ee2/ ссылка на днс , хотел бы узнать как вам моя сборка , делаю это в первый раз Бюджет 55 к

Посоветуйте как улучшить код
@Autowired private ClothFabricRepository clothFabricRepository; @Autowired private CurtainRepository curtainRepository; ...

Посоветуйте, как улучшить код?
Здравствуйте! Вот такую форму написал. Посоветуйте как улучшить код? &lt;html&gt; &lt;head&gt; &lt;title&gt;&lt;/title&gt; ...

Крестики-нолики: как написать код для того, чтобы программа могла объявить победителя?
И да, поле 5 на 5. Сам код: #include &lt;iostream&gt; #include &lt;locale.h&gt; #include &lt;Windows.h&gt; using namespace std; void...

Подскажите какую игру можно написать в Делфи, не сильно сложную, не такую, как змейка, крестики-нолики, пинг-понг и т.д?
Мне нужно написать какую-нибудь программу в делфи, но как говорит мой препод &quot;не такую, что можно написать за 5 минут&quot;, но мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
280
Ответ Создать тему
Новые блоги и статьи
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru