Создаю игру на командной строке
Я решил создать игру. Какой жанр? Может рпг, платформер или симулятор чего-нибудь? Или…может лучше что-нибудь старенькое и простое? Ооо да, это время текстовых игр.
Ещё в 2017, когда я писал курсовую работу, где надо было создать что-то на Java, я понял, что буду создавать текстовую игру. И я создал. Она была размером примерно на 3000 строк кода. Операторов If в коде было дофига. Ну так вот я решил вспомнить былые времена, но написать не на джаве, а на моей любимой командной строке Windows.
Создаём текстовый файл, вводим название игры(игру я назвал Adventure of the past), затем сохраняем его с расширением bat или cmd. Я привык к bat. Затем украшаем наш батник, меняя цвет и название. Также меняем кодировку на 1251.
Я создал ещё один батник. В нём будут хранится статы героя. Всего их 6: уровень, ловкость, удача, красноречие, сила, количество жизней и урон. Изначально они все равны 1(кроме хп и урона), но с увеличением уровня игрок сможет прокачивать характеристики. Для того, чтобы значение характеристик на экране обновлялось, я сделал цикл, печатал характеристики, а потом очищал экран.
Я создал ещё один батник для эффектов. Допустим если главному герою отрезали руку, наложили проклятье или отравили, это будет отображаться в окне с эффектами.
Также я сделал отдельно окно торговли. В статистику я также добавил показатель количества денег. Также я русифицировал все показатели
И последний батник, который я сегодня добавил это инвентарь. Там будут отображаться вещи игрока
Игра на данный момент весит 20 КБ. В каждом следующем посте я буду писать её вес, чтобы наблюдать прогресс так сказать) В этом посте я хотел написать о карте и о том, как будет генерироваться подземелье, однако эта тема оказалась немного посложнее и шире, чем я думал. Поэтому про это я наверное расскажу в отдельном посте. Всем пока, подписывайтесь на блог, здесь прикольно :3
Полноценная игра, сделанная мною в обычной windows консоли
Я вдохновился идеей сделать что-то простое на первый взгляд, но в тоже время интересное в плане разработки. Мне в голову пришла мысль, сделать игру в консоли, это интересно в плане разработки, и посмотреть на это будет интересно даже просто со стороны, как например на эту игру.
Игровой движок
Итак, начнем с того как игра устроена в корне, и какова ее идея работы.
Сначала я определился с тем, как будет выводится игровой мир в консоль. Понял, что для вывода игровых объектов, нам нужен список, который хранит в себе другие списки, которые хранят в себе символы, которые в последующем выводятся на игровое поле циклом for .
Вот таким кодом:
Здесь мы рисуем все символы из списка, и переходим на новую строку, чтоб нарисовать следующий список символов.
Вот так выглядит переменная, которая хранит списки символов:
Тут cразу мы получаем решение как нам выводить по X и Y объекты, мы теперь можем указывать:
X — символ в списке
Y — список в котором содержится X
Тем самым нарисовать на поле какой-нибудь символ. Это мы будем использовать при рисовании игровых объектов.
Можем попробовать нарисовать на поле «мяч», подставив на место X и Y букву «O».
Для этого напишем такой код:

И вот, мы нарисовали объект на нашем игровом поле. Правда координаты X и Y получились не классическими. Во первых, мы указываем сначала Y, потом X, что не совсем по классике, во вторых, координата Y должна увеличиваться чтоб поднять объект, у нас же наоборот, она должна уменьшатся.
График X и Y в игре:
Эту особенность тоже придется учитывать в дальнейшем, когда мы будем делать столкновение объектов в консоли.
Теперь мы можем попробовать перемещать наш объект по игровому полю, т.е. создавать движение.
Нам понадобится очищать консоль, для того чтобы стирать старую картинку игрового поля.
Это мы сделаем командой:
Также, нам понадобится переопределять переменную OUTPUT_IMAGE , для того чтобы очищать все ранее нарисованные в игровом поле объекты.
Также нам все это нужно будет поместить в while True .
Добавим в while True функцию time.sleep(1) , для того чтобы ограничить FPS.
И вот, код нарисовался на глазах:
Теперь у нас есть возможность распределять объекты по полю.
Правда эти объекты слишком примитивы, и надо бы научится рисовать сложные объекты по типу игроков, домов, еды…
Для того чтобы нарисовать сложный объект, нам нужно понять и придумать, как нарисовать объект указав лишь один раз его X и Y.
Для этого нам понадобится функция, которая принимает картинку (символы), X, Y;
Теперь нам нужно ее реализовать. Для этого нужно решить, как нарисовать изображение, которое растягивается по оси X и Y, я придумал так:
рисовать объект разделяя его на символы, и как только встретится символ «\n», прибавить ось Y.
Ось Y как мы уже говорили неправильная, перевернутая наоборот, поэтому к ней мы прибавляем чтобы опустить объект.
Пример изображения который рисуется по моему принципу:
Теперь давайте это опишем в нашей функции:
Добавим try: except() для того чтобы небыло ошибок если объект имеет X и Y слишком мальенькие или слишком большие.
x_start Это X, с которого нужно начинать рисовать при увеличении Y (при символе «\n»)
Теперь мы можем использовать нашу функцию, падать в нее X и Y, и картинку которую нужно рисовать:
И вот что у нас получилось:
абсолютно также как и шарик который мы рисовали, его можно двигать по оси X и Y.
И вот, у нас уже двигает игрок по карте.
Тут мы сделали уже многое, уже есть игрок, уже есть карта, и казалось бы, уже можно сделать игру, но нет. Нам нужна функция высчета столкновений объектов, ведь какая это игра без взаимодействий объектов. Поэтому приступим.
Для начала нам нужно сделать функцию получение широты и высоты объекта, для того чтобы расчитать его хитбокс.
Итак, функцию я решил сделать по такой логике:
X — хитбокс объекта по X ширине, это самое больше количество символов между знаками «\n» в картинке
Y — хитбокс по Y это число символов «\n» в картинке
По этой логике не сложно сделать функцию, которая принимает картинку, считает у нее все символы между «\n», и выбирает из этого самое больше число символов — получилась широта.
И если посчитать символы «\n», как я уже написал — получится высота.
Функция получилась такой:
Итак, давайте нарисуем нашего игрока, и вычислил его ширину и длину.
Ура! у нас есть функция вычисления широты и высоты, теперь нам предстоит сделать функцию вычисления хитбокса и столкновений объектов.
Вспомним что у нас система координат не классическая, поэтому классическую функцию увы использовать не сможем, придется делать свою. Я для этого я нарисовал на графике 2 квадрата, которые сталкиваются, и по этой картинке можно придумать условие по которому будет высчитано столкновение
Для простоты понимания я нарисовал хитбоксы, Т.Е. квадраты:
Для вычисления мы подаем
x — X первого объекта
y — Y первого объекта
h — Высота первого объекта
w — Широта первого объекта
x2 — X второго объекта
y2 — Y второго объекта
h2 — Высота второго объекта
w2 — Широта второго объекта
если
y больше y2 — h2 + h и y — h меньше чем y2 + h2 — h
или же
y2 больше y — h + h2 и y2 — h2 меньше чем y + h — h2
Мы сделали проверку 2 раза, просто из-за того чтобы посмотреть на столкновение/не столкновение с разных объектов.
Объекты соприкасаются по оси Y
Дальше смотри соприкосновение по оси X, она такое же что и по оси Y, но вместо y — x , а вместо h — w .
x больше x2 — w2 + w и x — w меньше чем x2 + w2 — w
x2 больше x — w + w2 и x2 — w2 меньше чем x + w — w2
объекты соприкасаются по оси X
Логика такая же как и на словах, только в функции:
Функция возвращает True если объекты соприкасаются, и False если нет.
Я нарисовал дополнительно куб на нашем игровом поле, для того чтобы игроку было с кем сталкиваться.
И попробовал как работает функция высчета столкновения.
Вот игрок соприкасается и кубом:
А вот нет соприкасаются:
Это полный код соприкосновения/не соприкосновения:
Теперь у нас все стартовые функции для игры, собственно их основе я писал свою игру.
Идея игры в такая:
Есть игрок, вокруг появляется еда, которую он вынужден собрать чтоб не умереть. В игре также присутствуют функции: поднять еду, положить в инвентарь, съесть ее из инвентаря, положить на пол предмет из инвентаря
Я начал с того что сделал игровой цикл в 3 строчки, это просто While True :
Дальше я посчитал нужным, создать класс, в котором будут хранится все функции будующий объектов. Поэтому создал файл main.py и папку lib, в которую поместил файл lib.py в котором был класс игры. Т.Е. файлы игры выглядели так:
В дальнейшем я работал в основном с классом Game(), в main.py просто вызывал его, создавал стартовые объекты, запускал игру.
В классе game сделал функцию run(), которая заупускает игровой цикл. Также сделал функцию draw_all(), она стирает все прошлые объекты, рисует новые, и печатает на игровое поле.
И так выглядел класс:
Добавил все основные функции, по типу set_image() , size_object() , is_clash() , и все те которые являются игровым движком, и которые я описал выше.
Сделал новую функцию create_object() и переменную self.OBJECTS , функцию create_object() я использую для создания объектов, она принимает параметры img , name , x , y , up , rigid , data .
img — картинка объекта
name — имя объекта (дом, трава, житель, еда и.т.п.)
x — X объекта
y — Y объекта
up — если этот параметр True, то объект рисуется над игроком, иначе игрок его перекрывает собой
rigid — твердость, игрок не может пройти через этот объект (еще не реализовано)
data — личные данные объекта, его личные характеристики
Эта функцию которая сейчас у меня в игре:
На тот момент я уже добавил игрока, дом, траву, и жителя.
И решил использовать тот самый параметр в объекте up , использовать его в объекте Home , Т.Е. чтоб дом закрывал собой игрока. Для этого я сделал функцию CheckAll(), циклом for проходился по всем объектам, и рисовал их на исходящей картинке, Т.Е. использовать функцию SetImage(x: int, y: int, img:str), подавая в нее X и Y объекта, и картинку.
Тем самым рисовал объекты которые мог закрыть собой игрок. В этом же цикле я объявил список up_of_payer_objects , и если у объекта стоял up=True, то я добавлял его в список, не рисуя его на поле. После рисовал самого игрока, и только этого я проходил циклом for по объектам в up_of_payer_objects, рисуя их, тем самым они были над игроком.
Дальше я занялся движением игрока. Для этого я создал его как отдельный объект, который не находится в списке self.OBJECTS , но который хранится в переменной self.PLAYER .
Все его параметры, по типу X , Y , img , и.т.п. получить можно с помощью ключей, проще говоря это словарь (dict). С таким игроком и объектами уже можно было работать, двигать, вычислить столкновения. Я начал с движения.
Начал создавать движение с того что сделал функцию CheckKeysObjects(), которая отвечает за отслеживание нажатия клавиш, и которую я вызываю в функции CheckAll() в самом начале
Для отслеживания нажатий на клавиши я использовал библиотеку keyboard, и 4 переменные:
self.WALK_LEFT_PLAYER
self.WALK_RIGHT_PLAYER
self.WALK_UP_PLAYER
self.WALK_DOWN_PLAYER
И все оказалось просто, отслеживаем клавиши, и если нажата допустим d , то мы переменную self.WALK_RIGHT_PLAYER делаем True .
В самом начале функции объявляем все переменные в False , для того чтобы сбросить все прошлые результаты, а-то игрок не остановится.
После этого я в функции CheckAll() проверяю все перменные отвечающие за движение, узнаю, куда двигается игрок.
Если какая-то в True , узнаем какая, и двигаем предмет в противоположную сторону.
Да, мы двигаем предметы в противоположную сторону, для того чтобы создать иллюзию движения. Если игрок идет на право, то все предметы окружения смещаются налево.
Дальше я добавил еще предметов окружения, и занялся спавном еды, у игрока цель собирать еду, чтобы не умереть.
Для отсчета времени спавна еды, я использовал простой time.sleep() , и библиотеку threading — для того чтобы запустить 2 функции одновременно, спавн еды и основной игровой цикл. Функция спавна еды SpawnEat() — это просто функция которая при запуске генерирует на случайных местах еду, вызывая для каждой единицы еды функцию CreateObject() .
Также, как только я сделал функцию спавна еды, я сделал переменную у игрока self.PLAYER[«hungry»] , это его голод, в самом начале он равен — 100 ед., его я буду уменьшать если игрок ходит и тратит энегрию (типа энергию, ее в игре нет) или увеличивать если игрок что-то съел.
Также я сделал функцию MinimizeHungry() , она вызывается каждые 5 секунд, и просто отнимает у игрока 2 единицы голода. Это я сделал для того чтобы игроку пришлось двигаться, а не стоять на месте.
И наконец в функции Eat() , эта функция которая вызывается в отдельном потоке от игрового цикла. Она проверяет не слишком ли много еды на карте, если еды больше 10 ед. то НЕ вызывает функцию SpawnEat() , если меньше 10 ед. то вызывает SpawnEat() .
Вот какой она получилась:
Функция Start() , для запуска основного цикла:
И функция run() , которая запускает всю игру.
Сам процесс поедания, я реализовал просто в функции CheckAll() и CheckKeysObjects() . В CheckKeysObjects() я проверял не нажал ли игрок на кнопку E . Если нажал, то ставил переменную self.PRESS_E в True .
В цикле CheckAll() , проверял, не еда ли нынешний объект в цикле for , если еда то проверял не сталкивается ли с ним игрок, если сталкивается то проверял переменную self.PRESS_E , и если она в True то тогда просто удалял объект, и увеличивал голод, Т.Е. переменную self.PLAYER[«hungry»] .
Делаю инвентарь
Итак, настало сложное, нам нужно сделать инвентарь.
Сложность в том что все предметы нужно будет отображать, хранить историю, удалять, ставить на пол объекты.
Я начал с того что добавил игроку новый ключ, это был self.PLAYER[«inventory»] , там хранятся 4 яцчейки, вот в таком виде:
цифры — просто номера ячеек.
status — этот ключ хранит в себе значение, пуста яйчейка или нет. Если пуста то «space», если же там есть предмет, то там хранится имя предмета.
name — хранит в себе имя предмета, оно будет использовано когда игрок будет класть предмет.
minimize_image — эта уменьшенная картинка предмета которая изображается в инвентаре игрока.
После, сделал новые проверки в нашем CheckKeysObjects() , при нажатии на X предмет будет бросаться на землю, и также при нажатии на кнопку E будет вызываться функция self.UseEat() , которую мы сейчас будем разбирать.
Итак, функция self.UseEat() представляет из себя проход по всем ячейкам инвентаря, в поисках еды, и если еда найдена, то она удаляется из инвентаря, и к голоду добавляется 10 единиц. Для удаление предмета из инвентаря я сделал функцию self.DestroyItem() , в которую подается индекс ячейки, и вся ячейкой просто становится по «дефолту» пустой и без ничего.
Дальше функция бросания предмета на землю.
Там впрочем ничего сложного, при нажатии на X вызывается функция self.QuitItem() , в ней проходит цикл for по всем ячейкам инвентаря, и если ключ [«status»] не ровняется «space» , то эту ячейку удаляем с помощью ранее рассмотренной функции self.DestroyItem() , и создаем объект на основе того что был в ячейке, X и Y ставит игрока, как бы он бросил его возле себя.
И впрочем все, многие вещи я не говорил как сделал, Т.К. они являлись не основной частью игры, хоть и интересной. Например сообщения о возможности поднятие предмета или нет (когда инвентарь полон), о том что я добавил анимацию ходьбы, о том что сделал отдельную библиотеку картинок, и тому прочих вещах.
На этом все?
Нет, я собираюсь в игру добавить нейросеть, используя библиотеку который я писал на Python,
Собираюсь сделать взаимодействие игрока с NPC оснащенными нейросетью,
небольшой, но какой-нибудь сюжет, и также какие-то припасы для игрока типа брони, еды. предметов, возможность строить блоками.
Вопрос: Как создать видеоигру с помощью Cmd?
КАК ИГРАТЬ В SNAKE В КОМАНДНОЙ СТРОКЕ?HOW PLAY SNAKE IN CMD
ВСЕМ ПРИВЕТ, В ЭТОМ ВИДЕО Я ПОКАЖУ КАК ЗАПУСТИТЬ ИГРУ SNAKE (ЗМЕЙКА) В CMD/BAT КОТОРАЯ ВЕСИТ 334KB. ИЗВИНИТЕ ЧТО ДАВНО НЕБЫЛО ВИДЕО, ОПЯТЬ СЛОМАЛСЯ КОМП, СЛЕТЕЛ WINDOWS.
_сам кодhttps://www.dostips.com/forum/viewtopic.php?t=4741
Видео взято с канала: dcp ninja
Как сделать свою ИГРУ в.BAT | 2019 Своя игра в.bat
редактор:https://yadi.sk/d/9yU_OIja6Nk87Q.
бат тут:https://yadi.sk/d/jiibSXKyq6HjWw.
видео:https://www.youtube.com/watch?v=yu5iF7ExQNo&t=144s.
ещё одно видео:https://www.youtube.com/watch?v=yu5iF7ExQNo&t=144s
Видео взято с канала: KGY
Пишем Простую 3D Игру за 10 Минут ( @javidx9 )
2 часть: https://youtu.be/i0IvgmBMFMw.
Patreon: https://www.patreon.com/vectozavr.
telegram: @vectozavr.
Instagram: https://www.instagram.com/i.e.ilin/.
VK: https://vk.com/public179407034.
Статья: http://ilinblog.ru/article.php?id_article=49.
В данном видео я расскажу, как устроены старые игры с псевдо-3d графикой, вроде Wolfenstein 3D или Doom!
Все мы помним старые добрые игры, вроде Doom или Wolfenstein 3D, которые в своём жанре были первооткрывателями трёхмерных игр. Сейчас такая графика, кажется, уже совсем устаревшей, ведь в современных играх она настолько реалистичная, что иногда сложно отличить компьютерную игрушку от фильма. Для создания фотореалистичной графики используется очень много крутых и сложных приёмов, позволяющих сделать красивое освещение, реалистичные тени, отражения и много других деталей. Все эти вычисления позволяют сделать мощные современные видеокарты..
Но раньше компьютеры не имели возможности даже близко подобраться к таким показателям. Поэтому приходилось придумывать методы создания 3D изображения, не требующие больших вычислительных затрат. Привет, ребят, с вами канал ilinblog и сегодня я расскажу вам о том, как были устроены старые игрушки с псевдотрёхмерной графикой..
Приятного просмотра!
Видео взято с канала: Vectozavr
Как сделать игру змейку (snake) в простом блокноте
Ссылка на сайт: https://www.knowurcodes.com/blog/create-working-snake-game-command-prompt-code-2017/
Видео взято с канала: Info Faq
Нет похожих статей
Вам также может понравиться
Вопрос: Как уменьшить размер файла Powerpoint?
Вопрос: Как подключить компьютер с ОС Windows 7 к телевизору?
Вопрос: Как сделать презентацию?
8 комментариев
Отменить ответ
не хочу показаться критиком но в программировании много ошибок
1не надо ставить «echo.» после каждого «echo варианта»
2обычно пишут «:main menu»
3″set /p var=Set Command:» а не » set /p r=: «
если ты писал не на html то нужно говорить
(есть ещё много ошибок) а так молодец, старался
Чел, я хочу с тобой кое-чем поделиться. Ты вполне можешь
создать 2D игру, в которой можно ходить или что-то делать)
Это просто, сначала создай поле. Я не знал, как делать 2D игры, не мог понять, как создать само пространство, где что-то может находиться.
Давай, для простоты создадим поле 2 на 2.
Для начала нужно понять, что у него должны быть стены и сами клетки, по которым мы должны перемещаться.
Со стенами всё понятно, а вот клетки сложнее.
Задаём переменные, мир должен состоять из строк и точек.
Точки:
Первая линия.
set A1
set A2
Вторая линия.
set B1
set B2
:display
cls (нужно после каждого хода обновлять экран, иначе будет плохо)
echo =(это стена)
echo = %A1% %A2% =
echo = %B1% %B2% =
echo =
На экране будет:
=
=.. = Маленькая комната,
=.. = Я с 4 на 4 начинал.
=
Далее добавь выбор, в какую сторону пойти, думаю справишься.
Перед меткой «:display»
я ставлю пару переменных, обозначающих текущее положение, а так же положение по оси x и по оси y
set Xposition=1
set Yposition=1
Переменная PositionXY=1 вскоре меняется на на
set PositionXY=%Xposition%%Yposition% (слитно)
Это изменение должно быть в цикле display. А изменение Xposition и Yposition меняются выбором направления, о котором я говорил выше.
Например, если идёшь вниз, то
set /a Yposition=%Yposition%+1
В итоге будет 2 на игрике, поскольку он был единицей, если идёшь вверх, то из текущего Yposition вычитается единица.
В итоге переменная PositionXY
будет равна числу 1 по x и 2 по y. (12)
Далее просто делаем устовие,
if %PositionXY%=11 set A1=#
If %PositionXY%=12 set B1=#
IF и т.д, зависит от размера карты.
(вместо # может быть любой символ)
Мы просто ещё раз устанавливаем, что точки пространства это символ точки, (set A1)
а затем устанавливаем положение игрока при помощи сказанного выше, и пишем goto display.
На экране:
=
=#.=
.=
=
Спокойно превращается в
=
.=
=#.=
=
Через телефон сложно объяснить, это далеко не всё, например нужны определённые условия, чтобы не выпасть за карту, да и путаница с движением бывает, можно пойти вниз вместо вверха, но это легко исправить.
Ладно, удачи, главное понять что такое пространство, а дальше ты допрешь, раз знаешь как производить сложение или вычитание.
Я в детстве, в 95-м году ковырялся в Бейсике на папкином 486-м) В основном интересна была «графика», ну какая уж была. Делал простые 2д игры про газонокосилку на участке, и подобные «лабиринты». Поиграв на маминой работе в Wolfenstein, загорелся, естественно, и начал копать в сторону 3д. Дооолго корпел, но в силу возраста, видимо, так и не осилил. Линии стен вечно убегали и перекрещивались, я пытался методом тыка найти закономерность их отображения при приближении и отдалении от объекта, но ничего не вышло. Кроме псевдо-псевдо-3д пролета по «коридору» Звезды смерти на звездолете ничего толкового так и не родилось. Сейчас посмотрел видео, и просто сделал рукалицо как можно быть таким тупым в 10 лет, и не допереть, как построить элементарную пропорцию.. Но увлечение 3д-графикой всё же пригодилось, и спустя 23 года, включая 15 лет учебы и работы по совершенно другой специальности, я уже как 3 года зарабатываю этим на хлеб, масло, машину, ипотеку и туфли жене:) Не хвастаюсь, но приятно, что детское увлечение и стечение обстоятельств в итоге дали мне любимую работу и стабильный доход. В программирование я так и не смог, но геймдев как отрасль очень уважаю. Слежу за твоей игрой, ты крутой чел, успехов тебе и новых достижений! Подписка)
Тут выход сознания из сказки!
https://www.facebook.com/groups/328246815159748/
Если вы не знаете этой информации, то на вас распространяется поговорка✓Век живи, век учись и дураком помрёшь✓Внутренний голос (Подставные чувства, подставные мысли). Оказывается это не естественно для человека..Внутренний голос это радио импланты в теле! Работают спецслужбы! Привет из роддома!
Я рождён ещё при союзе в 87-м году и как я понимаю радио имплантанты ставились в роддоме всем и об этом родителей в известность не ставили + прививки (прививание в тело человека, посторонних одноклеточных организмов, а потом начинаются желтухи, краснухи, пяточные шпоры, киста, ветрянки, раки, бородавки и прочий геморой!))) Нет ни кокого бога! Раздуплитесь, Дурачки!))Если вы видите сновидения, это значит, в теле есть радио-устройства! Человек без имплантантов сновидения не видет, сон является просто спокойным ночным отдыхом! И утром проснувшись нету заморочек, что за сновидение и что бы это могло значить! Программка всячески отвлекает и от медитаций (на уроках в школе меня тоже отвлекала и при домашних заданиях, когда надо было думать) и морочит голову! Массоны это спецслужбы! Они по одному работают в роддомах и воинских частях, они на отдельных правах, почему-то, сидят в отдельных кабинетах и контролируют через програмку, по месту, тех кого нужно, пользуются тем, что общество не знает про эти технологии! А ещё в помощь вам металло искатель, желательно мощный, так как детальки маленькие. Garrett 400 на личном опыте срабатывает на эти импланты! Населению частных секторов вообще нет ни минуты покоя. Есть ещё в интернете такая тема как, Менталитет Краба Crab Bucket Theory, и тема эта работает через эти же имплантанты и подставные мысли, если вы ведётесь на эти мысли и необдуманно сразу действуете, вы сбиваете или отвлекаете человека, который не сидит в этом ведре. Вот вам и жизнь с богом в душе!)А на деле занозы в теле! Поэтому в жизни всё как то не так как хотелось бы! И многие не понимают почему! Всё же вроде делаю нормально и стараюсь.)Не было на этой планете эволюции! Прилетели сюда! Но почему-то, не всё сразу дано знать потомству! Рассказ про Адама и Еву, на самом деле, это интересная Загадка! Змей искуситель это внутренний голос (радиоимплантанты) в теле! О том, что имплантанты в теле (кстати и у Адама тоже) они не знали. Повелась Ева на якобы запретный плод, потому, что в википедии написано Слушай подсказки внутреннего голоса! Изгнана за это из рая (лишена прав хранительницы домашнего очага, спокойной личной и стабильной семейной жизни, саморазвития) загнана на работы, на церковные сказочные богослужения, неестественная самооценка! Спецслужбам, что бы управлять кем-то, нужно сначала сделать его,её виноватым (грешником). Программа эта работает по всем одинаково, по сей день…
Если тебе изначально назвать биологические часы, по другому, постепенное окисление! Что ты будешь делать? И еще, любая кислотность, витамины в том числе, повышают давление!
На этой планете нет ни одного святого человека, как бы вы не молились на картинки!
Пред’ставьте ^себе` ^муравейник✓ или ^улей✓… Созданные и настроенные создателем организмы успешно функционируют на благо семьи! Семья растёт и остаётся на месте! И представьте улей или муравейник в котором все организмы с радиоимплантами возле мозга и по ним работает программа! При этом им дали сигареты, алкоголь, наркотики, телевизоры, навязали праздники, ввели понятие, что нужно уходить из дома и заводить отдельную семью, территория близимеющаяся попшикана концентратами! В этом случае получается итог сказки о рыбаке и рыбке.)) Созвездия это искусственные источники света, это как разоблачить в детском садике в Деде Морозе переодетого воспитателя
Общество догадывается что дед мороз не настоящий и т.д., но по накатаной наше время личной жизни настолько занято замороченым бытом, так как нет обеспечения государственного, что у всего общества не хватает свободного времени, что бы разобраться в этом всём, и роздуплиться в этой сказке! Мы стали сильней, живём дальше, думаем…√
В 10м классе сделал программу для отображения 3d объекта из полигонов, в векторной графике без текстур.
На тот момент не было никакой литературы про 3d графику, а потом появилась, 2-3 книги обозревающие в т.ч. движки игр.
Каково же было мое удивление, когда я прочел их и увидел, что формулы, заложенные в них, подразумевают вращение МИРА ВОКРУГ КАМЕРЫ, а я-то свои писал их расчета перемещения КАМЕРЫ В МИРЕ. )
Оказалось, что так никто не делает, видимо из-за производительности или еще чего.
А еще там была глава про raytracing, который предполагался мега-задачей для супер-компьютеров или кластера silicon graphics за сотни тыщ баксов.
И вот теперь это делает в реальном времени голимая карточка RTX за три копейки. )
Название ролика должно быть «Создаём простой движок для псевдо 3д графики в консоли за 10 минут», но и так нормально. Рейкаст это довольно жрущая операция, при увеличении размера изображения производительность будет падать. Есть способы рендерить и более оптимизированно. Например находить область видимости и производить коллизию с объектами попавшими туда. Конечно, нужно использовать оптимизацию наподобие дерево квадратов. Затем выбираем более близкие объекты(снова используя дерево квадратов) и обсчитываем, что они перекрываеют(тут будет использовать что-то вроде рейкаст, но совершенно в других объёмах и нужно аккуратно прописать алгоритм, можно налажать с оптимизацией). Получаем набор объектов, которые нужно отрисовать и уже потом их рисуем, к примеру на видюхе.
Всего один ролик, а на территории бывшесо СССР стало на 1000 создателей игр больше. И пускай только 1% из них выпустит свой коммерческий продукт, остальные будут использовать это для визуализации своих других проектов, кто-то на базе этого проведёт курсы и научит других людей, кто-то покажет это своим детям, и для них это станет понятным и естественным с рождения… Как по мне, так этот ролик должен быть внесён в школьную программу (хотя бы в раздел «посмотреть летом», ведь врят ли сейчас всё ещё существует «прочитать на лето»).
Ну да. Что можно ожидать от видеоролика «»Как сделать змейку, в блокноте»? Естественно! Давайте скопируем прошлогодний код змеи! Зачем нам трудиться, мы же скопировать все. А нормально, ну серьезно, она даже в блокноте не делалась. По моим подозрениям они использовали либо какой то IDE неизвестный мне, либо известный, notepad++.
Да, забыл сказать! Если ты будешь так продолжать, хорошо тебе не будет и да, раз я решил прокомментировать видео, которое мне не понравилось, и там был обман я тебе скажу:
Существует ли язык программирования «Блокнот»? Слышал? Я тоже нет. Я знаю языки:
С#, C++, C+, C, Assembler, Basic, Pascal и Batch (я их естественно, не выучил).
Последнее ничего не напоминает? А мне да, напоминает, обычно в bat никах используется именно тот язык, про ассемблер и паскаль не знаю, но BATch там точно есть.
Как создать видео игру с помощью Cmd
К вашему вниманию простой, бесплатный способ создания видео игры без надобности в ее скачивании. В процессе вы узнаете немного о пакетном программировании. Вы должны будете предоставить свой собственный сюжет для этой игры.
1 Вся информация, включенная в апострофы, может быть изменена, она не повлияет на игру — случайно не введите ее в фактический код.
2 Откройте Notepad или любую другую программу для кодировки — Geany, Notepad ++, и так далее. Сохраните файл под именем ‘My Game’.bat
3 Начинайте писать код. Начните с ввода:
- @echo off
- title ‘My Game’
- color zz
- if "%1" neq "" ( goto %1)
- pause
4 Добавьте цвета — Colours. Теперь сохраните код и запустите, он придет с ошибкой и всеми различными цветовыми комбинациями. Найдите тот цвет, который вам нравится, и введите его после “color” вместо “zz”. Хорошее сочетание — это цвет 0A: текст будет зеленого цвета на черном фоне.
5 Создайте меню — Menu. Для создания меню избавьтесь от pause и наберите:
- :Menu
- cls
- echo ‘1. Start’
- echo ‘2. Instructions’
- echo ‘3. Exit’
- set /p answer=‘Type the number of your option and press enter.’
- if %answer%==1 goto ‘Start_1’
- if %answer%==2 goto ‘Instructions’
- if %answer%==3 goto ‘Exit’
6 Создание окон ‘Exit’ и ‘Instructions’. Чтобы создать окно выхода, введите следующее:
- :‘Exit’
- echo Thanks for playing !
- exit /b
- Теперь для окна Instructions введите:
- :‘Instructions’
- cls
- echo ‘Instructions’
- echo.
- Затем запишите:
- echo ‘Your instructions here’
- 7 Столько раз, сколько вам нравится, затем введите:
- pause
- goto Menu
8 Начинайте писать саму игру. Введите сценарий:
- :Start_1
- cls
- echo ‘You have run into bad guys. Their forces are:’
- echo ‘3 farmers’
- echo ‘You have a high chance of winning.’
- set /p answer=‘Would you like to fight or run?’
- if %answer%==‘Fight’ goto ‘Fight_1’
- if %answer%==‘Run’ goto ‘Run_1’
9 Окна (процессы): Fighting и Running.Теперь, чтобы создать fighting и running:
- :Run_1
- cls
- echo You ran away safely !
- pause
- goto ‘Start_1’
- :Fight_1
- echo You have chosen to fight.
- echo The battle is waging.
- set /p answer= Type number 1 and press enter to continue:
- if %answer%==1 goto Fight_1_Loop
- :‘Fight_1_Loop’
- set /a num=%random%
- if %num% gtr 4 goto ‘Fight_1_Loop’
- if %num% lss 1 goto ‘Fight_1_Loop’
- if %num%==1 goto ‘Lose_Fight_1’
- if %num%==2 goto ‘Win_Fight_1’
- if %num%==3 goto ‘Win_Fight_1’
- if %num%==4 goto ‘Win_Fight_1’
- :‘Lose_Fight_1’
- cls
- echo Sorry, you lost the battle 🙁
- pause
- goto Menu
- :‘Win_Fight_1’
- cls
- echo Congrats, you won the fight!
- set /p answer=‘Would you like to save?’
- if %answer%==‘Yes’ goto ‘Save’
- if %answer%==‘No’ goto ‘Start_2’
- :‘Save’
- goto ‘Start_2’
- Теперь вы можете повторить код, используемый в ‘Start_1’, чтобы создать второй бой, третий, четвертый и так далее.
- Также при вводе, например: Fight_1, вы должны убедиться, что части с текстом goto Fight_1 остаются такими же, так что если вы сменили одну часть, вы должны будете изменить обе.
10 Просто закройте Notepad, затем нажмите Yes, сохраните файл, измените формат для всего файла, добавьте .bat после ввода имени.