Форум программистов, компьютерный форум, киберфорум
Программирование игр
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
 Аватар для zorxor
569 / 114 / 0
Регистрация: 09.02.2020
Сообщений: 2,787
Записей в блоге: 3

Игра "SUPER MARIO" или "SOLDIR OF MARIO"

28.01.2025, 13:58. Показов 22190. Ответов 247
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, дорогие мои братья и сёстры!

Игра "SUPER MARIO" или "SOLDIR OF MARIO"

Да да!

Добавлено через 19 минут
Господь сподобил меня Своей милостью, я, когда-то, писал вот эту игру - она была написана, когда я окончил школу и поступил в ВУЗ, летом.

Видео процесс игры и работа в редакторах кирпичиков, ролик сети 'You Tube', длительность ролика около 9 минут.
Кликните здесь для просмотра всего текста


И, что хочу вот сказать: перед тем, как Господь поднял меня, это было рано, в пятницу 13 февраля 1998 года, я являлся в то время лаборантом на кафедре вычислительных машин. К.г.(*), я написал игру под названием "SOLDIR OF MARIO" - "Солдат Марио", как смесь игры Super Mario (c TV приставки "Dendy") и игры Soldier of Fortune ("Солдат Фортуны") с небольшого ZX-Spectrum компьютера (памяти у него было всего 64 килобайт) в 96-97 годах, летом, почти в то время не спал и не ел, потому что меня накрыла настолько сильная волна поддержки, у меня было постоянно состояние эйфории, пока я, практически не отрываясь от экрана монитора занимался программированием "Soldir of Mario"

И, вот, разработка этой игры очень здорово помогает понять и как устроен и задуман наш мир.

https://github.com/wiz3267/mario

Добавлено через 4 часа 52 минуты
Программистам, которые занимались разработкой игр, лучше, как мне кажется, легче понять, что мир, в котором мы живём, очень интересно устроен. Никаких случайностей, тут, конечно нет. Прежде, чем реализовать проект, Господь размышлял - а какой это будет мир, ад или рай. Если рай, тут одна цветовая гамма, все цветы радуги, небо было необходимо создать голубоватого цвета, траву - зеленого, облака - белыми, хлеб - белый. Но этого мало. Нужно ещё разработать все живые организмы - какова будет взаимосвязь всех животных и существ экосистемы. Нужно создать некоторые вещества, без которых невозможна жизнь любого организма - вода H2O и кислород - просто О2. Также, кроме всего прочего, это вещество должно будет обладать рядом важных для жизни свойств - при 0 градусов оно должно начинать закристаллизироваться и становится жестким, твёрдым веществом, однако свойства у него будут таковы, что оно не будет тонуть в воде. Почему так - в таком случае зимой водоёмы с водой будут покрываться корочкой льда, и можно в таком случае ходить по воде (всем людям). Ну и так далее. Один организм должен будет питаться другим. Главный герой или персонаж этого мира - человек. Человек должен состоять не только из костей и мяса, но как венцу творения у Человека будет бессмертная душа, "Я", сознание и память. Человек будет способен своим сознанием быть в высших сферах подсознания и общаться с Бесконечным Богом.

Каковы должны быть размеры этого мира, продолжительность дня и ночи, продолжительность года, как и вокруг какой оси должен вращаться этот мир, скорость движения вокруг Солнца (основной светильник), какое должно быть расстояние от Солнца до Земли, мощность Солнца, чтобы была возможность жить на планете людям и другим живым существам - короче говоря, чтобы мы, жители планеты Земля, не поджарились летом на Солнце и не замерзли зимой.....и т.д. и пр. и пр., будет ли вокруг этого земного мира вращаться ещё один - планета Луна - если да, то какова должна она быть, радиус планеты Луна, скорость вращения вокруг Земли, скорость вращения вокруг оси и наклон оси, рельеф местности.

Ну и, самое главное, а каков будет сам-то Человек, Венец Творения? Как он должен выглядеть? Потом, по истории строительства нами Вавилонской башни, когда древние люди решили построить башню до неба - Господь расстроил их планы, произвёл разделение языков у строителей Вавилонской башни. До селе, они говорили на одном самом первом древнем первоязыке, а тут они заговорили, вдруг, внезапно, на самых разных языках и наречиях, они перестали понимать друг друга, остановили на время строить башню, заморозили строительство, как бы сказали сейчас, спустились с неё и разбрелись по лицу всей Земли. Всё это написано в книге "История нашей Вселенной - от создания до падения", где самым подробным образом описана история Землян, что случилось с Землянами: почему они, начав за "здравие", окончили уже за "упокой", переубивали друг друга, разрушили сами себя, превратили свою планету в самый настоящий ад. Увы. Чтобы люди на будущее знали, как не следует поступать и жить, смотря на эту трагическую гибель нашего с вами Земного мира - планеты Земля Солнечной Системы Галактики Млечный Путь.
3
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.01.2025, 13:58
Ответы с готовыми решениями:

