Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1

Покритикуйте и помогите улучшить код моей игры

06.10.2015, 18:30. Показов 2573. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, недавно начал писать игру и собственно пишу потихоньку, но не в этом суть, просто я только сегодня понял, что мой код может быть не понятен другим, и вот, хочу задать вам вопрос, в прилагающемся архиве все файлы, которые я создал в процессе, исходники в общем, ну и файлы для игры требующиеся, все в архиве, основная моя идея в том, чтобы управлять игрой только с помощью файлов, оригинально, не правда ли? Но в этой оригинальности и кроются самые главные проблемы, так вот, я прошу у вас помощи, посмотрите мои исходники( хоть некоторые и кому не лень ) и скажите мне, какие функции можно укоротить и как повысить читаемость кода, а-то я просто понимаю, как все устроено, если что спрашивайте по функциям, отвечу что они делают. Я прошу тех, кому действительно просто делать нечего, потому что там, мне кажется, вообще не читается.
Вложения
Тип файла: rar Game.rar (288.7 Кб, 35 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.10.2015, 18:30
Ответы с готовыми решениями:

Помогите улучшить простой код
Задача: Из-за высокой цены бензина водители озабочены затратами топлива своих аытомобилей. Один водитель взял в рейс несколько емкостей...

Помогите извлечь исходный код моей же проги, исходники я удалил нечаянно.
Файл ниже.

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

37
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
07.10.2015, 20:42
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от makfak Посмотреть сообщение
Вот в том-то и проблема, из-за этого читаемость понижается, но придумать пока что ничего не могу, если есть идеи, то предлагайте.
Разрисуйте на листике схему взаимосвязей хотя бы базовых (имеется в виду ключевых в плане полиморфизма) классов.
0
56 / 54 / 33
Регистрация: 05.11.2014
Сообщений: 259
07.10.2015, 21:26
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
При завершении процесса она освободится вся и сразу, так как ос просто грохнет область выделенную процессу под кучу.
Плохой тон. Выделил память - освободи. От вашего подхода и начинаются утечки и уязвимости в безопасности.

Цитата Сообщение от makfak Посмотреть сообщение
Ну а как предложите реализовать выход из программы экстренный?
А "экстренный" не надо. Реализуй систему исключений, в конечной точке которой все нормально выгружается.

Цитата Сообщение от makfak Посмотреть сообщение
И еще забыл сказать, что прятать файлы мне не нужно, потому что основная задумка в их изменении как раз, чтобы любой пользователь, даже не умеющий программировать, мог создать свою игру, со своими персонажами и сценариями, а если я спрячу файлы, то никто не сможет ими воспользоваться.
Ну, в таком случае верно было сказано - лучшее решение это отдельная программа-редактор.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
07.10.2015, 21:48
Цитата Сообщение от PavelPol Посмотреть сообщение
Плохой тон. Выделил память - освободи
плохой тон - задавать компу лишнюю работу. Естественно что в деструкторах НАДО прописывать удаление всего динамически распределенного относящегося к объекту. И в середине работы проги их тоже удалять надо. Апо выхожу из проги пусть ось всю кучу грохнет - юыстрее будет. А то в деструкторах такие рекурсии бывают (ну если объекты шибко грамотные) что может и очень конкретная протормозка быть. То вы с COMMON - областями никогда не работали. Там думать надо что удалять а что нет даже по завершении жизненного цикла объекта/процесса.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
07.10.2015, 22:04  [ТС]
PavelPol,
Плохой тон. Выделил память - освободи. От вашего подхода и начинаются утечки и уязвимости в безопасности.
Вам ниже ответили, я солидарен.
А "экстренный" не надо. Реализуй систему исключений, в конечной точке которой все нормально выгружается.
Совсем забыл о них, спасибо, что напомнили.
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
08.10.2015, 06:31
Цитата Сообщение от makfak Посмотреть сообщение
Вот в том-то и проблема, из-за этого читаемость понижается, но придумать пока что ничего не могу, если есть идеи, то предлагайте.
Что делать — следует из обозначенной проблемы. Беспорядочные связи между классами — берем и выносим из классов все, что к ним не относится. Из игровых объектов убираем пользовательский интерфейс, ввод-вывод, продумываем доменную модель. Почему характеристики персонажа — тупо строки? Почему герой что-то пишет в консоль? Вынести это все во внешние функции/классы/подсистемы, а там видно будет.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
08.10.2015, 10:17  [ТС]
0x10, Хорошо, займусь сегодня же.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
08.10.2015, 10:58
Цитата Сообщение от 0x10 Посмотреть сообщение
Почему герой что-то пишет в консоль? Вынести это все во внешние функции/классы/подсистемы, а там видно будет.
Тут немного функционал карты засунут класс херо. Предлагаю немнонго более другую структуру: Класс Scenario хранит список персонажей (абстрактно персонажей). персонаж () умеет базовые действия - типа переместится, так или иначе что то отправить на вывод (желательно через объект-драйвер, либо функцию-драйвер), а так же имеет указатель на класс AIController который полиморфно реализует поведение как NPC так и ввод пользователя. В результате появится возможность менять поведение персонажей не трогая базовую структуру загрузчика и основной цикл управления, в том числе на лету, подменой прикрепленного объекта AIController

Добавлено через 11 минут
Цитата Сообщение от 0x10 Посмотреть сообщение
Почему герой что-то пишет в консоль?
Потому что когда дойдет до визуализации вызывать отрисовку прикрепленной модели или прикреплять ее к сцене придется точно так же из цикла отрисовки/сборки сцены, причем полиморфно. И это дожно быть методом базового (абстрактного) отображаемого объекта. Сам герой должен быть глубже по иерархии, поражден от персонажа. т.е абстрактная иерархия примерно такая "отображаемый объект"-"динамический объект"-"персонаж". Каждая из приведенных сущностей - абстрактная база для полиморфной иерархии.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
21.11.2015, 12:37  [ТС]
В общем, много воды утекло с последнего сообщения в этой теме, но я всё-таки взялся за проект, которому уже, как я думал, конец. Я решил не заморачиваться со взаимодействием классов и подобными вещами и создал класс Core, от которого наследовать буду нужное( прикреплён ). Я решил спросить совета, как мне реализовать загрузку героя? Загружать нужное когда требуется или всё-таки загружать всё в начале игры? Может ещё варианты есть, буду рад, если вы предложите.
Вложения
Тип файла: zip Core.zip (2.4 Кб, 6 просмотров)
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
21.11.2015, 21:35
Цитата Сообщение от makfak Посмотреть сообщение
создал класс Core, от которого наследовать буду нужное
Получилась огромная сущность, в которой намешано все: и интерфейс, и загрузка конфигов, и создание игровых объектов. И уж точно такая махина не подходит в качестве базового класса «всему нужному».
2
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
21.11.2015, 21:41
C++
1
2
3
        Core();                                             // Default constructor
        ~Core();                                            // Destructor
//и т.д.
Улыбнуло.
Вы считаете, что эти комментарии имеют смысл?
1
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
21.11.2015, 21:46  [ТС]
0x10, Нууу, разбираться со взаимодействием мне ещё больше не хочется.
Croessmah, А что?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
21.11.2015, 21:48
Цитата Сообщение от makfak Посмотреть сообщение
А что?
отсутствующий комментарий намного лучше ненужного комментария.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
21.11.2015, 21:51  [ТС]
Croessmah, Хмм, ну хорошо, удалю.

Добавлено через 33 секунды
Так как насчёт моего вопроса?
Загружать нужное когда требуется или всё-таки загружать всё в начале игры?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
21.11.2015, 21:55
Цитата Сообщение от makfak Посмотреть сообщение
Загружать нужное когда требуется или всё-таки загружать всё в начале игры?
Если У Вас там данных десять гигов, то, наверное, лучше подгружать по необходимости, а если там 2 Кб, то какой смысл загружать частями? Разве что если очень старая машина (примерно из компьютерного мезозоя), на такой случай можете реализовать оба варианта загрузки.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
21.11.2015, 22:09  [ТС]
Croessmah, Ну движок для консольных игр, да и статов и всяких прочих плюшек у героя много не предвидится( ну разве что у мага заклинания ).

Добавлено через 10 минут
Просто меня смущает то, что во время сражения мне придётся примерно каждую секунду загружать и сохранять статы.
0
56 / 54 / 33
Регистрация: 05.11.2014
Сообщений: 259
22.11.2015, 06:26
Цитата Сообщение от makfak Посмотреть сообщение
Просто меня смущает то, что во время сражения мне придётся примерно каждую секунду загружать и сохранять статы.
Загружай заранее то, что может пригодиться, к примеру появился на локации какой-то персонаж, загрузи его данные. Ушел - выгрузи. Не сохраняй статы пока они могут изменяться. К примеру - персонаж выходит из локации или погиб - можно сохранить.

В общем, должен быть кэш определенного размера. В нем все нужные данные и те данные, которые в скором времени могут стать нужными.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
22.11.2015, 11:11  [ТС]
PavelPol, Да я бы и не против, только как этот кэш реализовать?
0
56 / 54 / 33
Регистрация: 05.11.2014
Сообщений: 259
23.11.2015, 18:56
Разработать класс - менеджер ресурсов. Автоматическое удаление сделать в удобном виде, подходящем для данной задачи: по времени (сохранять время последнего использования), по списку нужных ресурсов, по текущему объему кэша.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.11.2015, 18:56

Помогите, очень срочно нужен код игры
Rebyata,zdrastvuyte. U menya takaya problema. Ochen srochno nujen kod java igri Flow Free na Android.Budu ochen priznatelen

Помогите найти исходный код игры змейка
помогите плиз!!! нужно игру змейки

Покритикуйте сборку (игры+виртуализация)
Всем читающим доброго времени суток. На днях собираюсь покупать комплектующие и поскольку я не особо опытен в подборе и сборке хотел бы...

Оцените графику моей игры ?
Оцените пожалуйста графику моей игры ? Подходит ли графика для 2012 года ?

Открытое тестирование моей игры на Unity2D
Всем здравствуйте!! Я хочу скинуть сюда свою игру, чтобы вы рассказали о недочетах и идеях! И это не вирус. Я серьезно. А то вдруг кто...


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

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Опции темы

Новые блоги и статьи
Калькулятор для расчета родства
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 реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru