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

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

05.03.2023, 19:56. Показов 17366. Ответов 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
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
09.03.2023, 15:07
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от SmallEvil Посмотреть сообщение
Доска уже часть Бота ?
пока нет. и это я собираюсь исправить.

Цитата Сообщение от SmallEvil Посмотреть сообщение
Или все же интерфейс ?
тут нужно всего лишь знать как получить доступ к актуальной доске.

но доступ только на чтение!
что, конешно, мало кто будет соблюдать, поэтому игре сразу краш)

Цитата Сообщение от SmallEvil Посмотреть сообщение
Если интерфейс, тогда почему он с методами и не в заголовке ?
ну, есть такое извращение, можно и так, но можно и нарезать на большее кол-во кусков,
сделать типа по дзену.
сделал так, чтобы файл был похож на чистый листок пергамента.

там нужно всё же выделить общую часть в хедер и для сервера и для клиента.

это я писал на выдохе одним потоком, там есть избыточные места, которые я бы подсократил.

Цитата Сообщение от SmallEvil Посмотреть сообщение
Классы в dll разве не зависимы от компиляторов ?
ну, компиляторы всяко разные бывают - бывают и просто с глюками - любой код от них зависит.

но я такие длл(MSYS2 GCC) подключал и к MS VS C# - работали гуд.

кстати в MSYS2 два крестовых компилятора MinGW и Clang

Цитата Сообщение от SmallEvil Посмотреть сообщение
я предлагал ранее, обязать каждый ИИ самому заботится о хранении ходов/доски и так далее.
так это уже от интеллекта зависит)

арбитр может как то проверять такие фичи и начислять в рейтинг ...
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3038 / 1054
Регистрация: 01.06.2021
Сообщений: 11,574
09.03.2023, 19:48
Написал по-быстрому простенькое приложение, чтобы играть с Randoмичем. Будет настроение - напишу норм алгоритм для движка.
Вложения
Тип файла: zip game.zip (95.5 Кб, 6 просмотров)
2
09.03.2023, 20:20

Не по теме:

Randoмич ! Закусывать надо )

0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
10.03.2023, 10:39
Цитата Сообщение от SmallEvil Посмотреть сообщение
тут еще все "вкурить" нужно...
допустим есть два разных подхода:
1. игрок хочет знать как оно работает во всех деталях и знам отдать игроку все интерфейсы которые есть нужные и не нужные.
2. игрок не хочет знать или ему не нужно знать как оно работает и знам дать ему только то что необходимо.

второй вар это может выглядеть как просто функция возвращающая точку:
C++
1
Plot step(array, typefishka, laststep);
я крутил ко второму вару...

т.е. вкуривать тут ваще нечего.
есть доска с фишками и всё - давай, вперёд ....

Цитата Сообщение от Royal_X Посмотреть сообщение
Написал по-быстрому простенькое приложение
кода я не видел, но я надеюсь качественно написал?
в том смысле, к коду можно будет вернуться и спокойно его расширять и главное понимать.

собсно Гуй.
1. Печать Лога.
2. Редактор конфига(с десяток циферок).
3. всё.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3038 / 1054
Регистрация: 01.06.2021
Сообщений: 11,574
10.03.2023, 11:52
Цитата Сообщение от XLAT
кода я не видел, но я надеюсь качественно написал?
в том смысле, к коду можно будет вернуться и спокойно его расширять и главное понимать.
Я-то пойму и смогу вернуться к коду в любое время. Но показатель хорошего кода это когда другой человек тоже в состоянии понять этот код. И тут отмечу несколько моментов: 1) это приложение достаточно простое и сделано начинающим в С++ (сделано лишь с целью иметь гуй, чтобы разрабатывать алгоритм для движка было не так скучно), поэтому любой программист его поймет, даже если написано некачественно; 2) я не думал о распространении этого приложения, поэтому сильно не заморачивался; 3) мои инструменты разработки занимают 1 ГБ на компьютере (это mingw-w64-ucrt+ текстовый редактор). Соответственно, я юзал только WinAPI и графика использует GDI+. Полагаю, что такие проекты никому неинтересны. По крайней мере, у меня сложилось впечатление по этому форуму, что в моде всякие Qt, VCL, WinForms, wxWidgets, и никто не будет делать как я...

Добавлено через 6 минут
XLAT, я ж вообще не эксперт в С++. Есть вещи, которые я не понимаю в твоём коде. Стараюсь искать ответы в сети. Поэтому я в твоей затее с турниром пока наблюдатель. Если потяну и смогу написать движок в таком виде, который нужен для турнира, то буду участвовать. Но если нет, то значит не судьба)
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
10.03.2023, 13:32
Цитата Сообщение от Royal_X Посмотреть сообщение
Есть вещи, которые я не понимаю в твоём коде.
задай все вопросы тут.

Цитата Сообщение от Royal_X Посмотреть сообщение
Полагаю, что такие проекты никому неинтересны
все интересные проекты всегда содержат внутри себя кучи НЕИНТЕРЕСНЫХ штучек.
вопрос тока в том, как приготовить и подать.

и что интересно, что и НЕИНТЕРЕСНЫЕ проекты всё также содержат внутри
себя всё те же неинтересные штучки из интересных проектов.

т.е. в основе везде лежит одно и то же.

Вопрос: ПОЧЕМУ ВЫ НЕ МОЖЕТЕ СДЕЛАТЬ ИНТЕРЕСНЫЙ ПРОЕКТ?
Ответ: ПОТОМУ ЧТО ВЫ НЕ МОЖЕТЕ СДЕЛАТЬ И НЕИНТЕРЕСНЫЙ ПРОЕКТ!

вот в этом и заковырка.

в данном случае прожект лёгкий, но в нём есть все основные стадии любого проекта,
хоть большого, хоть малого.

у меня тут на форуме есть два варианта:
1. ответить на 100 нубских банальных вопросов("чем плюс отличается от минуса?") от ботов.
2. 100 посмотреть в сторону набора задач связанных в единый прожект.

вопрос:
какой вариант есть тру?
1
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
10.03.2023, 13:36
Цитата Сообщение от XLAT Посмотреть сообщение
Сообщение от SmallEvil
тут еще все "вкурить" нужно...
допустим есть два разных подхода:
О чем я и говорил.
Моя dll (скомпилированной мною из твоего кода) не работает с твоим Арбитром (скомпилированным тобою).
0
 Аватар для vlisp
1070 / 991 / 153
Регистрация: 10.08.2015
Сообщений: 5,426
10.03.2023, 13:42
Плюсы это язык про классы, а тут каша-малаша.крестики-нолики... нашли во что играть
Универсальная модель игр 1на1: класс игра управляет процессом (нечто типа приложения в приложении), создаёт доску... Класс игрок базовый родительский. От него наследуются классы кожаный игрок и ииигрок. Отличаются они методом получения хода.
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
10.03.2023, 13:53
Цитата Сообщение от SmallEvil Посмотреть сообщение
Моя dll (скомпилированной мною из твоего кода) не работает с твоим Арбитром (скомпилированным тобою).
32 битный Арбитер для 32 длл
64 битный Арбитер для 64 длл

на гите 32 битный.

я щас проверил компиляторы разных - около десятка
гуд:
1. https://www.msys2.org/ (64+32) мощный репозиторий
2. https://jmeubank.github.io/tdm-gcc/ (64+32) легкая установка.(нет некоторых функций в std)
3. https://nuwen.net/mingw.html (64) легкая установка + есть boost внутри.

для остальных нужно либо крутить настройки(VS) либо делать ремарки в коде.

Добавлено через 2 минуты
Цитата Сообщение от vlisp Посмотреть сообщение
Плюсы это язык про классы, а тут каша-малаша.крестики-нолики... нашли во что играть
добавил ещё пункт в
Цитата Сообщение от XLAT Посмотреть сообщение
у меня тут на форуме есть два три варианта:
1. ответить на 100 нубских банальных вопросов("чем плюс отличается от минуса?") от ботов.
2. 100 посмотреть в сторону набора задач связанных в единый прожект.
3. тупо заниматься троллингом.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
10.03.2023, 13:59
Цитата Сообщение от XLAT Посмотреть сообщение
64 битный Арбитер для 64 длл
Это понятно. С dll очень мало работал.
Кстати dll у тебя без точки входа, это как понимать ?
Добавил точки входа, собрал сам и арбитра и dll.
Получаю исключение.
Code
1
2
3
4
5
6
Сигнатура проблемы:
  Имя события проблемы:   BEX64
  Имя приложения:  main.exe
  Версия приложения:    0.0.0.0
  Отметка времени приложения:   640b0aec
  Имя модуля с ошибкой:    StackHash_ebdf
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3038 / 1054
Регистрация: 01.06.2021
Сообщений: 11,574
10.03.2023, 14:09
Цитата Сообщение от XLAT
задай все вопросы тут.
При чтении твоего кода у меня появляются вопросы типа, например, для чего эта строка:
C++
1
#pragma pack(push, 1)
Конечно, мне было б удобно задать все вопросы здесь, но так я бы превратил тему в срач и уподобился бы к ботам-школьникам, которые захламляют своими темами форум. Многим это будет неинтересно, т.к. полагаю, что всем программистам твой код понятен. По этой причине, ответы на вопросы ищу в сети. И если уж не смогу там найти ответ, то напишу здесь.