Super Mario
Привет Ребята! Помогите, пожалуйста, найти ошибку! #include <SFML/Graphics.hpp> using namespace sf; int ground = 400; ...

Super Mario на C++ и OpenGL
Всем привет. Решил написать марио на opengl. Пока это все без текстур. Проблема в том, что уже который день не получается написать...

Персонаж super mario не видит коллизию
помогите пожалуйста с кодом,уже всю голову сломал, персонаж не видит коллизию,проваливается сквозь блоки,прикладываю класс игрока package...

247
 Аватар для zorxor
569 / 114 / 0
Регистрация: 09.02.2020
Сообщений: 2,787
Записей в блоге: 3
09.06.2026, 12:27  [ТС]
Студворк — интернет-сервис помощи студентам
Soldir_Of_Mario_BIG_SCREEN.zip
0
 Аватар для zorxor
569 / 114 / 0
Регистрация: 09.02.2020
Сообщений: 2,787
Записей в блоге: 3
09.06.2026, 13:13  [ТС]
Преимущество нового Марио над старым Марио

новое большое Марио : старое обычное Марио

Размер Марио - в новом Марио размер Марио намного меньше, чем у старого Марио. Почему так? Потому что в старом проекте Марио размер области, в которой разрешается работать Марио было всего-лишь 320 на 200.

Ограничений на число одновременно играющих Марио что в старом, что в новом проекте нет. Однако, в новом большом Марио уже будет намного удобней работать и 4 и 5 и даже 6 Марио, потому что разрешение стало намного больше, чем 320 на 200. Они смогут играть по сети, однако этого пока что в проекте не реализовано.
0
 Аватар для zorxor
569 / 114 / 0
Регистрация: 09.02.2020
Сообщений: 2,787
Записей в блоге: 3
09.06.2026, 14:04  [ТС]




0
 Аватар для zorxor
569 / 114 / 0
Регистрация: 09.02.2020
Сообщений: 2,787
Записей в блоге: 3
12.06.2026, 19:14  [ТС]
По поводу безопасности Марио - в настоящий момент Марио полностью безопасно, т.к. оно никак не взаимодействует с другими Марио по сети. Однако, в связи с работами по поддержки сети, такая безопасность Марио может быть поставлена под вопрос. Я, в общем-то, реализовывал игру по сети двух человек - в игровой программе "Морской бой". Однако, здесь реализовать уже гораздо сложнее, потому что нужно будет как-то синхронизировать всех Марио. Один Марио должен быть сервером, а другие Марио клиентами. Я думаю, что не так просто всё это реализовать.

Добавлено через 16 минут
Также, кроме всего прочего, я уже делал похожие работы в своём чате - когда приложение может работать в качестве сервера или клиента. Допускается только один сервер, все остальные чатлане должны присоединятся к клиенту. В сетевой версии Марио будет необходимо отсылать структуру, содержащую координаты всех Марио. Я не думаю, что сделать это слишком просто, потому что пакеты должны быстро проходить по сети. Если наступит какой-то шатдаун для одного игрока, он окажется в зависшем состоянии у всех остальных Марио.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
12.06.2026, 23:16
Цитата Сообщение от zorxor Посмотреть сообщение
Однако, здесь реализовать уже гораздо сложнее, потому что нужно будет как-то синхронизировать всех Марио. Один Марио должен быть сервером, а другие Марио клиентами. Я думаю, что не так просто всё это реализовать.
Вполне годный подход для бесплатного мультиплеера, когда один комп становится сервером, а другие клиентами.
Полагаю, что именно сервер должен служить эталоном в процессе синхронизации.

Цитата Сообщение от zorxor Посмотреть сообщение
Если наступит какой-то шатдаун для одного игрока, он окажется в зависшем состоянии у всех остальных Марио.
Гораздо опаснее, если заглючит сервер, то потеряется вся игровая сессия.
Но я встречал множество игр с таким мультиплеером, и ничё так, люди играют и не жалуются)
1
 Аватар для zorxor
569 / 114 / 0
Регистрация: 09.02.2020
Сообщений: 2,787
Записей в блоге: 3
14.06.2026, 07:39  [ТС]
Кстати, такая мысль возникла - может быть, если кто-то заинтересуется этим проектом, давайте скинемся на хороший ИИ, и попросим ИИ переписать проект под Андроид, под Линукс и под Яблоко. Хотя бы. А выручку потом равномерно распределим между участниками. Как вы смотрите на такую идею?

