forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Перезапуск Программы (http://forum.boolean.name/showthread.php?t=20176)

Harts 01.02.2016 20:51

Перезапуск Программы
 
Добрый вечер.
Помню я находил код в blitzbasic.com, который перезапускал программу.
Се час ни как не могу вспомнить или найти.
Народ подскажите пожалуйста код для перезапуска программы.

Arton 02.02.2016 18:04

Ответ: Перезапуск Программы
 
Через командную строку?

PHP код:

Print "Нажмите любую клавишу для перезапуска программы."

WaitKey()

ExecFile "start /start.exe" 


Harts 03.02.2016 13:15

Ответ: Перезапуск Программы
 
Цитата:

Сообщение от Arton (Сообщение 303830)
Через командную строку?

PHP код:

Print "Нажмите любую клавишу для перезапуска программы."

WaitKey()

ExecFile "start /start.exe" 


Это не то. Если имя файла измениться, то код работать не будет.

St_AnGer 03.02.2016 14:21

Ответ: Перезапуск Программы
 
Цитата:

Сообщение от Harts (Сообщение 303851)
Это не то. Если имя файла измениться, то код работать не будет.

Ну если в папке только один *.exe файл будет, то просто - блицем ищем в нужной директории имя файла exe и запускаем его.

mingw 03.02.2016 14:32

Ответ: Перезапуск Программы
 
По моему в какой-то сторонней библиотеки было подобие реализации функции atExit(f()). Не помню точно но похоже была у Михаила Ворстникова aka MixailV.

Harts 03.02.2016 14:44

Ответ: Перезапуск Программы
 
Цитата:

Сообщение от St_AnGer (Сообщение 303854)
Ну если в папке только один *.exe файл будет, то просто - блицем ищем в нужной директории имя файла exe и запускаем его.

То же не вариант, в папке 3 файла *.exe.

Когда у меня подобный вопрос: можно сделать так чтобы при изменения разрешения экрана в самом меню игры, менялась без выхода и входа в игру?

Gector 03.02.2016 21:10

Ответ: Перезапуск Программы
 
Цитата:

Сообщение от Harts (Сообщение 303858)
То же не вариант, в папке 3 файла *.exe.

Когда у меня подобный вопрос: можно сделать так чтобы при изменения разрешения экрана в самом меню игры, менялась без выхода и входа в игру?

Применять в основном цикле изменение разрешения (не каждый кадр разумеется, а только тогда когда надо).

St_AnGer 03.02.2016 21:38

Ответ: Перезапуск Программы
 
Цитата:

Сообщение от Harts (Сообщение 303858)
То же не вариант, в папке 3 файла *.exe.

Когда у меня подобный вопрос: можно сделать так чтобы при изменения разрешения экрана в самом меню игры, менялась без выхода и входа в игру?

Можно конечно. Изменение графики в главном цикле возможно, ровно как и перезагрузка ресурсов. Сейчас точно не скажу, давно было дело, но такие вещи делались довольно тривиально (что то типа убрать графику, не помню команда есть такая, иль нет, а потом Graphics/Graphics3D с нужным разрешением вызываешь и будет тебе счастье).

Влоб наверно тоже будет работать, проверить только не на чем, у меня винды нету :(. По идее по пробелу разрешение должно упасть.
Код:

Graphics3D 1024,768,32

While Not KeyHit(1)
    If (KeyHit(57)) Then
        Graphics3D 800,600,32
    End If

    UpdateWorld()
    RenderWorld()
   
   
    Flip()
Wend
End

UPD: Может быть придётся ещё камеры пересоздать. Но по идее лучше вообще перезагрузить все ресурсы игры, чтоб никаких глюков не было, я так делал.

Harts 03.02.2016 22:15

Ответ: Перезапуск Программы
 
Цитата:

Сообщение от St_AnGer (Сообщение 303880)
Можно конечно. Изменение графики в главном цикле возможно, ровно как и перезагрузка ресурсов. Сейчас точно не скажу, давно было дело, но такие вещи делались довольно тривиально (что то типа убрать графику, не помню команда есть такая, иль нет, а потом Graphics/Graphics3D с нужным разрешением вызываешь и будет тебе счастье).

Влоб наверно тоже будет работать, проверить только не на чем, у меня винды нету :(. По идее по пробелу разрешение должно упасть.
Код:

Graphics3D 1024,768,32

While Not KeyHit(1)
    If (KeyHit(57)) Then
        Graphics3D 800,600,32
    End If

    UpdateWorld()
    RenderWorld()
   
   
    Flip()
Wend
End

UPD: Может быть придётся ещё камеры пересоздать. Но по идее лучше вообще перезагрузить все ресурсы игры, чтоб никаких глюков не было, я так делал.

Не помогло.

ABTOMAT 04.02.2016 02:39

Ответ: Перезапуск Программы
 
Цитата:

Сообщение от St_AnGer (Сообщение 303880)
Но по идее лучше вообще перезагрузить все ресурсы игры, чтоб никаких глюков не было, я так делал.

> лучше

Как будто есть и другие варианты. При вызове Graphics или Graphics3D все загруженные модели и текстуры уничтожаются.

Цитата:

Сообщение от Harts (Сообщение 303883)
Не помогло.

А что происходит вместо переключения разрешения?

Harts 04.02.2016 02:45

Ответ: Перезапуск Программы
 
Цитата:

Сообщение от ABTOMAT (Сообщение 303886)
> лучше

Как будто есть и другие варианты. При вызове Graphics или Graphics3D все загруженные модели и текстуры уничтожаются.



А что происходит вместо переключения разрешения?

Ни чего не происходить.

Arton 04.02.2016 04:17

Ответ: Перезапуск Программы
 
Цитата:

Сообщение от Harts (Сообщение 303887)
Ни чего не происходить.

Код рабочий...
Ты ничего не менял, запустилось во весь экран. Объектов нет, камеры нет, чёрный экран, естественно при смене разрешения разницы не видно.
Поставь оконный режим.

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

Память будет цела, за исключением медиа, текстуры, звуки и т. д. (нужны уточнения)
Сторонняя библиотека, например для звука, будет исправно работать. (нужны уточнения)
Не понял — чистит ли блиц ресурсы при переключение графики. Ой, Автомат всё написал.

St_AnGer 04.02.2016 09:35

Ответ: Перезапуск Программы
 
Цитата:

Сообщение от ABTOMAT (Сообщение 303886)
Как будто есть и другие варианты. При вызове Graphics или Graphics3D все загруженные модели и текстуры уничтожаются.

Я просто не помню как блиц работает при вызове этих команд, давно дело было, но точно помню что я не натыкаясь на выгрузку ресурсов сам делал полную перезагрузку у себя в проектах (опираясь на игры от нормальных разработчиков). Спасибо что освежил в памяти эту инфу!

Цитата:

Сообщение от Arton (Сообщение 303892)
Учитывая что все ресурсы сбрасываются, и их надо по новой загружать, то проще перезапускать всю программу.

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


Часовой пояс GMT +4, время: 10:46.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot