|
22.12.2007, 22:32
|
#1
|
Разработчик
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений (для 95 пользователей)
|
Выкладываем советы
Решил вот создать темку!
Что-бы долго не искать, сюда кладём советы!
Вот я пока один выложу!
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.
|
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо zheland за это полезное сообщение:
|
|
23.12.2007, 09:32
|
#2
|
Нуждающийся
Регистрация: 20.08.2006
Сообщений: 54
Написано 3 полезных сообщений (для 4 пользователей)
|
Re: Выкладываем советы
Запись в строку по индексам – sting[2]=78
Одним из недостатков БМ является невозможность индексного доступа к строке для записи, как в массивах. Объяснение, почему Марк не делает нормальный индексный доступ к строкам, а только чтение, меня просто развеселило: он заботится о том, что, если мы передаем строку в функцию, ее там кто-то может изменить. А типа чтобы ее не изменили стопроцентно надо ее копировать, а не передавать через ссылку. А это целых 7 лишних символов каждый раз набирать: ".Copy()". Вопрос а нафик нам вообще надо сохранять строку? Или мы настолько тупы, что не знаем, что пишем? И нам ни за что не известно будет ли функция менять строку или нет? Ппц просто. Я уже молчу про то, что это решается на уровне языка элементарно, и не в одном языке делалось: аргумент функции объявляется как ссылка или как значение. Если ссылка – передаем ссылку на строку и она может быть изменена после работы функции. Если значение – то строка копируется и что там функция будет с ней делать, нас не волнует: у нас оригинал, а там - копия. Все блин. Все давно известно, ничего не надо изобретать и писать лишних 7 символов тоже не надо. Он наверное пропитался духом псевдо-любви к умалишенным в ущерб неумалишенных, так культивируемой в последнее время в США. Хотя это странно - он то не там совсем живет. Марк типо сильно боится дураков-программистов и сильно о них заботится.
Ну мы не дураки, поэтому не только не будем делать глупостей со строками, а даже будем с ними делать то, что нам не дадено, но нужно:
Local p:Int Ptr = Int Ptr(Varptr(str))
Local pchar:Short Ptr = Short Ptr(p[0])
pchar :+ 6'this offset depends on String structure
Вот так в pchar мы получаем указатель на строку - у кого есть желание может оформить это функцией.
А вот и рабочий примерчик:
Local str$ = "Hello"
Print str
Local p:Int Ptr = Int Ptr(Varptr(str))
Local pchar:Short Ptr = Short Ptr(p[0])
pchar :+ 6'this offset depends on String structure
pchar[0]=Asc("H")
pchar[1]=Asc("e")
pchar[2]=Asc(" ")
pchar[3]=Asc("h")
pchar[4]=Asc("e")
Print str
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо oxid за это полезное сообщение:
|
|
23.12.2007, 15:49
|
#3
|
Разработчик
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений (для 95 пользователей)
|
Re: Выкладываем советы
Напоминаю, если вам совет понравятся,
авторам говорите СПАСИБО
При установке и в опциях игры обязательно должен быть пункт
, где будет папка SAVES
Потому-что при неисправности системы
или жёсткого диска с системой
все папки и файлы в папке Мои Документы могут исчезнуть
(У меня такое было!!!)
Сейчас обычно в играх сейвы сохраняются именно туда
Но если папку SAVES установить в папку с игрой
неопытные пользователи могут её не найти
и при неисправности жесткого диска с игрой -
и игра, и папка SAVES - удалятся
Я бы сделал возможность выбирать,
где должна лежать папка SAVES?
И сделать возможность сохранять в нескольких местах!
|
(Offline)
|
|
24.12.2007, 04:08
|
#4
|
AnyKey`щик
Регистрация: 15.12.2007
Сообщений: 1
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Выкладываем советы
дайте совет по работе сс хттп в мп....а именно,как сделать так чтоб текст из текстфилда переносился к примеру в водную строку в гугле???
За рание спасибо!!!
|
(Offline)
|
|
24.12.2007, 07:27
|
#5
|
Нуждающийся
Регистрация: 20.08.2006
Сообщений: 54
Написано 3 полезных сообщений (для 4 пользователей)
|
Re: Выкладываем советы
Насчет текстфилда ничего не знаю. Даю хинт по массивам.
Быстрый обход многомерного массива.
Если мы задаем многомерный массив в виде array:Type[a,b,...,n], то пройти его весь можно простым eachin!
Пример:
Local a%[1,2,3]
For Local i% = EachIn a
Print i
Next
|
(Offline)
|
|
24.12.2007, 10:47
|
#6
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Выкладываем советы
хм. а как ето разварачивает массив? по строкам, или по столбцам?
|
(Offline)
|
|
24.12.2007, 11:56
|
#7
|
Знающий
Регистрация: 10.09.2007
Сообщений: 262
Написано 6 полезных сообщений (для 8 пользователей)
|
Re: Выкладываем советы
1)Не используйте стандартный блицевский террайн, подгружайте уровни мешами
2)Старайтесь использовать меньше блицевских комманд, старайтесь делать как можно больше математики(если это возможно), используя игру переменными, т.к обрабатывается это быстрее, да и когда сам придумаешь систему, проще баги исправлять
3)Не пренебрегайте большим количеством условий, т.к. условия-это основа языка.
4)Храните все настройки такие как характеристики оружия,бота...в отдельных текстовых файлах, так-же при создании квестов и диалогов текст тоже подгружайте-увеличивает скорость компиляции и работы
5)Не используйте MaskImage-глючно, лучше создать маску в Фотожопе
6)Не забывайте очищать переменные, удалять меши и текстуры, использование которых больше не предусматривается дабы ускорить работу
|
(Offline)
|
|
24.12.2007, 12:08
|
#8
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Re: Выкладываем советы
AndruXa, ты чего пьяный? раздел БлитзМакс.
|
(Offline)
|
|
24.12.2007, 13:26
|
#9
|
Знающий
Регистрация: 10.09.2007
Сообщений: 262
Написано 6 полезных сообщений (для 8 пользователей)
|
Re: Выкладываем советы
AndruXa, ты чего пьяный? раздел БлитзМакс.
|
А я и не говорил, что про блиц3д пишу
|
(Offline)
|
|
24.12.2007, 15:05
|
#10
|
|
Re: Выкладываем советы
AndruXa
ну и про какой тогда движок ты писал ?
|
|
|
28.12.2007, 05:43
|
#11
|
Нуждающийся
Регистрация: 20.08.2006
Сообщений: 54
Написано 3 полезных сообщений (для 4 пользователей)
|
Re: Выкладываем советы
Как просто нарисовать часть изображения.
Function drawimagerect (image:TImage,x#,y#,xs%,ys%,width%,height%)
DrawImage LoadImage ( PixmapWindow( LockImage(image), xs, ys, width, height) ),x,y
UnlockImage image
End Function
Способ основан на том, что в качестве исходного объекта для LoadImage можно передавать класс TPixmap.
Команду PixmapWindow(...) можно заменить на аналог с использованием ООП: image.pixmaps[0].window( xs, ys, width, height ). При этом не надо делать после отрисовки UnlockImage.
Недостаток этого способа - низкое быстродействие, т.к. при поличении окна от TPixmap, происходит копирование части изображения самим процессором, без использования аппаратного ускорения.
Достоинство - простота и краткость.
|
(Offline)
|
|
13.01.2008, 02:04
|
#12
|
|
Ответ: Выкладываем советы
если нам надо сгенерировать случайно число A - M раз, чило B - K раз и тд
то смотрим суда
вот сам код в два типа
Type TGeneratorPair
Field Number%
Field Count%
End Type
Type TGeneratorNums
Field List:TList
Method AddNum(num%,count%)
If Not List Then List = New TList
Local pair:TGeneratorPair = New TGeneratorPair
pair.Number = num
pair.Count = count
List.AddLast(pair)
End Method
Method GetValue%()
If Not List Then Return -1
Local pair:TGeneratorPair = TGeneratorPair(List.ValueAtIndex(Rand(0,List.Count()-1)))
pair.Count:-1
If pair.Count < 1 Then List.Remove(pair)
If List.Count() = 0 Then List = Null
Return pair.Number
End Method
End Type
вот как юзать (вбивал в браузере .. )
Local gen:TGeneratorNums = new TGeneratorNums
' AddNum(число , сколько раз)
gen.AddNum(1,4)
gen.AddNum(4,5)
gen.AddNum(7,6)
Local num%
While num <> -1
num = gen.GetValue()
if num <> -1 then debuglog num
wend
gen = null
операция List.ValueAtIndex тормозная в стандартной либе БМ
потому для максимального быстродействия списком юзаем мою модификацию
|
|
|
02.03.2008, 15:07
|
#13
|
|
Ответ: Выкладываем советы
drunnik
кстати, вспомнил
игры пишут в папку мои документы потому что
если система в режиме пользователя, а не администратора
то приложения, в частности игры, не могут писать в свою папку
идинственое куда они могут писать ето в мои документы
(в пользовательскую папку)
так что будте осторожны - ваша игра просто не запустится
на зарубежных компьютерах с простыми пользователями
|
|
|
Эти 5 пользователя(ей) сказали Спасибо за это полезное сообщение:
|
|
16.09.2008, 12:15
|
#14
|
AnyKey`щик
Регистрация: 15.09.2008
Адрес: Набережные Челны
Сообщений: 15
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Выкладываем советы
Давно тут никого не было...
Мой совет, как выводить сглаженный текст: использовать SetBlend(ALPHABLEND), перед отрисовкой текста с DrawText().
|
(Offline)
|
|
18.09.2008, 23:11
|
#15
|
|
Ответ: Выкладываем советы
Думаю что самый лучший выход отрисовки части изображения - это блиттером Driver.DrawPrimitive() - но он тоже не идеален....и довольно спецефичен....но побыстрее...=)
|
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:52.
|