Форум программистов, компьютерный форум, киберфорум
Программирование мультимедиа
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
 Аватар для Abomination_25
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246

Направьте новичка в нужное русло :)

18.02.2017, 23:42. Показов 3322. Ответов 31

Студворк — интернет-сервис помощи студентам
Собственно сразу к вопросу. Имеется очень большое желание начать писать игры на C++. Вот... Пока что всё.
Проблема в том, что пока что прочитал только 100-150 страниц учебника Р.Лафоре 4-е издание. Дошел примерно до классов.
Знаю, что сначала следует выучить язык, а потом только, спустя много времени практики, пробовать что-то делать. Но есть ли возможно учить С++ и делать одновременно, как позволяют на данный момент мои знания, игру? Может кто посоветовать что в этом русле? В идеале хочется сделать игру жанра RPG. Для игры ведь нужен движок? Хочу взять какой-нибудь за основу, пока приглянулся UE4 - из-за блупринта (blueprint) и возможности писать на языке С++. Но вот проблема - скачал я все: Visual Studio + UE4 - а дальше что делать не знаю, могу копипастить видеуроки - но разве это считается разработкой? Я понимаю, что изначально должен быть, в игре жанра RPG, редактор персонажей допустим - то есть одна из сцен, вторая сцена - сам мир, в котором происходят действия? Ну вот как это с помощью текста вывести на экран? Какие команды использовать? Я только и знаю, что cout или cin
В общем , я понимаю, что до разработки игры мне далеко еще ой как! Но может для начала мне кто-нибудь посоветовать что-нибудь дельное? За 2D не хочу браться. Не знаю почему... Может потому,что много спрайтов нужно будет рисовать - а я этого не умею.
Если я что-то не так написал, то просто не разбираюсь в этом еще - поправьте как надо , если что.
Заранее спасибо, жду вашего мнения и советов.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.02.2017, 23:42
Ответы с готовыми решениями:

направьте в нужное русло
такая ситуация. Есть у меня сайт, интернет магазин. Загремел недавно в фильтр яндекса. Как обьясняет яндекс накручивали посещения...

Направьте меня в нужное русло :)
Здравствуйте! Я студент уже 2-ого курса....по специальности электроника автомобилей...но вот на нашей специальности первый год шло...

Пожалуйста, направьте в нужное русло!
Всем привет. Есть вопросы по поводу реализации проекта (вопросы в конце). Появилась необходимость в разработке собственного ПО....

31
 Аватар для Гром
212 / 131 / 28
Регистрация: 20.03.2009
Сообщений: 1,123
Записей в блоге: 16
19.02.2017, 22:53
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Abomination_25 Посмотреть сообщение
По поводу Б.Страуструпа - показалась тяжеловатой для начала мне - пишет для тех, кто уже знаком видимо с С++ или другими языками. Там сразу же почти появляются структуры, постоянно везде в примерах функции использует,даже есть какие-то функции push() и pop() - просто резко вводятся они и он примеры на них решает - ничего не понятно( Так же уже контейнеры какие-то пошли почти в начале...
Don't panic! (c)
Это только первый раздел такой - краткий обзор того, что и как в языке. Его можно читать до тех пор, пока понятно, а как только становится непонятно - бросать это дело, и переходить ко второму разделу (где описание начинается с типов, которые есть в языке). Первый раздел - чисто ознакомительный, штудировать его до конца сразу вовсе не обязательно. Не забудьте только время от времени к нему возвращаться, по мере продвижения по материалу основной книги.

В общем, просто переходите ко второму разделу, и до поры не беспокойтесь о том, что оставили в первом.
0
 Аватар для Abomination_25
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
19.02.2017, 23:18  [ТС]
Спасибо, буду пробовать еще раз тогда его читать) Пошел разбираться) Спасибо всем, буду по мере продвижения своего писать сюда или так нельзя на форуме?
0
 Аватар для Гром