vlisp, если С++ поддерживает ООП, в отличие от С, то разве это повод не заниматься в С++ функциональным программированием? Мне вот больше нравится С++, вот на нем и пишу.
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
10.03.2023, 14:22
Цитата Сообщение от Royal_X Посмотреть сообщение
#pragma pack(push, 1)
из хедера нужно перенести в cpp
и в конце файла добавить #pragma pack(pop, 1)

msys2 gcc на это молчал(мож уровень варнингов не тот)

это из той оперы как если юсинги неймспейсов в хедерах писать.

в экспериментах(только что) с разными компилями я это исправил.

Royal_X, я так понимаю у вас msys2 ucrt или что?

Цитата Сообщение от Royal_X Посмотреть сообщение
если С++ поддерживает ООП
то он ТСу писал)
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
10.03.2023, 14:23
XLAT, паника отменяется.
Все собраное мною заработало, по крайней мере последняя версия проекта.
1
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
10.03.2023, 14:25
Цитата Сообщение от SmallEvil Посмотреть сообщение
Получаю исключение.
конкретно, что за компилятор?
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
10.03.2023, 14:29
Хотя все равно про точку входа в DLL вопрос остался.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3038 / 1054
Регистрация: 01.06.2021
Сообщений: 11,574
10.03.2023, 14:39
Цитата Сообщение от XLAT
я так понимаю у вас msys2 ucrt или что?
совершенно верно. Я предпочитаю UCRT (Universal C Runtime), а не MSVCRT (Microsoft Visual C++ Runtime). Раньше пользовался mingw-w64 ucrt из winlibs, но сейчас пользуюсь тем же, но из терминала msys2.
1
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
10.03.2023, 14:42
Royal_X, я пытался как то msys2 развернуть, так он уперся в какие-то подписи/ключи и все.
Так я его и послал, туда - откуда он пришел.
0
 Аватар для vlisp
1070 / 991 / 153
Регистрация: 10.08.2015
Сообщений: 5,426
10.03.2023, 14:42
А где тут функции? Смысл функции возвращать значение. А тут что? К тому же с грамматическими ошибками и без комментариев. Кто так код пишет?
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3038 / 1054
Регистрация: 01.06.2021
Сообщений: 11,574
10.03.2023, 14:50
SmallEvil, я как чел, который пишет не в ide, т.к. не терпит гигабайты лишнего барахла, нуждаюсь в легком тулчейне для редактора. Winlibs мне нравится тем, что скачал архив, разархивировал и все готово (не нужна даже установка). Но обновлять надо вручную. Поэтому перешёл на msys2. Тут установил раз терминал и нужный тулчейн и все готово. А для обновления просто нужно периодически писать команду $pacman -Syu и всегда будет свежий компилятор.
1
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
10.03.2023, 14:55
Цитата Сообщение от Royal_X Посмотреть сообщение
Тут установил раз терминал и нужный тулчейн и все готово. А для обновления просто нужно периодически писать команду $pacman -Syu и всегда будет свежий компилятор.
Так вот эти команды и не работали у меня.
Ссылаясь на PEG ключи.
То ли не может их получить то ли проверить.
После непродолжительного но усердного разбора, не удалось решить на той системе.
У них очень необычная связь между демонами (службами).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.03.2023, 14:55

Оцените сборку в днс , как можно улучшить ? Бюджет 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;, но мне...


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru