Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax

Ответ
 
Опции темы
Старый 08.02.2011, 22:17   #46
Greenstyler
AnyKey`щик
 
Регистрация: 18.10.2009
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Всем здрасьте.
Собственно, всё очень просто - не отображаются русские буквы. Совсем. Делаю вроде всё, как положено (самый простой пример):

Global Font:TImageFont

Graphics 800, 600

Font = LoadImageFont( "Arial", 30 )
SetImageFont( Font )

Repeat

DrawText( "Текст.", 400, 300 )

Flip
Cls

Until AppTerminate()
В результате получаю лишь точку на экране, все русские буквы отсутствуют. Пробовал прописывать шрифт и как ArialCyr, и как Airal.ttf - без разницы. То же самое и с шрифтами, скачанными из интернета, и с остальными системными.
Прошу помочь. И, если где-то на форуме есть решение, просьба кинуть линк - поиск не помог, проблема обсуждалась не раз, но либо так и не была решена, либо была решена на Blitz3d, а это не то.
(Offline)
 
Ответить с цитированием
Старый 08.02.2011, 22:31   #47
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Текст надо в Юникод передавать.
__________________
(Offline)
 
Ответить с цитированием
Старый 08.02.2011, 22:33   #48
baton4ik
Дэвелопер
 
Аватар для baton4ik
 
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений
(для 1,962 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Добавь
Import brl.FreeTypeFont
в начале
"Arial" измени на "Arial.ttf" и кинь шрифт в папку с проектом.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Greenstyler (08.02.2011)
Старый 08.02.2011, 23:08   #49
Greenstyler
AnyKey`щик
 
Регистрация: 18.10.2009
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

baton4ik
Спасибо, помогло. Теперь будем экспериментировать на скачанных шрифтах...
(Offline)
 
Ответить с цитированием
Старый 19.02.2011, 20:47   #50
Amatsu
Дэвелопер
 