Также ИИ можно попросить реализовать и сетевую игру, попросить его перерисовать титлы (кубики, из которых состоит графика уровня) и спрайты.

Основная фишка будет - мультиплеер и встроенные редакторы титлов, спрайтов и уровней.

А какой там сейчас самый лучший ИИ для этого? Клод или ещё что.
0
 Аватар для zorxor
569 / 114 / 0
Регистрация: 09.02.2020
Сообщений: 2,787
Записей в блоге: 3
09.07.2026, 14:07  [ТС]
Привет! Как дела ... кто что делал по этому проекту? Допиливали?
0
Заблокирован
09.07.2026, 14:57
Цитата Сообщение от zorxor Посмотреть сообщение
кто что делал по этому проекту?
Что ж Господь тебя не сподобил ничего сделать?
Кроме тебя некому. Еретики заняты богомерзкими вещами.
0
 Аватар для zorxor
569 / 114 / 0
Регистрация: 09.02.2020
Сообщений: 2,787
Записей в блоге: 3
10.07.2026, 08:19  [ТС]
RabbitAttaks, здравствуйте! Прежде всего хочу вас поблагодарить за проявленное уважение, внимание и небезразличие к теме.

А теперь по существу вопроса. Может ли самый дорогой и лучший ИИ (какой именно ИИ) переписать этот проект под Андроид, например, чтобы можно было бы играть на телефоне или планшете.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
10.07.2026, 08:46
zorxor, делай игру на игровом движке и потом сможешь экспортировать её под разные платформы
0
 Аватар для zorxor
569 / 114 / 0
Регистрация: 09.02.2020
Сообщений: 2,787
Записей в блоге: 3
11.07.2026, 09:52  [ТС]
благодарю
0
Заблокирован
12.07.2026, 00:32
Цитата Сообщение от Royal_X Посмотреть сообщение
делай игру на игровом движке и потом сможешь экспортировать её под разные платформы
Если об этом подумать заранее, писать соответственно код и другие части приложения. То, возможно.
А иначе, легче заново)
К чему я, просто такое сухое указание, намекает на некий волшебный механизм, а его нет.
0
 Аватар для zorxor
569 / 114 / 0
Регистрация: 09.02.2020
Сообщений: 2,787
Записей в блоге: 3
06.08.2026, 04:37  [ТС]
Главная фишка тут - по максимуму отказаться от каких-либо готовых штучек и движков. С одной стороны, это, конечно, недостаток. Но с другой - большое преимущество. Так как весь графический вывод осуществляется в буфер памяти.

Я, просто, ещё и ещё раз хочу подчеркнуть: весь кайф от процесса написания игры именно и заключался в том, что автор всего кода ты, а не какой-то там суперинтеллект ИИ. Этот ИИ, кроме зависимости, как от наркотика, может ещё и чувство неполноценности сформировать, особенно для начинающих программистов и программисток.

То есть ты работаешь над своим творением, ты знаешь абсолютно всё о том, как работает твоя программа. Когда я в 5 классе, ну, будучи совсем ещё мальчишка - мальчик с чистым мозгом и ясным сознании, мне в то время было всего 10 лет, я познакомился с ЭВМ MSX, то учитель стал нам объяснять язык бейсик и, сразу, с графических примитивов - круг, линия, паинт. Это оказалось доступным для всех 15 человек, ходящие раз в неделю в кружок, в секцию по программированию. Занятия проводились всего один раз в неделю около часа (30-40 минут занятия по программированию, остальные минут 15-30 - видеоигры с классной музыкой. Год - 1989).

Царство Небесное Вам - дорогой мой учитель, Утвенко Виктор Григорьевич! Учитель нам сказал - сделайте домашнее задание, возьмите милиметровку, начертите оси координат X, Y и обозначьте размеры области в соответствие с видеорежимом и напишите программу на Бейске, которая будет рисовать домик (ну там что, домик из линий и круг) и раскрасьте его разными цветами. А потом на следующем занятии вы введёте эту программу в компьютер и она должна нарисовать домик именно таким, который у вас на листочке (и ясно, что мы столкнулись с различными трудностями в написании - ошибки синтаксиса или ошибки, связанные с перепутыванием координат X Y).

И я считаю что это абсолютно правильный подход к начальному обучению. BASIC - это нулевой уровень вхождения в тему. Там и цикл было объяснено что такое, на примере рисования сеток. Всё было просто и понятно даже для совсем ещё маленьких детей, при том, что в то время в СССР компьютеров дома практически не было ни у кого.

