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

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

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

Ответ
 
Опции темы
Старый 22.12.2007, 22:32   #1
zheland
Разработчик
 
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений
(для 95 пользователей)
Выкладываем советы

Решил вот создать темку!
Что-бы долго не искать, сюда кладём советы!
Вот я пока один выложу!


Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо zheland за это полезное сообщение:
moka (23.01.2008), Randomize (28.01.2009)
Старый 23.12.2007, 09:32   #2
oxid
Нуждающийся
 
Регистрация: 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 за это полезное сообщение:
johnk (16.09.2008), Randomize (10.11.2009)
Старый 23.12.2007, 15:49   #3
zheland
Разработчик
 
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений
(для 95 пользователей)
Подмигивание Re: Выкладываем советы

Напоминаю, если вам совет понравятся,
авторам говорите СПАСИБО

При установке и в опциях игры обязательно должен быть пункт
, где будет папка SAVES
Потому-что при неисправности системы
или жёсткого диска с системой
все папки и файлы в папке Мои Документы могут исчезнуть
(У меня такое было!!!)
Сейчас обычно в играх сейвы сохраняются именно туда

Но если папку SAVES установить в папку с игрой
неопытные пользователи могут её не найти
и при неисправности жесткого диска с игрой -
и игра, и папка SAVES - удалятся

Я бы сделал возможность выбирать,
где должна лежать папка SAVES?
И сделать возможность сохранять в нескольких местах!
(Offline)
 
Ответить с цитированием
Старый 24.12.2007, 04:08   #4
MATVEY
AnyKey`щик
 
Регистрация: 15.12.2007
Сообщений: 1
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Выкладываем советы

дайте совет по работе сс хттп в мп....а именно,как сделать так чтоб текст из текстфилда переносился к примеру в водную строку в гугле???
За рание спасибо!!!
(Offline)
 
Ответить с цитированием
Старый 24.12.2007, 07:27   #5
oxid
Нуждающийся
 
Регистрация: 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
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Выкладываем советы

хм. а как ето разварачивает массив? по строкам, или по столбцам?
(Offline)
 
Ответить с цитированием
Старый 24.12.2007, 11:56   #7
AndruXa
Знающий
 
Регистрация: 10.09.2007
Сообщений: 262
Написано 6 полезных сообщений
(для 8 пользователей)
Re: Выкладываем советы

1)Не используйте стандартный блицевский террайн, подгружайте уровни мешами
2)Старайтесь использовать меньше блицевских комманд, старайтесь делать как можно больше математики(если это возможно), используя игру переменными, т.к обрабатывается это быстрее, да и когда сам придумаешь систему, проще баги исправлять
3)Не пренебрегайте большим количеством условий, т.к. условия-это основа языка.
4)Храните все настройки такие как характеристики оружия,бота...в отдельных текстовых файлах, так-же при создании квестов и диалогов текст тоже подгружайте-увеличивает скорость компиляции и работы
5)Не используйте MaskImage-глючно, лучше создать маску в Фотожопе
6)Не забывайте очищать переменные, удалять меши и текстуры, использование которых больше не предусматривается дабы ускорить работу
(Offline)
 
Ответить с цитированием
Старый 24.12.2007, 12:08   #8
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Re: Выкладываем советы

AndruXa, ты чего пьяный? раздел БлитзМакс.
__________________
(Offline)
 
Ответить с цитированием
Старый 24.12.2007, 13:26   #9
AndruXa
Знающий
 
Регистрация: 10.09.2007
Сообщений: 262
Написано 6 полезных сообщений
(для 8 пользователей)
Re: Выкладываем советы

AndruXa, ты чего пьяный? раздел БлитзМакс.
А я и не говорил, что про блиц3д пишу
(Offline)
 
Ответить с цитированием
Старый 24.12.2007, 15:05   #10
jimon
 
Сообщений: n/a
Re: Выкладываем советы

AndruXa
ну и про какой тогда движок ты писал ?
 
Ответить с цитированием
Старый 28.12.2007, 05:43   #11
oxid
Нуждающийся
 
Регистрация: 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
jimon
 
Сообщений: n/a
Ответ: Выкладываем советы

если нам надо сгенерировать случайно число 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
jimon
 
Сообщений: n/a
Ответ: Выкладываем советы

drunnik
кстати, вспомнил

игры пишут в папку мои документы потому что
если система в режиме пользователя, а не администратора
то приложения, в частности игры, не могут писать в свою папку
идинственое куда они могут писать ето в мои документы
(в пользовательскую папку)

так что будте осторожны - ваша игра просто не запустится
на зарубежных компьютерах с простыми пользователями
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо за это полезное сообщение:
FDsagizi (02.03.2008), Harter (08.04.2009), HolyDel (03.03.2008), Randomize (28.01.2009), zheland (03.03.2008)
Старый 16.09.2008, 12:15   #14
ICoder
AnyKey`щик
 
Аватар для ICoder
 
Регистрация: 15.09.2008
Адрес: Набережные Челны
Сообщений: 15
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Выкладываем советы

Давно тут никого не было...
Мой совет, как выводить сглаженный текст: использовать SetBlend(ALPHABLEND), перед отрисовкой текста с DrawText().
(Offline)
 
Ответить с цитированием
Старый 18.09.2008, 23:11   #15
Черный крыс
 
Сообщений: n/a
Ответ: Выкладываем советы

Думаю что самый лучший выход отрисовки части изображения - это блиттером Driver.DrawPrimitive() - но он тоже не идеален....и довольно спецефичен....но побыстрее...=)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выкладываем исходники по физике ODE buba01 3D-программирование 26 11.02.2009 23:01
Выкладываем шрифт. Данил Болтовня 10 28.08.2007 21:52
Выкладываем сюда свои программки ksm Основной форум 4 20.10.2006 16:48
полезные советы jimon Болтовня 28 23.11.2005 21:31


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


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