{{notification.text}}

MirGames

SpyHunter
03.12.08 22:22
0
Доброго всем дня
Я хочу зделать в игрн поддержку разных разширений но незнаю как.
Помогите пожалуста
#1
03.12.08 22:25
0
Использовать или писать скрипт. Подожди, расширения чего? Если что бы игру было легко модернизировать не влезая в код, то я уже ответил...
#2
SpyHunter
04.12.08 04:31
0
Разширение монитора. У меня привключении пункта видео в меню видео получается на пол экрана.
Но это только при разширениях 640x480,800x600,1200X1024 ,а при 1024x768 всё в норме на весь икран
#3
SpyHunter
04.12.08 04:47
0
Я хочу зделать у меню возможность смотреть видео.
Типа у меня меню:
New Game
Load/Save
Video
Quit
и чтобы при на жатии на кнопку Video було видео на весь икран. Всё нормально работает при розширении 1024x768
а при 800x600, 640x480, 1200x1024 видео або на пол экрана або навесь розтягивается
Помогите пожалуста.
#4
Хранитель Флейма
04.12.08 17:02
0
SpyHunter
Адаптируй под разные разрешения. Ты вбил координаты меню константами, соответственно под любым разрешением отличного от того, под которое ты затачивал меню, отображение будет некорректным.

По оси X выбери нужное разрешение (например 1024), по оси Y тоже нужное (пример - 768).

Далее вместо константных значений вычисляй положение объектов и их размеры по такой формуле: X = ПоложениеОбъектаПоХдляРазрешения1024 * (ФактическоеРазрешениеПоX / 1024)

С шириной, высотой, и положением на экране поступай аналогично.

ФактическоеРазрешениеПоX / 1024 и ФактическоеРазрешениеПоY / 768 не обязательно вычислять каждый раз. Вычисляй их только один раз при смене разрешения :)

P.S: Но это плохой способ, я думаю :) Тебе щас местные игроделы скажуть получше что-нибудь.
#5
04.12.08 17:56
0
В параметрах меню ищешь: MenuScale и вместо gmsNormal ставишь: gms1024x768. Все, при изменении размеров экрана меню будет маштабироваться самостоятельно. С видео так же.
Отредактировано: 04.12.08 17:57
#6
04.12.08 18:16
0
Только, для начала, я бы порекомендовал изучить букварь и правила языка, на котором задаётся вопрос. Это даже не олбанский, это текст крестьянина-школьника, которого уже третий раз оставляют в 5м классе.. Извиняюсь за резкость.

Said: Так, все, задолбался я ваши посты удалять, щас банит буду плин!!! ТЫ УЖЕ 3-й за сегодня, кто пишет "Учи русский". Ну из Украины малый, ну плохо знает русский, ну и что? Еще один пост такого содержания и буду повышать рейтинг за самомодерирование.
Отредактировано: 04.12.08 18:40
#7
SpyHunter
05.12.08 02:15
0
Чтото у меня нечего не получается
Наверное я неправельно излажил проблему
вот исходник
#8
SpyHunter
06.12.08 23:24
0
А как можно менять розширения монитора в самой системе. Ну чтоб если я запустил игру
то и розширение икрана подстраевалось под розширение игры?
Отредактировано: 06.12.08 23:48
#9
Студент
07.12.08 00:38
0
Хоть и не буду их смотреть, но ссылки на исходники, я так и не увидел. Это раз.
Во-вторых на этом сайте есть также статьи, а не только форум.
http://www.mirgames.ru/articles/opengl/around_gl.html
Тут подробное описалово проблемы и её решение.

Хех... И всё-таки скачайте какую-нибудь программку, использующую ASPELL
#11
SpyHunter
07.12.08 01:22
0
petyakurochkin извиняюся за неудопства в будущем постараюся больше не задавать тупых вопросов.
А что до исходника то тогда у меня нэт зглючил тому и нет ссылки.
Спасибо что помог :rolleyes:
#12
14.02.09 00:24
0
черпай...

код:

procedure TForm1.FormCreate(Sender: TObject);
var
Ini: TIniFile;
begin
FIniPath := ChangeFileExt(Application.ExeName, 'settings.ini');
Ini := TIniFile.Create(FIniPath);
try
Left := Ini.ReadInteger(FORM, 'Left', 0); } это загрузка того самого .ini файла, приложе
Top := Ini.ReadInteger(FORM, 'Top', 0); ние сцитует инфу о положении Form1 и т.п.
Width := Ini.ReadInteger(FORM, 'Width', 0);
Height := Ini.ReadInteger(FORM, 'Height', 0);
ComboBox1.Text := Ini.ReadString(FORM, 'Text', Form1.ComboBox1.Text); (в этом ComboBox1 у тебя можна выбрать 800х600, 1024х768 и т.д.)
finally
Ini.Free;
end;
if Form1.ComboBox1.Text = '800x600' then
begin
Form1.Left := 0;
Form1.Top := 0;
Form1.Image1.Picture.LoadFromFile('Data/Menu/cs_source_wall_800x600.bmp'); (загрузка картинки для меню под данное разрешение)
Form1.Height := 600;
Form1.Width := 800;
end;


if form1.ComboBox1.Text = '1024x768' then
begin
Form1.Left := 0;
Form1.Top := 0;
Form1.Image1.Picture.LoadFromFile('Data/Menu/cs_source_wall_1024x768.bmp'); (загрузка картинки для меню под данное разрешение)
Form1.Height := 768;
Form1.Width := 1024;
Form1.Position := poScreenCenter; (ОЧЕНЬ ВАЖНО)
end;
end;

а это ты когда выбираешь 800х600 и кликаешь в менюшке опций *ОК*

procedure TForm1.SpeedButton11Click(Sender: TObject);
begin
if form1.ComboBox1.Text = '800x600' then
begin
Form1.Left := 0;
Form1.Top := 0;
Form1.ComboBox1.Text := '800x600';
Form1.BorderStyle := bsSingle;
Form1.Position := poScreenCenter;
Form1.Height := 600;
Form1.Width := 800;
Form1.Image1.Picture.LoadFromFile('Data/Menu/cs_source_wall_800x600.bmp');
end;

а это ты когда выбираешь 1024х768 и кликаешь в менюшке опций *ОК*

f form1.ComboBox1.Text = '1024x768' then
begin
Form1.Left := 0;
Form1.Top := 0;
Form1.Position := poScreenCenter;
Form1.ComboBox1.Text := '1024x768';
Form1.BorderStyle := bsSingle;
Form1.Height := 768;
Form1.Width := 1024;
Form1.Image1.Picture.LoadFromFile('Data/Menu/cs_source_wall_1024x768.bmp');
end;
end;

а вот сейчас будет самое важное

procedure TForm1.FormDestroy(Sender: TObject);
var
Ini: TIniFile;
begin
Ini := TIniFile.Create(FIniPath);
try
Ini.WriteInteger(FORM, 'Left', Left); } это ты когда выходишь из игры, то оно
Ini.WriteInteger(FORM, 'Top', Top); записывает последние конфиги.
Ini.WriteInteger(FORM, 'Width', Width);
Ini.WriteInteger(FORM, 'Height', Height);
Ini.WriteString(FORM, 'Text', Form1.ComboBox1.Text);
finally
Ini.Free;
end;

если не разберёшься, то я могу исходники скинуть B)
ах да, вот что ещё

в uses добавь IniFiles и ещё кое что

private
FIniPath: string;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
const
FORM = 'MainForm';

implementation
{$R *.dfm}

ну а дальше Form create

Said: и ты черпай!

Есть такой тег у форума "code" - результат применения такой:

Код

Не будешь его использовать,
  Не будут видны отступы в коде,
    Не будет видно отступов в коде,
      Не будет тебе +1 и "аффтор спасиба",
        А будет тебя злой дядя Саид понукать.
Отредактировано: 14.02.09 00:54
#13
20.02.09 02:19
0
Может вопрос не в тему, но всётаки. Как перевести тип TAntiAliasing в String или ещё что-нить, чтобы записать в файл?
#14
Хранитель Флейма
20.02.09 02:51
0
DOmeNik
Декларацию TAntiAliasing покажи.
#15
20.02.09 03:20
0
Цитата(Said @ Сегодня, 21:51)
[snapback]93331[/snapback]
Декларацию TAntiAliasing покажи.
Если бы я знал, что это такое - показал бы. А смысл такой: при загрузке игры открывается файл опций, в нём есть строка обозначающая AntiAliasing GLSceneViewer'а, типа одно из 5 значений aanone, aa2x,aa2xHQ,aa4x,aa4xHQ. Как из строки перевести в TAntiAliasing, вот в чём вопрос, или может как-нить по-другому?
#16
22.02.09 03:09
0
хм.. если у TAntiAliasing тип String, а ты хочешь перевести в Integer или Boolean, то нечево у тебя не получиться. Типы нельзя менять. Попробуй найди альтернативную функцию TAntiAliasing, но с другим типом. Ето на мой взгляд единственный выход.
#17
22.02.09 03:26
0
Цитата
хм.. если у TAntiAliasing тип String, а ты хочешь перевести в Integer или Boolean

Ничего подобного мне не нужно. А нужен только перевод из String в TAntiAliasing.
#18
Хранитель Флейма
22.02.09 07:15
0
DOmeNik
Я имел в виду найди где объявлен этот тип и вставь его сюда в тему, что бы я смог оказать тебе помощь.

Судя по твоим словам, можно предположить, что TAntiAliasing объявлен следующим образом:

Код

type
  TAntiAliasing = (aanone, aa2x, aa2xHQ, aa4x, aa4xHQ);


А значит решением твоей проблемы является приведение переменной типа TAntiAliasing к типу Integer и записью его в строку (числа).

Код

var
  Any : TAntiAliasing;
***
  WriteLn(Integer(Any));


В файл ты запишешь число, которое будет соответствовать номеру элемента перечисления TAntiAliasing.
Затем при чтении все что тебе будет нужно сделать - получить сначала число, а затем преобразовать тебе его в TAntiAliasing. Допустим у тебя есть некая переменная типа Integer (назовем ее Any), ты в эту переменную записал значение из твоего файла настроек, затем присвоил переменной типа TAntiAliasing (для примера назовем ее AA) нужое значение:

Код

var
  AA : TAntiAliasing;
***
  AA := TAntiAliasing(Any);


А вообще на вот, покури: http://www.delphikingdom.com/lyceum/seminar.asp?id=6
#19
22.02.09 17:57
0
Said
Спасибо. С записью в файл проблем нет: всё переводится, как ты и сказал. А вот с чтением (переводом из integer) ошибка:Undeclared identifier TAntiAliasing. По идеи, какой-то uses нужно подключить.
#20
Хранитель Флейма
22.02.09 22:04
0
DOmeNik
Тот где собсна объявлен TAntiAliasing. Я не знаю что за IDE ты используешь, но в Delphi (BDS или 7-ка, например) - можно щелкнуть по TAntiAliasing CTRL+ЛКМ. Сразу увидишь что тебе не хватает.

На счет той ссылки (http://www.delphikingdom.com/lyceum/seminar.asp?id=6) - я все же настаиваю что бы ты шел курить это с самого начала.
#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}