Что касается проекта "Soldir of Mario" - там практически весь код был мой (за исключением, конечно, функций начальной загрузки графики и спрайтов, музыки, обращению к прерываниям BIOS для перевода видеоадаптера в графический палитровый однобайтный режим 320x200). Короче говоря - мне интересно делать всё самому, а не использовать какие-то готовые решения и графически движки.

Да, это всё, вы скажите, очень устарело и не соответствует стандарту языка С/C++ Но я считаю, что этот проект, если его ещё немного допилить, вместе с инструкцией, как делать простые игры на С++ вполне заслуживает этого, для уровня 5-8 класса средней школы. Тут нет никакой высшей математики и мантр с матрицами. Тут нет никаких умопомрачительных длинных слов типа reinterpret_cast. Классы используются осторожно.

"A reinterpret_cast is a low-level C++ casting operator that forces the compiler to treat a specific bit pattern as a completely different type. It performs no safety checks or data modifications, making it fast but hazardous if used incorrectly"
Вот, интересно, была бы такая статистика в среде разработки - общее число нажатий на клавиши, число перекомпиляций проекта и общее число времени, потребовавшееся для этого, число запуска проекта, общее число времени, проведенного за редактированием проекта.

Что ещё важно - кто разрабатывает проект - мальчик или девочка. Потому что у девочки-программистки мозг устроен совсем не так, как у мальчика-разработчика. Также, что очень важно, сколько лет мальчику или девочке.

Так же, я прошу ещё раз правильно меня понять. Время тогда было совсем другое, нежели сейчас. Это был 1997 год, лето, всё лето я провёл у себя дома, невысоко, на 3-ем этаже, за экраном машины в разработке проекта. Я не гулял с ребятами, т.к. у них мысли были в таком духе - идут например впереди девочки, а они говорят - посмотрите какие у них ж..ы. Уж простите меня, мне вот до этого не было никакого дела. Я исключительно думал о реализации проекта "Солдат Марио". Или, если бы я с ними общался, они, допустим, могли сбросить меня в водоём со страшными последствиями, т.к. я плавать не умел, и, ясное дело, утонул бы. А они, вы знаете, запросто могли спрыгнуть с моста и остаться при этом в живых.

И, проект был написан в основном в 1997 году под доc, в среде Borland C++ 3.1
0
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,077
06.08.2026, 10:23
Цитата Сообщение от zorxor Посмотреть сообщение
То есть ты работаешь над своим творением, ты знаешь абсолютно всё о том, как работает твоя программа.
Есть такое. Но есть и обратное - желание поскорее увидеть результат.
Цитата Сообщение от zorxor Посмотреть сообщение
ты знаешь абсолютно всё о том, как работает твоя программа <...> я познакомился с ЭВМ MSX
А как работает ЭВМ вы тоже знаете? Ну хотя бы в общих чертах. Операционная система, графическая подсистема, процессор, логические вентили, принцип работы транзистора.
А то ведь вглубь можно погружаться в разных областях.
Цитата Сообщение от zorxor Посмотреть сообщение
за исключением, конечно, функций начальной загрузки графики и спрайтов, музыки, обращению к прерываниям BIOS для перевода видеоадаптера в графический палитровый однобайтный режим 320x200
Ну, формат bmp-файла несложный, его при желании можно реализовать и руками. Музыку - в зависимости от способа вывода, но вроде тоже несложно. Прерывания BIOS и графический режим 320х200х1 в современных приложениях просто запрещены.
Цитата Сообщение от zorxor Посмотреть сообщение
Но я считаю, что этот проект, если его ещё немного допилить, вместе с инструкцией, как делать простые игры на С++ вполне заслуживает этого, для уровня 5-8 класса средней школы.
Нет. Хотя бы из-за использования MSDOS. Ну слишком он устарел, эти знания будут бесполезны и вредны. Плюс у самого проекта нет привязки к чему-то современному.
Это можно исправить, например, написав упрощенную реализацию под DOS + 320x240x1, на ней рассказать про спрайты, про ввод-вывод. А потом перейти, скажем, на SDL, и реализовать то же самое там. Ну а дальше уже развивать проект до полноценной игры - добавление уровней или чего там, масштабирование окна. Может, даже переход на OpenGL.
То есть не один замшелый проект, а цикл уроков от простого и устаревшего к современному.
---
В общем, в том виде, в котором оно сейчас - мусор. Допилить до вменяемого состояния - можно. Но вот возьметесь ли?
Цитата Сообщение от zorxor Посмотреть сообщение
Вот, интересно, была бы такая статистика в среде разработки - общее число нажатий на клавиши, число перекомпиляций проекта и общее число времени, потребовавшееся для этого, число запуска проекта, общее число времени, проведенного за редактированием проекта.
И что вы с ней будете делать?
Впрочем, есть git, который вполне показывает и общее время разработки, и проблемы, которые решал программист, и то какой из программистов какие проблемы решал.
0
 Аватар для zorxor
