forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на MidletPascal (http://forum.boolean.name/forumdisplay.php?f=88)
-   -   Разработка игры "DooM story" (http://forum.boolean.name/showthread.php?t=8939)

abcdef 23.08.2009 19:24

Ответ: Разработка игры "DooM story"
 
чтобы сделать выравнивание по правому краю достаточно выводить строку с конца

cherepets 23.08.2009 20:53

Ответ: Разработка игры "DooM story"
 
В смысле как-то так?
Код:

program abcdef;

procedure right(str :string; x,y :integer);
var 
  i :integer;
begin
  for i:=0 to length(str)-1 do
  begin
drawtext(getChar(str,length(str)-1-i),(x-i*8-8),y);
  end;
end;

begin
right('abcdef',240,20);
repaint;
delay(10000);
end.

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

Tronix 23.08.2009 23:23

Ответ: Разработка игры "DooM story"
 
Есть такая функция function GetStringHeight(text: string): integer;
, как написано в хелпе: Returns the height (in pixels) for showing the 'text' on display in the current font. Поэтому я думаю, что с помощью нее труда вывести текст справо не составит труда..

cherepets 23.08.2009 23:30

Ответ: Разработка игры "DooM story"
 
Спасибо))
Только в нашем случае getStringWidth нужно. Высота нам любая подходит.
В хелпе искал подобное в строках, а оно в рисовании оказалось...

Tronix 23.08.2009 23:36

Ответ: Разработка игры "DooM story"
 
Цитата:

Сообщение от cherepets (Сообщение 115928)
Спасибо))
Только в нашем случае getStringWidth нужно. Высота нам любая подходит.
В хелпе искал подобное в строках, а оно в рисовании оказалось...

Да, сорри, после свадьбы я, перепутал. Конечно getStringWidth я имел ввиду. ;)

abcdef 24.08.2009 09:54

Ответ: Разработка игры "DooM story"
 
я бы написал для всей строки сразу: drawtext(s, maxw-getStringWidth(s),ypos);
где s - строка текста, maxw-граница правого края, ypos - у координата
и для посимвольного вывода:
Код:

var
  cw : array[0..255] of integer;
  i,p,c : integer;
begin
  for i:=0 to 255 do cw[i]:=getStringWidth(chr(i));
  // затем подставляем сюда ширину русского шрифт желательно в cp1251 (win) или cp866 (dos)
  ...
  p:=maxw;
  for i:=length(s)-1 downto 0 do
  begin
    c:=ord(getChar(s,i));
    p:=p-cw[c];
    ... делаем преобразование русских символов в utf8 и выводим
    drawtext(chr(c),p,ypos);
  end;

___
p.s. png нужно оптимизировать, 500 кб слишком много. Лучше сразу делать графику под разрешение 176x208 (176x220) т.к. они наиболее распространены, или 128x128 чтоб работало практически везде.

cherepets 24.08.2009 12:32

Ответ: Разработка игры "DooM story"
 
Насчет png: часть картинок оптимизирована, а те для которых важна полупрозрачность - нет.
Все ресурсы сейчас 575кб. Думаю полная игра будет ~1.5мб.
Т.к. сначала делаю под 240х320, а там телефоны в основном мощные, то думаю это норм.

176х208 уже не так сильно распространены. Года 2 назад еще может быть, а сейчас уже почти у всех 240х320, так что я даж не запаривался о разрешении. И вобще уже стоило бы задумываться о разрешении как на 5800 и тач скрине.

AVIZO 24.08.2009 13:38

Ответ: Разработка игры "DooM story"
 
А собрать универсальную, под все разрешения от 128*128 до 320*240, никак?

cherepets 24.08.2009 14:18

Ответ: Разработка игры "DooM story"
 
AVIZO, мидлет паскаль умеет ресайз картинкам делать, векторную графику поддерживает или ты предлагаешь запихать туда графики на все разрешения (будет игра на 10 метров)?

В нашем (как и в большинстве других) случае придется делать несколько версий. Я ограничусь 2мя: 240х320 и 176х208. За 176х208 возьмусь когда закончу 240х320.

abcdef 24.08.2009 15:40

Ответ: Разработка игры "DooM story"
 
если делать средствами MP, то картики без прозрачности лучше соединить в однин файл, а разбивать на отдельные при загрузке. А лучше создать свой формат изображений с фиксированным набором цветов. в сети много советов как оптимизировать j2me архивы
__
p.s. на этом форуме у немногих есть устройства с разрешением 240х320, а смотреть в эмуляторе удовольствия мало

cherepets 24.08.2009 16:16

Ответ: Разработка игры "DooM story"
 
Важен не только размер но и качество. Поэтому у всех картинок разные палитры (в некоторых вообще 16цв).
Если загнать в одну, то придется использовать гораздо больше цветов (практически полный ргб) либо использовать в картинках меньше цветов (и от качества).

Так что лучше продолжать как есть.
К тому же сделано еще далеко не все. И о вещах второстепенной важности задумываться пока не стоит.

Опрос своего кл из аси (разрешение - люди):
<176x208 - 4
176х208/176х220 - 8
240х320 -19
>240х320 - 6

Dj_Alex 25.08.2009 01:23

Ответ: Разработка игры "DooM story"
 
да пускай делает 240х320 если у него тел с таким разрешением. я к примеру делаю для себя 176х220 и тестю на теле, а уже потом делаю версию 240х320. или сразу делаю мультискрин.

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

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

ну и текст можно было бы вывести стандартными средствами или использовать граф. шрифты. для каждой надписи картинку - слишком шикарно.

да и сжать изображения тоже не помешает. 128 цветов и индексной прозрачность спокойно хватит для java игры.

размер архива все же критичен для некоторых телефонов.

cherepets 25.08.2009 13:42

Ответ: Разработка игры "DooM story"
 
Цитата:

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

еще
в самом начале появляется лого cherepets game. в ресурсах лежат 2 изображения. один из которых затемненный. затемнить можно с помощью либы effects и тем самым второе изображение не нужно.
Хм, а вот насчет либы - мысль очень хорошая, и в меню пункты подсвечиваться будут тогда))

Цитата:

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

Цитата:

да и сжать изображения тоже не помешает. 128 цветов и индексной прозрачность спокойно хватит для java игры.
Часть изображений будет очень сильно сжата, а часть - вообще никак.
Думаю это вполне нормально.

Dj_Alex 25.08.2009 14:38

Ответ: Разработка игры "DooM story"
 
Цитата:

Сообщение от cherepets (Сообщение 116180)
Делал отдельными картинками, т.к. стандартными криво выходит - результат на моем телефоне, на чужом и на эмуле всегда разный выходит... Нормально только если в форме, но это не особо красиво.

юзай графические шрифты

cherepets 25.08.2009 14:52

Ответ: Разработка игры "DooM story"
 
Думаю разница будет невелика если я просто зажму картинки до максимума (2 цвета: белый + транспанент)
Собственно помощь показанная в демке - это и есть вообще вся помощь.


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

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