212 / 131 / 28
Регистрация: 20.03.2009
Сообщений: 1,123
Записей в блоге: 16
19.02.2017, 23:41
Можно в принципе, если будут какие-то общие вопросы в развитие общей темы.
Если будут конкретные вопросы "не понял вот это место, как ни пытался, подскажите", то лучше создавать отдельную тему в соответствующем разделе.
0
 Аватар для Abomination_25
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
20.02.2017, 23:38  [ТС]
Можно вопросы по классам?
Тут придумал такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Player
{
private:
int hp;
public:
int setHP(int damage, int armour)
{
int newHP=-damage+armour*0.01;
hp=newHP;
}
void getHP()
{
cout << "Players HP is << hp << "now" << endl;
}
}
Вопрос:1) Объявление, как я понимаю, переменных класса происходит в private? Можно ли и нужно ли там присваивать значение переменных там? Или же это делается в public с помощью set и get? Так ли сильно нужны эти set и get - смысла их пока не очень понимаю, может какой конкретный пример у кого есть - почему они важны? Я понимаю, что с помощью set мы может менять значение переменной, записанной в private, иначе ведь ее не поменяешь, я прав? А с помощью get мы может в любой момент получить значение этой переменной?
2) private - только инициализация переменных и никакого доступа к ним никто не имеет, кроме разве что все, кто внутри класса? То есть в классе можно менять значения, которые в private? А вне класса работает только set?
3) По поводу конструкторов и деструктуров - какой смысл их работы? Как они записываются ?
Я как вроде его записывать - но для чего он?
Мой же код с конструктором и деструктур., так ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Player
{
private:
int hp;
public:
Player() // Тут конструктор начал
{
int newHP=100;
hp=newHP;
} ~Player() // тут деструктор сработал - зачем он?)
void getHP()
{
cout << "Players HP is << hp << "now" << endl;
}
}
Добавлено через 15 минут
Ошибка в 13 строке: должно быть
C++
1
2
3
cout << "Players HP is"<< hp << "now" << endl;
}
}
Написал новый код:
Добавлено через 1 час 13 минут
Написал новый код:
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
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
 
class Player
{
private:
    int hp;
public:
    Player()
    {
        hp = 50;
        cout << "Player Have " << hp << " HP\n";
    }~Player() {}
    void setHP(int damage, int armor)
    {
        int newHP = -damage + armor;
        hp += newHP;
        if (hp < 0) hp = 0;
    }
    void getHP()
    {
        cout << "Players HP is " << hp << " now :o" << endl;
    }
};
int main()
{
    Player me;
    int ZombieAttack = 10;
    int armor = 5;
    cout << "You have been attacked by Zombie\n";
    cout << "You take " << ZombieAttack << " damage\n";
    me.setHP(ZombieAttack, armor);
    me.getHP();
    system("pause");
    return 0;
}
Чем отличается вот эти два метода объявления?

Assembler
1
2
private:
int hp=50;
от
C++
1
2
3
Player(){
hp=50;
}~Player(){}
Что лучше использовать?
0
 Аватар для Гром
212 / 131 / 28
Регистрация: 20.03.2009
Сообщений: 1,123
Записей в блоге: 16
21.02.2017, 00:05
Лучший ответ Сообщение было отмечено Abomination_25 как решение

Решение

0. Такие довольно конкретные вопросы по языку стоит задавать в разделе C++.

1. Есть такое понятие в ООП, как инвариант. Инвариант - это некоторая "аксиома", которая должна выполняться для объекта класса в любой момент времени (если инвариант не выполняется, то это значит, что в программе произошла ошибка и данные некорректны). Инварианты того или иного класса будут свои для каждой конкретной программы - это вопрос бизнес-логики программы. Примеры инвариантов: "строка имени персоны должна быть непустой", "сумма характеристик сила-ловкость-выносливость персонажа должна быть не меньше 10", "вершины треугольника не должны лежать на одной прямой", "название города может быть одним из вариантов - Нью Москва или Старые Васюки". Существует множество других примеров инвариантов, в т.ч. более сложных и вообще с трудом выражаемых в виде фразы на русском языке.

У некоторых классов в программе есть такие инварианты, у некоторых их нет. Первые - это типичные классы из ООП, которым присуща т.н. инкапсуляция. Вторые - это просто способ сгруппировать данные (например, класс анкеты, содержащей три текстовых поля для ответа на три вопроса в свободной форме; причем можно отвечать как угодно, а можно вообще не отвечать - здесь нет инвариантов).

Так вот, классы без инвариантов могут спокойно предоставить public доступ ко всем своим данным - для них не существует некорректного набора значения полей.

Классы же с инвариантами должны защищать эти самые инварианты - поля, для которых есть эти инварианты заносятся в private секцию. Код, который находится вне класса, либо вовсе не знает о наличии этих переменных (и не может с ними работать), либо ему предоставляются public-функции, которые он может вызывать. И вот уже эти функции работают с приватными переменными таким образом, чтобы инварианты соблюдались.