Аватар для Amatsu
 
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений
(для 2,706 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Суперстрикт рулит! ^^ Это так, вопль души *убежал дальше копать туториалы по работе с пользовательскими типами*
(Offline)
 
Ответить с цитированием
Старый 19.02.2011, 20:57   #51
Amatsu
Дэвелопер
 
Аватар для Amatsu
 
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений
(для 2,706 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Вот, вопрос, можете объяснить, в чем разница между методом (Method) и функцией (Function) внутри описания пользовательского типа?
(Offline)
 
Ответить с цитированием
Старый 19.02.2011, 21:44   #52
Reks888
Дэвелопер
 
Аватар для Reks888
 
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений
(для 1,985 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Метод работает непосредственно с объектом типа, от которого было обращение
т.к.
...
Method GetSave()
Return Save
End Method
...
map1.GetSave()
map2.GetSave()
Так map1 вернет свой map1.Save, а map2 вернет свой map2.Save.
Функции внутри типов ничем не отличаются от функций снаружи типов, кроме того что эти функции можно вызвать от типа(вроде TMap.MyFunc() или map1.MyFunc())
Она НЕ ДАЕТ доступа к переменным внутри типа, тоесть придется писать что-то вроде
Function Create()
t.TMap=New TMap
t.Save=100500
Return t
End Function
Удобно использовать для функций создания и деструкта элемента типа. Для остального - лучче методы
__________________
>type C:\MyProj\*
www.sypiac.weebly.com
>
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Amatsu (19.02.2011)
Старый 19.02.2011, 21:55   #53
Amatsu
Дэвелопер
 
Аватар для Amatsu
 
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений
(для 2,706 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Спасибо большое То что нужно
(Offline)
 
Ответить с цитированием
Старый 19.02.2011, 22:03   #54
baton4ik
Дэвелопер
 
Аватар для baton4ik
 
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений
(для 1,962 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Грубо говоря, функции - глобальные методы.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Amatsu (19.02.2011)
Старый 19.02.2011, 23:37   #55
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,354
Написано 2,470 полезных сообщений
(для 6,850 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Функции внутри типа это обычные функции, только они ещё имеют быстрый доступ к внутренним глобальным переменным внутри типа.
Type Foo
  
Global Bar:Int 0
  
Function IncBar()
    
Bar:+1
  End 
Function
EndType

Foo
.Bar 1
Foo
.IncBar()
Foo.IncBar()

Print 
Foo.Bar 'выдаёт 3 
Методы вызываются непосредственно для экземпляра типа.
Псевдокод:
Type Мужык
   Field x
:int 0
   Field y
:int 0

   Method ИдиВверх
()
     
y:-1
   EndMethod
   Method ИдиВниз
()
     
y:+1
   EndMethod

   Method ИдиВЛево
()
     
x:-1
   EndMethod
   Method ИдиВПраво
()
     
x:+1
   EndMethod
EndType


Local SuperHero
:Мужык = New Мужык
SuperHero
.ИдиВниз()
SuperHero.ИдиВниз()
SuperHero.ИдиВниз()
SuperHero.ИдиВЛево()
SuperHero.ИдиВЛево()

Print 
SuperHero." , " SuperHero.' выдаёт -2 , 3 
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Amatsu (20.02.2011)
Старый 20.02.2011, 00:51   #56
Amatsu
Дэвелопер
 
Аватар для Amatsu
 
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений
(для 2,706 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Кажется разобрался. Всем спасибо. В итоге получается даже удобнее, чем в блитце
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nex (07.02.2012)
Старый 20.02.2011, 09:43   #57
Amatsu
Дэвелопер
 
Аватар для Amatsu
 
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений
(для 2,706 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Пытаюсь писать свой пользовательский тип с функциями и методами. При компиляции, если я обратился к функции CreateBattleCharacter, выдает Attempt to access field or method of Null object на строчке
bchar_list.AddLast bchar
Если не трудно, подкиньте идею, где может быть косяк. Сам код:
Global bchar_list:TList = New TList
Global bchar_list_count:Int
Type TBattleCharacter
  Field model:Int, anim_mesh:Int
  Field selected:Byte
  Field name:String
  Field level:Int, life:Int, life_max:Int

 
  ' Создание персонажа
  Function CreateBattleCharacter:TBattleCharacter(variant:String, selected:Byte, level:Int, life:Int)
    Select variant
  	  Case "player"
        Local bchar:TBattleCharacter = New TBattleCharacter

        ' Определение переменных
        bchar.selected = selected
	    bchar.level = level

        ' Определение постоянных
        bchar.name = variant

        ' Определение параметров
        bchar.life_max = 60 + bchar.level * 27
        bchar.life = life
        If bchar.life > bchar.life_max
          bchar.life = bchar.life_max
        ElseIf bchar.life < 1
          bchar.life = 1
        EndIf

        ' Загрузка моделей
        bchar.model = xCreateCube()
        xScaleMesh bchar.model, 5, 14, 5
        xEntityAddBoxShape bchar.model, 10

        bchar_list.AddLast bchar
        bchar_list_count:+1
    End Select
  End Function

  ' Обработка персонажа
  Method Update()
    If selected = 1 Then MouseLook(model)
  End Method

End Type
End
(Offline)
 
Ответить с цитированием
Старый 20.02.2011, 10:21   #58
baton4ik
Дэвелопер
 
Аватар для baton4ik
 
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений
(для 1,962 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

bchar_list = CreateList()
И лучше сделай не глобальный список, а глобальную переменную типа для него:

Type TBattleCharacter
Global list:TList = CreateList()

'...

TBattleCharacter.list.AddLast bchar

'...
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Amatsu (20.02.2011)
Старый 20.02.2011, 10:42   #59
Amatsu
Дэвелопер
 
Аватар для Amatsu
 
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений
(для 2,706 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Сообщение от baton4ik Посмотреть сообщение
bchar_list = CreateList()
И лучше сделай не глобальный список, а глобальную переменную типа для него:

Type TBattleCharacter
Global list:TList = CreateList()

'...

TBattleCharacter.list.AddLast bchar

'...
Спасибо, помог второй вариант
(Offline)
 
Ответить с цитированием
Старый 20.02.2011, 17:25   #60
JeanWinters
Знающий
 
Регистрация: 22.12.2007
Сообщений: 223
Написано 22 полезных сообщений
(для 51 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Правда ли, что использование описания переменной в пределах пользовательского типа называется "статичной переменной" , так же как и функция, описанная в этих пределах именуется "статичной функцией"? От куда такая терминология сложилась? Еще вопрос: можно ли использовать статичные константы в типе и другие типы в типе?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com