569 / 114 / 0
Регистрация: 09.02.2020
Сообщений: 2,787
Записей в блоге: 3
06.08.2026, 16:28  [ТС]
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А как работает ЭВМ вы тоже знаете? Ну хотя бы в общих чертах. Операционная система, графическая подсистема, процессор, логические вентили, принцип работы транзистора.
А то ведь вглубь можно погружаться в разных областях.
Кроме принципа работы транзистора. Так и не осилил, хотя у меня возраст уже приличный 46 лет. Но, видимо, не дано. У меня просто поймите специфика именно на системное программирование. Я не люблю сложную математику, сложную физику, мне кажется всё это каким-то бредом. Для меня.

Хотя я, конечно, знаю в теории - есть эммитер, база, коллектор. Короче не понравилось мне это, я не полюбил транзистор. Была бы лучше лампа, мне было бы тогда намного интересней изучать.

А остальное, конечно. В кратце - есть огромная кипа проводов, к которой как бы параллельно подключены процессор, память и пр. Шина адреса и шина данных. Одно устройство, например микропроцессор, выставляет на шину адреса числовое значение и на это откликается, допустим оперативная память. Она выставляет на шину данных содержимое ячейки памяти. У микропроцессора есть регистры, с помощью которых он взаимодействует с памятью. В регистре IP/EIP содержится адрес инструкции, которая будет выполнятся. BP/EBP регистры стека и прочие. Есть и системные регистры и пр.

ОС - да, знаю. Я разрабатывал первоначально действительно под дос, т.к. виндоус ещё не сущестовала в природе. И вот, почему, с.г., мне нравилось разрабатывать на чистом железе, в real mode. Я хочу вам сказать, что я самым тщательнейшим образом исследовал микропроцессор i486, переводил его в защищенный режим работы, для этого нужно было перепрограммировать контроллер прерываний, т.с. Очень интересно мне было. Я даже разработал вполне полноценный дебагер, который работал в защищенном виртуальном режиме. Он мог показывать дамп памяти, регистров, стека, и даже дизассемблер там был. Ну не в машинных же кодах, в конце концов, читать.

Также и видеоподсистема. Кроме обращения к прерыванию int 13 BIOS для перевода из текстового режима в графический, я пытался управлять видеомодулем непосредственно через каналы ввода/вывода. Чтобы был режим, допустим, не 320x200, а 320x240.

И, вы знаете, это бесценный опыт работы с железом! Современные молодые программисты, которые эту школу не проходили, я думаю, им это будет в минус кармы.

Добавлено через 2 минуты
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Нет. Хотя бы из-за использования MSDOS. Ну слишком он устарел, эти знания будут бесполезны и вредны. Плюс у самого проекта нет привязки к чему-то современному.
Нет, ну это было первоначально написано на Borland C++ 3.1 для MSDOS в 1997 году. Потом была win98, потом winxp Позже я портировал исходник под windows в среде Visual Studio 6.0, в таком виде он и представлен у меня сейчас на github. И, кстати, чем хорош был принцип рисовать все в памяти - этот код остался без изменений, в windows же нужно было только сделать вывод из обычной памяти в видеопамять, я использовал для этого официальный микрософтоский презерватив DirectDraw.

