|
5 / 5 / 1
Регистрация: 02.12.2014
Сообщений: 62
|
|
Самомодификация кода02.12.2014, 21:38. Показов 1075. Ответов 14
Метки нет (Все метки)
Я пишу простенькую консольную игру на шарпе. Вопрос: можно ли сделать так, чтобы программа, в моем случае, изменила в своем коде начальное значение определенной переменной? Конкретно: я играю в эту игру, наиграл 100 золотых монет, в конце игры выбираю функцию сохранить, и программа меняет соответственно значение переменной кошелька в начале программы на 100.
Я понимаю что скорее всего это или невозможно или очень геморройно, в этом случае расскажите, как осуществить эту мысль с использованием внешних ресурсов.
0
|
|
| 02.12.2014, 21:38 | |
|
Ответы с готовыми решениями:
14
самомодификация
Самомодификация |
|
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 7
|
|
| 03.12.2014, 10:22 | |
|
Довольно странное решение... А не проще, например, тянуть такие данные из БД или записывать их в файл?
0
|
|
|
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 7
|
||
| 03.12.2014, 14:42 | ||
|
0
|
||
|
5 / 5 / 1
Регистрация: 02.12.2014
Сообщений: 62
|
|
| 03.12.2014, 16:38 [ТС] | |
|
Моя цель как раз состоит в том, чтобы не использовать внешние ресурсы. Так интереснее.
Добавлено через 1 минуту sm0t, и как мне это сделать? Поможешь?
0
|
|
|
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 7
|
|
| 03.12.2014, 16:53 | |
|
Если ты хочешь записывать файл то гугли на тему "запись в файл c#". Если ты хочешь использовать БД, то поднимай БД (я как-то использовал для этих нужд postgreSQL) и прописывай к ней коннект, а далее делай запись и чтение обычными SQL - запросами. Первый способ проще, второй интереснее и в последствие будет проще его поддерживать =) Выбирай сам, чем смогу - помогу.
0
|
|
|
5 / 5 / 1
Регистрация: 02.12.2014
Сообщений: 62
|
|
| 03.12.2014, 21:43 [ТС] | |
|
sm0t, помоги осуществить идею с помощью базы данных, ибо я рак и не имею достаточно синтаксиса и знаний в принципе.
0
|
|
|
|
|||
| 04.12.2014, 07:03 | |||
|
Ну, безумству храбрых поём мы песню, чо. Существует туева хуча локальных хранилищ, не требующих специальной установки. Начиная от простых текстовых файлов. Добавлено через 13 секунд Ну, безумству храбрых поём мы песню, чо. Существует туева хуча локальных хранилищ, не требующих специальной установки. Начиная от простых текстовых файлов.
0
|
|||
|
[Bicycle Reinventor]
|
|||||||||||
| 04.12.2014, 12:57 | |||||||||||
|
ТС хочет не то, что вы предлагаете.
Объясню понятным языком. У нас есть класс Player. Есть поле класса money. Конструктор класса инициализирует значение денег нулём по умолчанию:
Т.е. если после первой сессии игры игрок набрал 98 монет, вышел из игры, то при следующем запуске сам код приложения изменится и будет выглядеть уже так:
P.P.S. я понятия не имею, как это сделать, не используя внешние хранилища P.P.P.S наверняка какой-то способ существует. Например, код может на манер рекурсии вызывать компилятор, передавать ему свой же код, вызывать полученный exe, или что-то вроде.
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 7
|
|
| 04.12.2014, 13:07 | |
|
Такой расклад первым пришёл мне в голову, потому я и написал "Довольно странное решение...". Согласитесь, что сделать это, даже если и можно, то в крайней степени некорректно =)
ТС'y, раз уж он сказал сам про БД скажу вот что: если хотите действовать через БД моим методом, то погуглите на тему "как поднять postrgreSQL", а когда поднимите, то "postgresql c# connecting". Учитесь гуглить - это реально помогает в жизни и работе, а вот если будут какие-то конкретные вопросы, то спрашивайте - ответим в силу своих знаний =)
0
|
|
|
|
|
| 04.12.2014, 13:15 | |
|
sm0t, полагаю, если субд надо "поднимать", то это уже слишком сложное решение, из пушки по воробьям.
Начать надо с текстовых файлов, если этого окажется недостаточно - заюзать бд, которые не требуют сервера, а читаются просто так. Например, sqlite. Или hdf5, это уже из продвинутых, ориентирован под числодробилки.
0
|
|
|
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 7
|
||
| 04.12.2014, 13:19 | ||
|
0
|
||
|
5 / 5 / 1
Регистрация: 02.12.2014
Сообщений: 62
|
|
| 04.12.2014, 18:15 [ТС] | |
|
Я стремлюсь к этому лишь потому, что это простое приложение, которое будет запускаться одним экзешником, и если будет еще хотя бы один лишний файл, для меня она будет слишком громоздкой.
Хотя на самом деле это мой маразм, забейте.
0
|
|
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
||
| 04.12.2014, 21:55 | ||
|
Можно и как хочет ТС , правда сложность не оправдывает себя.
Сам себя exe-шник перезаписать не сможет , поэтому нужно будет создавать временный файл , который будет перезаписывать оригинальный после чего удаляться. Ну а что бы упросить процесс перезаписи - т.е не искать там байты и прочее , нужно что бы код был динамически компилируемый , тогда можно просто реплейсить значение в строке кода и сохранять ее в новом исполняемом файле. Короче извращение то еще ) , но если очень хочется , то можно.
0
|
||
| 04.12.2014, 21:55 | |
|
Помогаю со студенческими работами здесь
15
Самомодификация. GetLastError() = 299
Компиляция/добавление кода без видимости самого кода(сложно объяснить) Замена програмно куска кода в файле .php другим куском кода
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|