Форум: "Игры";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизМеню в игре. Найти похожие ветки
← →
ZAROLF © (2004-01-17 07:42) [0]Мастера, нужно решить такую проблему:
Допустим у меня в игре, типа в меню, есть несколько пунктов выбора:
-Начать новую игру
-Продолжить текущую игру
.
.
.
-Выход
И вот при нажатии "-Начать новую игру" - запускается первый уровень игры.
Далее по ходу игры нажимаем по нужде ESC, и выходим в вышеупомянутое меню. Теперь перед нами стоит выбор:
-Начать новую игру
-Продолжить текущую игру
Вот с продолжить игру проблем нет, при наж ESC - Timer.Enabled:=false;
При нажатии -Продолжить текущую игру Timer.Enabled:=true;
А как начать новую игру, учитывая то что перед выбором нужно либо сохранить текущую игру - с целью продолжения игры, либо замочить процесс уже при нажатии ESC (что мне не нужно). Ведь начать новую игру, значить
греатить поверх текущей, а это сами понимаете чем вылезит.
← →
NikeOLD (2004-01-20 09:59) [1]
> А как начать новую игру, учитывая то что перед выбором нужно
> либо сохранить текущую игру - с целью продолжения игры,
> либо замочить процесс уже при нажатии ESC (что мне не нужно).
> Ведь начать новую игру, значить
> греатить поверх текущей, а это сами понимаете чем вылезит.
Хрень какая-то!
Никаких проблем не вижу. При выходе из игры, ты все свои спрайты уничтожаешь где-то, так? Ну так прибей их и создай заново.
Если не подходит и спрайты живут и убивать их не надо все время работы программы (как кубики в пятнашках) просто переинициализируй все значения. И не надо ничего мочить: нажал ESC - сохранил (если требуется), выбрал новую игру - переинициализировал, или загрузил - опять же переинициализировал. Вся проблема.
← →
ZAROLF © (2004-01-20 10:27) [2]Вот при нажатии на "Начать новую игру"
происходит всё так:
procedure TMainForm.SpeedButton9Click(Sender: TObject);
begin
//убиваем все спрайты на карте
life1:=0;
life2:=0;
life3:=0;
life4:=0;
life5:=0;
life6:=0;
life7:=0;
life8:=0;
life9:=0;
life10:=0;
life11:=0;
life12:=0;
life13:=0;
life14:=0;
life15:=0;
life17:=0;
life18:=0;
life19:=0;
life20:=0;
life21:=0;
life25:=0;
Gun.Dead;
pixel.Dead;
pixel2.Dead;
pixel3.Dead;
//ставим плеера на место
with TPlayer(Player) do
begin
x:=320;
y:=192;
Z:=1;
end;
//А вот здесь проблема с созданием спрайтов повторно
MainForm.FormCreate(FormObject);
end;
Может знаешь как MainForm.FormCreate(FormObject); запустить
последовательно после уничтожения спрайтов.
← →
Darthman © (2004-01-20 10:58) [3]MainForm.OnCreate(nil);
← →
ZAROLF © (2004-01-20 11:43) [4]>Darthman © (20.01.04 10:58) [3]
>MainForm.OnCreate(nil);
-----------------------------------------------------------------
В перемешку с MainForm.OnCreate(nil); спрайты не хотят удаляться, и получается раздвоение - старого и нового OnCreate.
Вообще геморой.
← →
NailMan © (2004-01-20 13:02) [5]Смешно.
Делаешь так:Procedure TMainForm.InitializeScene;
begin
...
//здесь пишешь инициализацию всех своих объектов и плауера
...
end;
Procedure TMainForm.Clear;
begin
...
//здесь пишешь убиваение всех своих объектов и плауера(код ты привел)
...
end;
Procedure TMainForm.OnCreate(Sender:TObject);
begin
InitializeScene;
end;
При нажатии кнопки делаешь:MainForm.Clear;
MainForm.InitializeScene;
При закрытиии формы делаешь:MainForm.Clear;
И вообще уже созданую форму ты не сможешь пересоздать, темболее такMainForm.FormCreate(FormObject);
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c