Добавлено через 9 минут
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
То есть не один замшелый проект, а цикл уроков от простого и устаревшего к современному.
---
Ну да, в этом я вас, конечно, поддерживаю. Но мне просто что-то лень всё это изучать. Честно скажу. Неохото. Плюс, лишь бы не было войны и чтобы на города и сёла не стали падать специальные приспособления, единственное предназначение которых - это мучить и убивать ни в чём не виноватое мирное население - женщин, детей, стариков. Очень здорово меня всё это демотивирует. Я хочу жить. Я получил вчера пенсию по инвалидности 14 тыс. из них 4 тыс. оплата моей комнаты в трёх комнатной квартире, около 1500 руб. месячная подписка для SUNO Ai. Немного купил про запас продуктов - мука, рис, там, ещё что нибудь, курицу сварить хочу - у меня же ещё кошка, кот и кролик.
0
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,077
06.08.2026, 17:08
Цитата Сообщение от zorxor Посмотреть сообщение
Также и видеоподсистема. Кроме обращения к прерыванию int 13 BIOS для перевода из текстового режима в графический, я пытался управлять видеомодулем непосредственно через каналы ввода/вывода. Чтобы был режим, допустим, не 320x200, а 320x240.
И, вы знаете, это бесценный опыт работы с железом! Современные молодые программисты, которые эту школу не проходили, я думаю, им это будет в минус кармы.
Сейчас эту нишу занимают микроконтроллеры. И это куда более глубокий уровень работы с железом.
Цитата Сообщение от zorxor Посмотреть сообщение
И, кстати, чем хорош был принцип рисовать все в памяти
Он был хорош в во времена MSDOS, когда с использованием видеокарт были проблемы. Сейчас реализовывать графику на процессоре - неудачное решение. Ну, за исключением учебных задач или если графика уж совсем простая.
Цитата Сообщение от zorxor Посмотреть сообщение
Но мне просто что-то лень всё это изучать. Честно скажу.
Так вас вроде никто и не заставляет. Это вы то и дело порываетесь учить других тому, в чем вам, по вашим же словам, лень разбираться.
0
 Аватар для zorxor
569 / 114 / 0
Регистрация: 09.02.2020
Сообщений: 2,787
Записей в блоге: 3
06.08.2026, 19:52  [ТС]
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Сейчас реализовывать графику на процессоре - неудачное решение. Ну, за исключением учебных задач или если графика уж совсем простая.
Ну так я же и говорю об этом. Класс SCREEN - мог нарисовать спрайт, линию вниз, линию горизонтально.

Добавлено через 2 минуты
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Так вас вроде никто и не заставляет. Это вы то и дело порываетесь учить других тому, в чем вам, по вашим же словам, лень разбираться.
Нет, разве так я говорил? Лень разбираться сейчас в 2026 году в движках и прочее. Просто учебный проект - как быстро и легко написать Mario без изучения тонны чужого кода.

Я когда писал этот проект, всегда стремился к ясности и самодокументируемому коду.
0
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,077
07.08.2026, 09:41
Цитата Сообщение от zorxor Посмотреть сообщение
И, кстати, чем хорош был принцип рисовать все в памяти - этот код остался без изменений, в windows же нужно было только сделать вывод из обычной памяти в видеопамять, я использовал для этого официальный микрософтоский презерватив DirectDraw.
Цитата Сообщение от zorxor Посмотреть сообщение
Ну так я же и говорю об этом. Класс SCREEN - мог нарисовать спрайт, линию вниз, линию горизонтально.
Вы уж определитесь, рисуете вы руками в обычную память или используете современные средства вроде полигонов и текстур. В оперативку не надо, средствами видеокарты - надо.
Цитата Сообщение от zorxor Посмотреть сообщение
Просто учебный проект - как быстро и легко написать Mario без изучения тонны чужого кода.
А так людям придется разбираться в тоннах чужого (вашего) кода. Причем ладно бы он был написан как положено для учебного кода, но нет - школьный курсач времен прошлого тысячелетия.
Даже я сейчас за разумное время не могу разобраться что у вас в коде к чему. Какие-то бинарные .dat файлы (их чем редактировать-то вообще, почему не нормальный текст?), какой-то редактор спрайтов (почему не обычные bmp или тем более сжатые форматы?), Mario, Mario1, Mario2, Mario3, Mario4.
C
1
2
//==========ñòàòè÷åñêèå (òî åñòü â ñåãìåíòå äàííûõ) ïåðåìåííûå==============
//÷èñëî ñîçäàíûõ îáúåêòîâ
Вот этот комментарий почему на эльфийском, а не на человеческом?
Да и в целом код выглядит переусложненным.
---
Собственно, учебный материал должен быть в первую очередь не полноценной игрой, а наброском. Чтобы у учащегося было куда его развивать.
---
В общем, пока не приведете к хотя бы приблизительно вменяемому виду - мусор.
0
 Аватар для zorxor
569 / 114 / 0
Регистрация: 09.02.2020
Сообщений: 2,787
Записей в блоге: 3
07.08.2026, 12:35  [ТС]
Есть и ещё такая вещь, как среда разработки. Не понимаю, чем плох Visual Studio 6.0 для этого проекта, зачем мне ставить громоздкие гиганты типа Visual Studio 2026. Я поставил, и эта среда показалась мне просто каким-то монстром. И я проект так и не смог собрать - тот, который для меня сделал участник электронной конференции XLAT

Поэтому у меня и были мысли, чтобы на гитхаб кроме исходника Soldir of Mario выложить и портайбел версию Microsoft Visual Studio 6.0. Она работает хорошо и качественно, и быстро. Как среда для именно этого проекта - необходимая и достаточная. Я, понимаете, не могу смириться с высокой латэнси при автоматическом программировании, когда твоими руками управляет Сверх-Я. Вот, и мне не нужны тормоза самой среды и длительное ожидание сбора проекта в EXE. Я написал небольшой участок кода - прежде, чем буду продолжать дальше - я делаю компиляцию проекта, запускаю - смотрю и пишу дальше. Я не пользуюсь ИИ во время написания, правда, откровенно говоря, в ТО время ИИ ещё не было.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Вот этот комментарий почему на эльфийском, а не на человеческом?
Да и в целом код выглядит переусложненным.
---
Мне сказали, что это из-за неподдерживаемой в github кодировке. Если проект открыть в Visual Studio 6.0 всё становится нормальным. + ещё такая вещь - хотя я вам и обещал непременно это исправить, но так и не смог пока настроить у себя заново github.

Добавлено через 27 минут
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
от zorxor:
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
И, кстати, чем хорош был принцип рисовать все в памяти - этот код остался без изменений, в windows же нужно было только сделать вывод из обычной памяти в видеопамять, я использовал для этого официальный микрософтоский презерватив DirectDraw.
Ну так я же и говорю об этом. Класс SCREEN - мог нарисовать спрайт, линию вниз, линию горизонтально.
Вы уж определитесь, рисуете вы руками в обычную память или используете современные средства вроде полигонов и текстур. В оперативку не надо, средствами видеокарты - надо.
Рисую руками. От DirectDraw мне нужно только получить указатель на видеопамять. И всё.

Вот хедер, там детально ясно, что, как и почему происходит. Проще простого. Уж не знаю, для первоклассника это сложно, но для 5-классника уже можно, когда он изучает X Y оси. А сложные вещи младшеклассники не поймут.

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
//Screen.h
#ifndef __SCREEN_H
#define __SCREEN_H
 
#include "rects.h"
 
/*
    Класс SCREEN предназначен для вывода информации во внутренний буфер,
копию экранного буфера. Когда кадр сформирован, вызывается функция update(),
и изображения из внутреннего буфера копируется в видеопамять (на экран)
    Примечание: такие понятия, как 'вывод на экран', 'очистка экрана'
относятся не к физической VRAM, а к теневому экрану (DoubleBuffer, дублирующиц буфер)
    Чтобы информация появилась на экране необходимо вызвать функцию update() 
    Настоящая реализация поддерживает размер экрана 320x200
*/
class SCREEN {
 
// ********************** ДАННЫЕ-ЧЛЕНЫ ******************************
public:
 
    BYTE    DoubleBuffer[320*200];  //теневой экран
 
public:
 
    char    bkcolor;        //цвет заднего фона (при выводе текста)
    char    color;          //цвет рисования
    int     x,y;            //координаты курсора
 
    //хранит копию экрана 
    BYTE    SavedDoubleBuffer[320*200]; 
 
// ********************** ФУНКЦИИ-ЧЛЕНЫ *************************
public:
    void ConvertDoubleBufferToTrueColor(COLORREF * TrueColorBuffer);
    
    //значение State для bitblt
    enum {
        FLIP_HORZ=0x01, //перевернуть спрайт по горизонтали
        FLIP_VERT=0x02, //перевернуть спрайт по вертикали
        TRANSP=0x04 //есть прозрачные пикселы
    };
 
    enum {
        ONLY_DIGIT=0x01 //фунция InputString будет вводить только цифры
    };
 
    void bitblt(int X,int Y,int Len,int Hei, char far* Data, char State);
    void bitblt_part(int x,int y,int x_in, int y_in,int Len, int Hei,
                    int FactLen,int FactHei, char far* Data, char State);
    void border(int x,int y,int len,int hei, int color);    
    void center(int y, char far*);  
    void clear(int=0);              
    void CreatePalette();           
    void DecrementPalette();        
    void IncrementPalette();        
 
    void LoadPaletteFromFile(char *fname);  //восстанавливает палитру из файла
    void SavePaletteToFile(char *fname);    //записывает текущую палитру в файл
 
    //получить массив цветовых регистров
    //void GetColorRegisters(int startReg, int count, RGB * values);
    
    //установить массив цветовых регистров
    //void SetColorRegisters(int startReg, int count, RGB * values);
 
    //получение одного цветового регистра
    void GetColorRegister(unsigned char nReg,char&r,char&g,char&b);
 
    //установка одного цветового регистра
    void SetColorRegister(unsigned char nReg,char r,char g,char b);
 
    
    unsigned long InputNumber(unsigned int DigitCounter);   
    void InputString(int len, char far * str,int flag=0);
    void locate(int x,int y);   
    void locateXY(int x,int y); 
    void line(int x1,int y1,int x2,int y2, char color); 
    void lineright(int x,int y,int len, char color);    
    void linedown(int x,int y,int hei, char color);     
 
    SCREEN& operator << (char*);
    SCREEN& operator << (DWORD);
    SCREEN& operator << (unsigned);
    SCREEN& operator << (int);
    SCREEN& operator << (char);
    SCREEN& operator<< (SCREEN& (*_f)(SCREEN&))
    {
        return (*_f)(*this);
    }
 
    void pause(int n);
    void putpixel(int x,int y,int color); 
    void putpixel();                     
 
    void putSymbol(BYTE s);             
    void putSymbol(int x,int y, unsigned char s);   
    void putText(char far *);       
    void putNumb(unsigned long num);    
    void putNumb(unsigned long num,char width); 
    void rectangle(int x,int y,int len,int hei,int color);
    void rectangle(MYRECT &rt,int color);
    void setbkcolor(char c){bkcolor=c;};    //установка цвета вывода
    void setcolor(char c){color=c;};    //установка цвета вывода
    
    void Set320x240Mode();          //установить режим 320*240, 256 цветов
    void update(void);          //обновление экрана
    void update(RECT);          //обновление экрана
//  void wait(void);            //ждет обратного хода луча
    void SaveScreen();          //сохраняет экран во внутреннем буфере
 
    SCREEN(void);               
    ~SCREEN(void);              
 
};
//================== end of class 'SCREEN' ==============================
 
inline        SCREEN& endl(SCREEN& ob) { return ob; }
 
class MANIPMY {
public:
    SCREEN& (*fun) (SCREEN& , int);
    int ag;
 
public:
    MANIPMY ( SCREEN& (*_f)(SCREEN&, int) , int _a)
    {
        fun=_f;
        ag=_a;
    }
 
        friend SCREEN& operator<< (SCREEN& obj, MANIPMY& _f)
        {
            (_f.fun) (obj, _f.ag);
            return obj;
        }
};
 
MANIPMY& setcolor(int);
MANIPMY& cur(int,int);
 
 
//extern SCREEN scr;
 
 
/*
class FONT
{
    //возможные перечеслиния размеров фонта
    enum {
        FONT8x8,
        FONT8x14,
        FONT8x16
    };
 
    char * FontAddres;      //адрес фонта
    char SymHigh;           //высота одного символа
 
public:
    FONT(int size=FONT8x8); //конструктор size - размер фонта
    ~FONT();    //деструктор
 
    //показать на экране символ с дополнительным цветом color
void    Show(int x,int y, int symbol, char color);
};
 
  */
 
 
#endif
Добавлено через 5 минут

Не по теме:

Я хочу, COKPOWEHEU, написать для вас музыку с использованием SUNO Ai. Хотите?

0
фрилансер
 Аватар для Алексей1153
6500 / 5731 / 1133
Регистрация: 11.10.2019
Сообщений: 15,332
07.08.2026, 12:36
Цитата Сообщение от zorxor Посмотреть сообщение
чем плох Visual Studio 6.0
хорошая IDE, быстрая для своего времени.

Но нынче - безнадёжно устаревшая, ничего не знает про стандарты языка.

И просто напросто не работает под Win10
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.08.2026, 12:36

Nintendo отмечает 20-летие игры Super Mario Kart
Японский издатель компьютерных игр и разработчик игровых консолей Nintendo отмечает 20-летие с момента выхода первой из серии игр Super...

Игра в стиле Mario (SFML)
Решил попробовать написать игру в стиле марио. Это моя первая игра на с++ если что. Писал в VS 2013, для написания игры решил...

Поиск пути в массиве для фигуры 2х1(или попытка в ИИ для игры Dr.Mario)
Давно в 1990-х была такая игра на приставку Dendy. Вот задумал написать реализацию на делфи,а чтобы было не скучно,сделать режим...

Mario
Всем привет! Я студент первого курса, и в данный момент выполняю курсовую работу в виде игры &quot;Марио&quot;. Большая часть работы...

Mario c++
Здравствуйте, преподаватель задал написать всеми известную игру &quot;Марио&quot; на чистом с++, без использования каких-либо библиотек. Видел в...


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

Или воспользуйтесь поиском по форуму:
220
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru