Вопросы товарища Likantrop'а (2) - Проблема - решение. GML и прочее. - Разработка игр на Game Maker (Simple Mode) - Форум Game Maker. Разработка игр.
Здравствуй Гость | Перейти на сайт

Главная | Форум | Регистрация | Войти
gmaker.net ;) [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 2 из 10«1234910»
Форум Game Maker. Разработка игр. » Разработка игр на Game Maker (Simple Mode) » Проблема - решение. GML и прочее. » Вопросы товарища Likantrop'а (Вопросы серьезные,... дважды! xD)
Вопросы товарища Likantrop'а
WertyXBOCT Дата: Суббота, 08.08.2009, 16:26 | Сообщение # 21
Каждый 5й пост мой
Группа: Страж
Сообщений: 2467
Статус: Offline
Я точно не помню. Но похоже на то, что orientation влияет на изображение, а не направление. На направление влияет гравитация, и еще какая то функция.


Blog:www.WeslomPo.ru
mailto: i@weslompo.ru
 
NewStrannik Дата: Суббота, 08.08.2009, 16:37 | Сообщение # 22
Всех уже задолбал
Группа: Проверенные
Сообщений: 808
Статус: Offline
Аддитив - тру поставь...
 
Likantrop Дата: Суббота, 08.08.2009, 16:41 | Сообщение # 23
Хрен заткнешь
Группа: Проверенные
Сообщений: 260
Статус: Offline
Quote (NewStrannik)
Аддитив - тру поставь...

Хм. Как ни странно, помогло.
Блин. Аддитив-то не всегда нужен...Иначе никак?
 
NewStrannik Дата: Суббота, 08.08.2009, 16:46 | Сообщение # 24
Всех уже задолбал
Группа: Проверенные
Сообщений: 808
Статус: Offline
Увы, но никак.
P.S.: А чем тебе аддитив не понравился? Это не блендинг. В справке написано: если аддитив не трушный, то аттрактор будет применять силу только к скорости, иначе к скорости и направлению.
 
Likantrop Дата: Четверг, 20.08.2009, 16:56 | Сообщение # 25
Хрен заткнешь
Группа: Проверенные
Сообщений: 260
Статус: Offline
Quote
additive отражает, влияет ли сила действия аттрактора на скорость и направление частиц в каждом шаге (истина) или только единожды (ложь). Когда добавляется частица - она ускоряется к аттрактору, тогда как "недобавляемая" перемещается к нему с постоянной скоростью.

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

Добавлено (20.08.2009, 16:56)
---------------------------------------------
ша опять начал ковырять свой редактор, нашел баг...
у меня такая шняга: создаю точку, затем вторую, при создании второй id первой записывается в переменную point. При создании любой точки ее id загоняется в список. Так вот...Что надо мне... Нужно при удалении точки убирать ее id из списка, плюс обнулить переменную point, равную id удаленной точки. Или даже не обнолить, а удалить.
Написал код, вроде бы все нормально, но не пашет...(

Code

with ( t) {
nomer=ds_list_find_index(STRIP,t.id);
ds_list_delete(STRIP,nomer);
for (i=0; i<ds_list_size(STRIP); i+=1;)
{poin=ds_list_find_value(STRIP,i);
if (poin=t.id){ds_list_delete(STRIP,i); exit}}
instance_destroy();}

У вас нет каких-нибудь мыслей на сей счет?
 
Ninja Дата: Четверг, 20.08.2009, 17:17 | Сообщение # 26
Хоть палкой гони
Группа: Проверенные
Сообщений: 683
Статус: Offline
Code
nomer=ds_list_find_index(STRIP,t.id);  
ds_list_delete(STRIP,nomer);

делает то же самое, что и
Code
for (i=0; i<ds_list_size(STRIP); i+=1;)  
{poin=ds_list_find_value(STRIP,i);  
if (poin=t.id){ds_list_delete(STRIP,i); exit}}

а где у тябя здесь обнуление point?


Oh, my God! You kill Kenny! You bastard!
 
Likantrop Дата: Пятница, 21.08.2009, 10:34 | Сообщение # 27
Хрен заткнешь
Группа: Проверенные
Сообщений: 260
Статус: Offline
Quote (Ninja)
делает то же самое, что и

нет же...в одном случае удаляю айди удаляемого, в другом перебираю все значения списка, проверяя не переменную poin...стоп! вот я тупой) блин, меня запутало похожее название переменной))
а я решил не обнулять, а прост удалять айди объекта, у которого должно быть point=0, у меня это равносильно...

Добавлено (21.08.2009, 10:34)
---------------------------------------------
очередной глупый вопрос)
Записываю переменные в файл.

Code

name=get_string('Введите имя для сохраняемого файла ','test_level');
file=file_text_open_write(name);
file_text_write_string(file,string(round(global.width))+' '+ string(round(global.height)));
file_text_writeln(file);
energy=get_string('Введите начальное количество энергии на уровень ','500')
file_text_write_string(file,string(round(energy)));
file_text_writeln(file);

Не записывается переменная energy, приходится ее вручную через блокнот вбивать...Не пойму, в чем дело. Название файла задается, ширина и высота правильно записываются...
 
WertyXBOCT Дата: Пятница, 21.08.2009, 10:57 | Сообщение # 28
Каждый 5й пост мой
Группа: Страж
Сообщений: 2467
Статус: Offline
Проблема в Round, ты применяешь его к строке. Вместо get_string используй get_integer;


Blog:www.WeslomPo.ru
mailto: i@weslompo.ru
 
Likantrop Дата: Пятница, 21.08.2009, 11:02 | Сообщение # 29
Хрен заткнешь
Группа: Проверенные
Сообщений: 260
Статус: Offline
О, круто, помогло!) Спасибо!
 
WertyXBOCT Дата: Пятница, 21.08.2009, 11:03 | Сообщение # 30
Каждый 5й пост мой
Группа: Страж
Сообщений: 2467
Статус: Offline
Еще один совет. Используй функции readln и writeln. Очень удобно.
readln:
Code
var t;
t = file_text_read_string(argument0);
file_text_readln(argument0);
return t;

writeln:
Code
file_text_write_string(argument0,string(argument1));
file_text_writeln(argument0);

и readArray
Code
//,>>,,,,
//string,name,delimiter,real?
var D,R,A,g,o,n,S,k,i,N;
S = argument0; N = argument1; D = argument2; R = argument3;
g = string_length(D); k = string_count(D,S); A = ds_list_create(); variable_local_set(argument1,A);
if R = true
for(i=0;i<k;i+=1) { n = string_pos(D,S); ds_list_add(A,real(string_copy(S,1,n-g))); S = string_delete(S,1,n);}
else for(i=0;i<k;i+=1){ o = string_pos(D,S); ds_list_add(A,string_copy(S,1,o-go)); S = string_delete(S,1,o); }

И вообще, скачай редактор анимации для DGH, нажми на вкладку параметры. Создай там файл твоей мечты), и нажми ctrl+R, получишь и файл для примера, и код для работы с ним.
прямая ссылка на последнюю версию.

Для примера создай вкладку, и нажми ctrl+o посмотри пример. По первой ссылке найдешь тему там написано как работать с редактром.



Blog:www.WeslomPo.ru
mailto: i@weslompo.ru
 
NewStrannik Дата: Пятница, 21.08.2009, 11:26 | Сообщение # 31
Всех уже задолбал
Группа: Проверенные
Сообщений: 808
Статус: Offline
Тоже дам парочку советов:
1) Если до жопы важна скорость игры, лучше простейшие функции не выводить в отдельный скрипт. Пускай скрипт и "разбухнет" чуток, зато на старых компах / слабых ноутах побыстрее пойдёт.
2) Скрипты - тормознутая вещь.
3) readArray <- посмотрите в этот скрипт, это пример того, как не надо называть переменные. xD


Сообщение отредактировал NewStrannik - Пятница, 21.08.2009, 12:13
 
Likantrop Дата: Понедельник, 24.08.2009, 12:26 | Сообщение # 32
Хрен заткнешь
Группа: Проверенные
Сообщений: 260
Статус: Offline
WertyXBOCT, readln и writeln, мне кажется хоть и удобнее, но мне не хочется это в скрипты выводить...да и буквы добавлять к коду))
readArray - не совсем понял, что делает скрипт)

Quote (WertyXBOCT)
И вообще, скачай редактор анимации для DGH, нажми на вкладку параметры. Создай там файл твоей мечты), и нажми ctrl+R, получишь и файл для примера, и код для работы с ним. прямая ссылка на последнюю версию. Для примера создай вкладку, и нажми ctrl+o посмотри пример. По первой ссылке найдешь тему там написано как работать с редактром.

Эм..Тоже не совсем понял, что там) Там лучший, чем у меня пример сохранения загрузки? Я прост не люблю чужой код, на его понимание уходит времени больше, чем на написание своего...

а теперь вопрос) итак:
Есть четыре параметра. Как выбрать из них два самых больших?
Сейчас мысль появилась такая: написать цикл, прогонять там сравнения или как-нибудь max'ы(правда вот ими ни разу не пользовался)

 
NewStrannik Дата: Понедельник, 24.08.2009, 13:14 | Сообщение # 33
Всех уже задолбал
Группа: Проверенные
Сообщений: 808
Статус: Offline
- Вбить параметры в список.
- Отсортировать список по убыванию.
- Взять первые два значения списка.
- Удалить список.
Первое, что в голову пришло.

readArray(string, name, delimiter, real?) вбивает в список "name" значения (числовые - если "real?" истинно) из строки "string" разделённых "delimiter" (строка, разумеется). Пример: readArray("1, 2, 3, 4", list, ", ", true) => list = [1, 2, 3, 4].



Сообщение отредактировал NewStrannik - Понедельник, 24.08.2009, 14:21
 
WertyXBOCT Дата: Понедельник, 24.08.2009, 13:21 | Сообщение # 34
Каждый 5й пост мой
Группа: Страж
Сообщений: 2467
Статус: Offline
max(arg1,arg2,arg3,ag4...arg16)
узнаешь самый большой, потом циклом проверяешь чтобы в оператор max он не вошел, до первого совпадения


Blog:www.WeslomPo.ru
mailto: i@weslompo.ru
 
Likantrop Дата: Понедельник, 24.08.2009, 13:26 | Сообщение # 35
Хрен заткнешь
Группа: Проверенные
Сообщений: 260
Статус: Offline
Quote (WertyXBOCT)
max(arg1,arg2,arg3,ag4...arg16)

Мне же надо два больших, то есть надо придумать, как исключить самый большой параметр при второй проверке...
NewStrannik, о,интересная идея =] спасибо
 
DreamRunner Дата: Понедельник, 24.08.2009, 13:31 | Сообщение # 36
Админ
Группа: Админы
Сообщений: 1382
Статус: Offline
1. Обычный цикл, в котором запоминаешь 2 макс.числа.
2. Занести числа в лист, отсортировать:) А это уже сказали)
 
WertyXBOCT Дата: Понедельник, 24.08.2009, 13:39 | Сообщение # 37
Каждый 5й пост мой
Группа: Страж
Сообщений: 2467
Статус: Offline
Quote (Likantrop)
Там лучший, чем у меня пример сохранения загрузки?

Нет, там программа для автоматического написания файлов различного формата, которые могут содержать в себе строковые, цифровые данные, а также массивы данных, и скриптов для их чтения. Т.е. ты делаешь заготовку файла, сохраняешь ее. Затем "рендришь", в резултьтате получаеются два файла, один то, как файл будет выглядить, второй - набор скриптов для чтения этого файла. Причем набор скриптов генерируется в автоматическом режиме(верней один скрипт для чтения).
Это может служить примером, но все же это действительно работающие скрипты, заточенные под один формат файлов. В принципе, их ты можешь менять как тебе удобно, и это не так сложно как кажется. В сотню раз проще чем написать свой собственный скрипт загрузки. Плюс, менять формат файлов ты можешь динамически.
Насчет, того что:
Quote
прост не люблю чужой код, на его понимание уходит времени больше, чем на написание своего...

Здесь дело не в коде, а в графическом представлении файла. На написании его у мну ушло недели две. Чистого времени часов 100.
Код считывания файла выглядит как:
Code

//Script generated by Unit Editor by WertyXBOCT
//        17.08.2009  18:55
// Argument[0] - file name
//(C) Wolfram Team 2009
var i,j,F;
if file_exists(argument0) F = file_text_open_read(argument0); else return -1;
file_text_readln(F); //file version
direction = real(readln(F));
x = real(readln(F));
y = real(readln(F));
file_text_close(F);

Все предельно просто, в редакторе я задал такие параметры, direction стандартное имя, тип целый не массив. И теперь вторая(!) строка считывается как переменная direction целочисленная
Quote
x = real(readln(F));

Аналогично с остальными переменными.

Я не понимаю, что вас в этом раздражает, и что здесь непонятно. Проще некуда.

По поводу массивов:

Quote (NewStrannik)
Не понял функцию.. По-моему, она не завершённая.

Поясни, почему она не завершенная?
Если не понимаете, просто используйте редактор файлов. Функции много раз проверены, и все возможные ошибки отловленны.


Blog:www.WeslomPo.ru
mailto: i@weslompo.ru
 
Ninja Дата: Понедельник, 24.08.2009, 14:55 | Сообщение # 38
Хоть палкой гони
Группа: Проверенные
Сообщений: 683
Статус: Offline
2 макс числа. вариант для извращенцев biggrin
Code
m1:=max(max(max(a,b),c),d);
m2:=max(max(max(a*(~(1<<((1-((((a*(((((a-b)|1)mod 2)+1)div 2)+b*(((((b-a)|1)mod 2)+1)div 2)-c*((((((c-d)|1)mod 2)+1)div 2))-d*((((((d-c)|1)mod 2)+1)div 2)))|1)mod 2)+1)div 2)*2+(1-((((a*(((((a-b)|1)mod 2)+1)div 2)+b*(((((b-a)|1)mod 2)+1)div 2)-c*((((((c-d)|1)mod 2)+1)div 2))-d*((((((d-c)|1)mod 2)+1)div 2)))|1)mod 2)+1)div 2*((((((a-b)|1)mod 2)+1)div 2)-(((((c-d)|1)mod 2)+1)div 2))-(((((c-d)|1)mod 2)+1)div 2))))&1),b*((~(1<<((1-((((a*(((((a-b)|1)mod 2)+1)div 2)+b*(((((b-a)|1)mod 2)+1)div 2)-c*((((((c-d)|1)mod 2)+1)div 2))-d*((((((d-c)|1)mod 2)+1)div 2)))|1)mod 2)+1)div 2)*2+(1-((((a*(((((a-b)|1)mod 2)+1)div 2)+b*(((((b-a)|1)mod 2)+1)div 2)-c*((((((c-d)|1)mod 2)+1)div 2))-d*((((((d-c)|1)mod 2)+1)div 2)))|1)mod 2)+1)div 2*((((((a-b)|1)mod 2)+1)div 2)-(((((c-d)|1)mod 2)+1)div 2))-(((((c-d)|1)mod 2)+1)div 2))))&2)>>1)),c*((~(1<<((1-((((a*(((((a-b)|1)mod 2)+1)div 2)+b*(((((b-a)|1)mod 2)+1)div 2)-c*((((((c-d)|1)mod 2)+1)div 2))-d*((((((d-c)|1)mod 2)+1)div 2)))|1)mod 2)+1)div 2)*2+(1-((((a*(((((a-b)|1)mod 2)+1)div 2)+b*(((((b-a)|1)mod 2)+1)div 2)-c*((((((c-d)|1)mod 2)+1)div 2))-d*((((((d-c)|1)mod 2)+1)div 2)))|1)mod 2)+1)div 2*((((((a-b)|1)mod 2)+1)div 2)-(((((c-d)|1)mod 2)+1)div 2))-(((((c-d)|1)mod 2)+1)div 2))))&4)>>2)),d*((~(1<<((1-((((a*(((((a-b)|1)mod 2)+1)div 2)+b*(((((b-a)|1)mod 2)+1)div 2)-c*((((((c-d)|1)mod 2)+1)div 2))-d*((((((d-c)|1)mod 2)+1)div 2)))|1)mod 2)+1)div 2)*2+(1-((((a*(((((a-b)|1)mod 2)+1)div 2)+b*(((((b-a)|1)mod 2)+1)div 2)-c*((((((c-d)|1)mod 2)+1)div 2))-d*((((((d-c)|1)mod 2)+1)div 2)))|1)mod 2)+1)div 2*((((((a-b)|1)mod 2)+1)div 2)-(((((c-d)|1)mod 2)+1)div 2))-(((((c-d)|1)mod 2)+1)div 2))))&8)>>3));

a,b,c,d - переменные. m1 - первое макс число, m2 - второе макс число


Oh, my God! You kill Kenny! You bastard!
 
Likantrop Дата: Понедельник, 24.08.2009, 15:04 | Сообщение # 39
Хрен заткнешь
Группа: Проверенные
Сообщений: 260
Статус: Offline
Ninja, wacko ужас какой!)

Хм...Опять вопрос) Есть квадрат, который отрисовывается линиями. Имея координаты четырех точек квадрата, нужно найти самую нижнюю линию. В случае с двумя одинаковыми линиями отрисовывать ту, что правее...

Добавлено (24.08.2009, 15:04)
---------------------------------------------
Пытался найти два наибольших игрека и их использовать, но так не катит, ибо при создании квадрата я его кручу как хочу и иксы с игреками скачут...Блин...ну и объяснил biggrin

 
Ninja Дата: Понедельник, 24.08.2009, 15:07 | Сообщение # 40
Хоть палкой гони
Группа: Проверенные
Сообщений: 683
Статус: Offline
ищешь самую нижнюю точку по y и ту которая находится на мин расстоянии по y от нее. через эти 2 точки проходит нижняя линия

Добавлено (24.08.2009, 15:07)
---------------------------------------------

Quote (Likantrop)
Пытался найти два наибольших игрека и их использовать, но так не катит, ибо при создании квадрата я его кручу как хочу и иксы с игреками скачут...Блин...ну и объяснил

видимо что-то неправильно делал, т.к. такой вариант должен работать


Oh, my God! You kill Kenny! You bastard!
 
Форум Game Maker. Разработка игр. » Разработка игр на Game Maker (Simple Mode) » Проблема - решение. GML и прочее. » Вопросы товарища Likantrop'а (Вопросы серьезные,... дважды! xD)
Страница 2 из 10«1234910»
Поиск:



Сообщество Gmaker.SU 2005-2012
Используются технологии uCoz
Простой вход