Например, при создании персонажа вы распределяете характеристики и вызываете функции изменения характеристики:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void Hero::increaseStrength()
{
 if (statSum == MAX_STAT_SUM)
  return;
 if (strenth == MAX_STRENGTH)
  return;
 ++strength;
 ++statSum;
}
 
void Hero::decreaseStrength()
{
 if (strength == 0)
  return;
 --strength;
 --statSum;
}
 
bool Hero::readyToStart() const
{
 return statSum == MAX_STAT_SUM;
}
Нельзя неограниченно менять значения характеристик - таковы наши инварианты. И функции построены таким образом, что при работе через них вы не нарушите инварианты. Обратите также внимание, что сами эти функции полагаются на следующие инварианты: "вначале все характеристики имеют нулевые значения" (это обеспечивается в конструкторе), "значения характеристик не меняются в других функциях" (программист должен написать класс так, чтобы это было верно). Если эти два инварианта не будут работать, то вместо проверок на равенство мы вынуждены были бы писать >= и <=.

Что касается геттеров и сеттеров, не работающих с такими инвариантами, то часто вам нужно дать возможность внешнему коду читать значение переменной класса - для этого вы предоставляете геттер к переменной. При этом возможности устанавливать ее значения снаружи класса может либо не быть вовсе - вы не пишете сеттер; либо они ограничены только использованием функций, обеспечивающих не просто установку значения, но и соблюдение инвариантов.

А вот если у нас есть приватная переменная и тривиальные геттер и сеттер, которые просто задают и возвращают значение переменной без всякой доп. работы, то это значит, что с точки зрения ООП здесь допущена ошибка. Такая пара дает возможность внешнему коду произвольно менять значение переменной, никак не отличающуюся от помещения переменной в public-секцию, зато гордо называет себя "инкапсуляцией" (врет и не краснеет!)
(Нужно, впрочем, отметить, что для создания такой пары тривиальных геттера и сеттера могут быть специальные причины - например для реализации property - но это относится не к ООП, и вам пока не стоит об этом думать)

2. Вроде про это тоже ответил.

3. Конструктор и деструктор - это специальные функции, которые вызываются при создании и уничтожении объектов класса. Создать объект можно двумя способами - на стеке (просто объявив переменную в теле функции) и динамически (с помощью оператора new). Объект, созданный на стеке, уничтожается в тот момент, когда программа вышла из того блока из фигурных скобок, где была объявлена переменная. Объект, созданный с помощью new, уничтожается только когда его удаляют с помощью delete.

В момент создания объекта вызывается его конструктор, который задает все стартовые значения переменных, при необходимости выделяет память, открывает сокеты и производит разную другую инициализацию. В момент уничтожения объекта вызывается деструктор, который должен освободить память и другие ресурсы, которые были захвачены за время жизни объекта (в конструкторе или позже) - иначе программа будет работать неправильно.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void f(bool merlinNeeded)
{
Hero hero{"Arthur"}; // Здесь объект создан статически; вызывается конструктор
if (merlinNeeded)
 {
 Hero anotherHero("Merlin"); // Вновь создан статически
 } // достигли конца блока - Мерлин покидает нас, вызывается деструктор
} // Достигли конца блока - теперь и Артур уходит, вызывается деструктор
 
void g(bool wrongHero)
{
Sword* mySword = new Sword("BUR"); // Создаем объект динамически; вызван конструктор
if (wrongHero)
 delete mySword; // Удаляем через delete - объект уничтожается, вызывается деструктор
else
 {
 mySword -> killEnemy();
 delete mySword; // Вновь удаляем - объект уничтожается, деструктор вызывается уже прямо здесь
 allHailTheKing();
 }
}
Обычно, если в классе у вас нет объектов, владеющих памятью через указатели, или другими системными ресурсами, которые нужно как-то явно освобождать, то деструктор вам не нужен (вы не будете его писать, но неявно будет создан деструктор с пустым телом).
Это, конечно, далеко не все, что можно сказать про конструкторы и деструкторы.

Добавлено через 8 минут
Вот объявление (и одновременно реализация) конструктора:
C++
1
2
3
4
Player()
{
hp = 50;
}
Вот объявление и реализация (пустого) деструктора:
C++
1
2
3
~Player()
{
}
Чем отличается вот эти два метода объявления?
Второй вариант равнозначен следующему (если переменная не должна инициализироваться значением из аргументов конструктора):
C++
1
2
3
Player(): hp(50)
{
}
который является более правильным (прочитайте про списки инициализации).
1
 Аватар для Abomination_25
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
21.02.2017, 00:23  [ТС]
Спасибо за быстрый и полный ответ) Правда еще не совсем разбираюсь в такие моментах как Hero::increaseStrength() - про эти "::" не знаю еще. А еще про статический способ создания объектов почитаю.
И не очень понял код ваш, можете рассказать,что имелось в виду?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void Hero::increaseStrength()
{
 if (statSum == MAX_STAT_SUM) // если переменная statSum равна MAX_STAT_SUM, то выходим из первого if? Не понимаю порядок реализации просто :( И statSum++ Разе не после первого if Должен быть?
  return;
 if (strenth == MAX_STRENGTH)
  return;
 ++strength;
 ++statSum;
}
 
void Hero::decreaseStrength()
{
 if (strength == 0)
  return;
 --strength;
 --statSum;
}
 
bool Hero::readyToStart() const
{
 return statSum == MAX_STAT_SUM;
}
и по поводу public и private - я должен сделать так, чтобы никто не смогу менять private с помощью сеттера? или я не так понял? Я понимаю, что к private не должно быть доступа, даже через сеттер, но для чего тогда нужен сеттер? Я запутался чего-то)
0
 Аватар для Гром
212 / 131 / 28
Регистрация: 20.03.2009
Сообщений: 1,123
Записей в блоге: 16
21.02.2017, 23:08
Hero::increaseStrength() {/* ... */} - это реализация функции-члена класса Hero вне тела этого класса. Объявление класса вместе со всей его начинкой (списком переменных и функций) обычно сидит в заголовочном файле (*.h), а реализация функций-членов - в файле исходного кода (*.cpp). Про работу в нескольких файлах почитаете в соответствующей главе Страуструпа.

Что касается первого if - то если условие выполняется, то выходим из функции. Опять же, прочитаете про это в главе про функции.

Сначала вам нужно более-менее освоиться с базовыми вещами вроде if, циклов, функций и переменных. Слишком сильно в это не стоит погружаться - а то привыкнете писать только в процедурном стиле (как в Си), а потом придется переучиваться на ООП. Но нужно с листа читать чужой код, написанный такими средствами (не слишком замороченный, а обычный). После этого можно изучать классы, ООП и сопутствующие вещи.
0
7 / 7 / 9
Регистрация: 20.11.2016
Сообщений: 120
03.03.2017, 00:33
Даёшь С++ мозговым Штурмом!

Abomination_25, Лафоре - это Отличная книга. В ней много вопросов и упражнений. Автор никогда не забегает вперёд, и не бежит впереди поезда. Все ответы - и решения к упражнениям присутствуют. Двигаться в изучении С++ нужно последовательно. ВЫПОЛНИТЕ ВСЕ УПРАЖНЕНИЯ.

Второй пункт - это Стандартная библиотека С++. С ней нужно знакомиться отдельно, как минимум - прочесть книгу.
Нельзя забывать про QT

В том что касается сферы игр -
Можно начинать программировать на Action Script3, и "переезжать" на более актуальный HTML5/
лучшая книга по теме - это Колин Мук.

Запомните 3 Золотых правила обучения программированию:
"1. Набирать в день не меньше 100 страниц кода"
"2. Лучше набирать 250 страниц"
"3. 1000 страниц в день"
0
 Аватар для Гром
212 / 131 / 28
Регистрация: 20.03.2009
Сообщений: 1,123
Записей в блоге: 16
03.03.2017, 19:17
Цитата Сообщение от art-evgeniy Посмотреть сообщение
Лафоре - это Отличная книга
Возможно (не читал, поэтому не могу сказать), но, судя по двухминутному гуглингу, более нового издания, чем четвертое от 2004 года, у него нет. А если так, то эта книга почти наверняка уже безнадежно устарела. Учить C++ начиная с первого стандарта (98/03) сейчас просто нецелесообразно, т.к. после новых (мажорного 11-го, минорного 14-го и грядущего непонятно какого 17-го) язык очень сильно преобразился. Поэтому последовательность "сначала выучить 98/03, потом - нововведения 11/14" - примерно то же самое, что сначала изучить, как имитировать циклы с помощью goto во всех подробностях, потом открыть для себя классический for, а потом - и range based for. Это займет больше времени, чем понадобится комитету по стандартизации для выпуска C++ 17 и 2a; кроме того, есть реальный шанс привыкнуть, например, лепить указатели, new и delete где только можно, в т.ч. и в тех местах, где можно обойтись ссылками, умными указателями и стандартными контейнерами.

Цитата Сообщение от art-evgeniy Посмотреть сообщение
Второй пункт - это Стандартная библиотека С++.
Я бы не стал выделять стандартную библиотеку в отдельный пункт. Она - часть стандарта (т.е. языка), и ее нужно изучать одновременно с ядром языка.

Цитата Сообщение от art-evgeniy Посмотреть сообщение
Запомните 3 Золотых правила обучения программированию:
Для того, чтобы научиться слепой печати, можно перепечатывать любые тексты на соответствующем языке (лучше художественную литературу). А вот программировать это не поможет вообще никак, только помешает, т.к. не оставит времени для изучения и написания своего кода (а перепечатывать чужой - не поможет вообще никак). Ну да об этом вам в отдельной теме уже сказали.
0
9990 / 2962 / 497
Регистрация: 05.10.2013
Сообщений: 8,132
Записей в блоге: 243
04.03.2017, 07:13
Цитата Сообщение от Гром Посмотреть сообщение
Для того, чтобы научиться слепой печати
По поводу слепой печати десятью пальцами, я научился по курсу: http://ergosolo.ru/
0
7 / 7 / 9
Регистрация: 20.11.2016
Сообщений: 120
04.03.2017, 14:19
Тоже проходил курс эргосоло!
Сколько у вас ушло времени освоения метода слепой печати полностью?

- у меня это заняло три недели. Через три недели - владел методикой на стандартной скорости.

Слепой метод - помогает, например, Изучению Иностранных Языков. Слова и построение предложений - становятся частью механического набора.
Помимо иностранных языков - есть также ТРАНСЛИТ.


Помешает ли слепой метод в освоении программирования? РЕЧЬ ИМЕННО О СВОЁМ КОДЕ.
На сайте спидкодер - можете потренироваться в наборе Кода. http://www.speedcoder.net/

Опеределённо и точно могу сказать ОДНО: Многим это поможет
Разные типы мышления.
Соображать легко и быстро так же важно - как и глубоко и усидчиво размышлять
0
04.03.2017, 18:37

Не по теме:

Цитата Сообщение от art-evgeniy Посмотреть сообщение
Сколько у вас ушло времени освоения метода слепой печати полностью?
Там написано, что можно за неделю, но я занимался урывками, забрасывал и несколько раз начинал с начала. Может месяц, чтобы медленно печатать всеми всеми пальцами. А скорость потом нарабатывается. Но я хочу ещё проходить, чтобы скорость повысить. Сейчас я так себе медленно печатаю. Может 150 знаков в минуту.

Цитата Сообщение от art-evgeniy Посмотреть сообщение
Помешает ли слепой метод в освоении программирования? РЕЧЬ ИМЕННО О СВОЁМ КОДЕ.
Конечно, помогает везде, где нужно набирать текст, в том числе тексты программ.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.03.2017, 18:37

Направьте в русло
Добрый вечер. Упрощу задачу до примитива: 1 сервис, много клиентов. ПО клиентов должно быть мультиплатформенным. Сервис буду...

Направте в нужное русло
Здравствуйте, подскажите в какую сторону двигаться, какие функции мне понадобятся, по какому принципу вообще строить программу Тема...

Направте в нужное русло...
Люди добрые! Прошу Вашего внимания и помощи(подсказки). Имеется сайт, оптимизирован под Google. Хотелось бы услышать Ваше мнение, а...

В нужное русло направить. Двойной интеграл
Здравствуйте. Помогите пожалуйста дорешить двойной интеграл: \int \int y^2cos(\frac{xy}{2})dxdy ограниченный кривыми y=x/2 и...

Перестал работать монитор ноутбука)Направьте новичка)
Взял ноутбук на ремонт модель samsung np-355v5x-901v ru.материнка qmle4 la-8863p.процессор amd a6-4400m series.видео AMD Mobility Radeon...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru