IPB

Здравствуйте, гость ( Вход | Регистрация )

9 страниц V  « < 6 7 8 9 >  
Reply to this topicStart new topic
> Алгоритмы и формулы
Guevara-chan
сообщение 24 Jun 2009, 17:31 (Сообщение отредактировал Chrono Syndrome - 24 Jun 2009, 17:46)
Сообщение #141

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5936 раз




Цитата
Вот я оп чем и писал, все умных строят, а чуваку скорее всего что-то до нельзя простое надо, тупо список статики по 3-4 инта.

Что надо чуваку толком не знает никто, включая самого чувака. Представленная задача решается десятками способов различной степени извращенности, тогда как мы тут вслепую гадали на всемогущей ф-ии Random, какому именно из них чувака хотят обучить. И да, мы в конце-концов действительно предположили, что преподаватель попросту сам не до конца понял что он сказал, после чего DracoLich'у было вновь предложено реализовать сортировку через связанный список. Вот только лично я теперь, честно говоря, ожидаю дальнейших сюрпризов...


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
DracoLich
сообщение 24 Jun 2009, 21:04
Сообщение #142

Banished
Сообщений: 1 782
Спасибо сказали: 116 раз




связанные списки кажутся нормальным вариантом. Посмотрим, что он скажет на такое sleep.gif
Цитата
>и массивы (именно массивы) использовать запрещено.

>она не влезет в память.

нельзя использовать массив для хранения ВСЕЙ базы. в остальных случаях можно


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Монца
сообщение 24 Jun 2009, 23:02
Сообщение #143

good news, everyone!
Сообщений: 918
Спасибо сказали: 93 раза




Хм, но логически можно со списками обращаться точно так же как с массивами - написать обертки.


--------------------
этъя опять
Go to the top of the pageAdd Nick
 
+Quote Post
FBX
сообщение 16 Aug 2010, 09:51
Сообщение #144

🐓🐓🐓🐓🐓🐓🐓
Сообщений: 1 845
Спасибо сказали: 1570 раз




В OpenGL чтобы использовать всю текстуру, в glTexCoord2f подставляются значения 0 и 1. Вопрос - как написать формулу для вычленения определенного кадра из текстуры? Расположены кадры в ряд, значит по одной координате все очевидно. Если просто разделить номер текущего кадра на их количество, возникают неточности - "заезжает" на соседний...


--------------------
using namespace fbx;
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 16 Aug 2010, 19:07 (Сообщение отредактировал tolich - 16 Aug 2010, 23:24)
Сообщение #145

😸🧡✊✌️
Сообщений: 16 395
Спасибо сказали: 3223 раза




Используй число кадров РАВНОЕ 2n, тогда никаких ошибок округления не будет.

EDIT: впрочем, если текстура между пикселями сглаживается, это не спасает… сглаживание лучше отключить или чуть-чуть, на полпикселя, сдвигать текстурные координаты "внутрь" кадра.


--------------------
Я слежу за тобой!
* tolic.narod.ru

Цитата
Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел.
Борис "Бонус" Репетур, "От винта!", выпуск 38.
Go to the top of the pageAdd Nick
 
+Quote Post
FBX
сообщение 16 Aug 2010, 22:22
Сообщение #146

🐓🐓🐓🐓🐓🐓🐓
Сообщений: 1 845
Спасибо сказали: 1570 раз




CODE

procedure RotateEast(inp: Pointer; res: Pointer; size: integer);
asm //eax,edx,ecx
pushad
mov edi,size //сохранить размерность
mov esi,0

@@loop:
push edi
mov ebx,[eax] //inp
imul edi,4
imul edi,ecx
add edi,edx
mov [edi+esi*4],ebx //res
pop edi
add eax,4
dec ecx //ecx - оптимально номер горизонтальной линии
jnz @@loop
push edi
imul edi,4
add ebx,edi
pop edi
mov ecx,edi
inc esi
cmp esi,edi //esi - доп.смещение вправо
jle @@loop

popad
end;

procedure RotateSouth(inp: Pointer; res: Pointer; size: integer);
asm //eax,edx,ecx
pushad
imul ecx,ecx
imul ecx,4
sub ecx,4

@@loop:
mov ebx,[eax] //inp
mov [edx+ecx],ebx //res
add eax,4
sub ecx,4
cmp ecx,0
jg @@loop

popad
end;

procedure RotateWest(inp: Pointer; res: Pointer; size: integer);
asm

end;


function PixelRotate(inp: TDataArray; a: integer; size: integer): TDataArray;
var
i: integer;
v: Pointer;
new: TDataArray;
begin
SetLength(new,length(inp));
for i:=0 to high(inp) do begin
v:=nil;
GetMem(v,size*size*4);
case a of
//1: RotateEast(inp[i],v,size);
2: RotateSouth(inp[i],v,size);
//3: RotateWest(inp[i],v,size);
else CopyMemory(inp[i],v,size);
end;
new[i]:=v;
end;
result:=new;
end;


Мне нужно написать поворот 32-битного изображения в памяти. ЧТо я делаю не так? Какая-то хрень с памятью в RotateEast (при чем вылетает где-то на GetMem, отладчик нифига не показывает), и кривота результата в RotateSouth.
Ситуация упрощается тем, что все пиксели размещаются в памяти плотно, т.к. размеры картинки соответствующие.


--------------------
using namespace fbx;
Go to the top of the pageAdd Nick
 
+Quote Post
Etoprostoya
сообщение 17 Aug 2010, 07:52
Сообщение #147

Etoprostostatus
Сообщений: 8 573
Спасибо сказали: 15945 раз




Замени локальные пуши и попы на сохранение в стеке. Дальше не стал разбираться - комментов мало.

Сохранение в стеке - что-то вроде:

var temp: integer;
__asm{
mov temp, edi;
...
mov edi, temp;
}


--------------------
- Да ну!?
- Horn of the Argali гну!
Go to the top of the pageAdd Nick
 
+Quote Post
FBX
сообщение 17 Aug 2010, 13:38
Сообщение #148

🐓🐓🐓🐓🐓🐓🐓
Сообщений: 1 845
Спасибо сказали: 1570 раз




Переделал немного:

CODE

procedure RotateEast(inp: Pointer; res: Pointer; size: integer);
var // eax edx ecx
i: integer;
asm
pushad
mov i,ecx //сохранить размерность
mov esi,0 //дополнительный счетчик от 0 до (size-1)

@@loop:
dec ecx //ecx: счетчик от (size-1) до 0
mov ebx,[eax] //inp - получить пиксель
mov edi,i //вычисление адреса конечной точки:
imul edi,4 //4*номер_строки*размер_изображения
imul edi,ecx //ecx - номер строки
add edi,edx //edx = res (адрес картинки-приемника)
mov [edi+esi*4],ebx //добавление к адресу позиции в строке*4
add eax,4 //смещение указателя источника (1 пиксель прочитан)
cmp ecx,0 //ecx - номер горизонтальной линии приемника
jne @@loop //возврат к циклу

mov ecx,i //восстановление счетчика внутреннего цикла
inc esi //верхний цикл
cmp esi,i //esi - доп.смещение вправо
jne @@loop

popad
end;


Добавлено ([mergetime]1282041519[/mergetime]):
кажется, работает


--------------------
using namespace fbx;
Go to the top of the pageAdd Nick
 
+Quote Post
nosferatu
сообщение 04 Sep 2010, 14:03
Сообщение #149

Immortal
Сообщений: 9 629
Спасибо сказали: 12594 раза




Кто знает, как написать прогу на паскале, которая будет выбирать случайно один из двух вариантов с указанной вероятностью. А также выбирать один из нескольких вариантов с равной вероятностью.


--------------------
Космические мана-корабли бороздят просторы мана-вселенной,
Начиная с сегодня "мана" - это офигенно.
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 04 Sep 2010, 15:39
Сообщение #150

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




кажется, random
Go to the top of the pageAdd Nick
 
+Quote Post
nosferatu
сообщение 05 Sep 2010, 14:10 (Сообщение отредактировал nosferatu - 05 Sep 2010, 14:46)
Сообщение #151

Immortal
Сообщений: 9 629
Спасибо сказали: 12594 раза




Как-то так?
Выбор одного из двух вариантов да - 60%, нет - 40%
Код
Program 1
var
a,k,S1,S2: integer;
begin
k:=0;
randomize;
repeat
a:=random(1);
inc(k);
If k<60
Then S1:= S1+a;
Else
k:=0;
randomize;
repeat
a:=random(1);
inc(k);
If k<40
Then S2:=S2+a;
Else
If S1<S2
Then Write('Yes');
Else Write('No');
end.

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


--------------------
Космические мана-корабли бороздят просторы мана-вселенной,
Начиная с сегодня "мана" - это офигенно.
Go to the top of the pageAdd Nick
 
+Quote Post
Berserker
сообщение 05 Sep 2010, 14:14
Сообщение #152

Immortal
Сообщений: 1 468
Спасибо сказали: 1153 раза




А для чего тебе это?


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
nosferatu
сообщение 05 Sep 2010, 14:22 (Сообщение отредактировал nosferatu - 05 Sep 2010, 14:45)
Сообщение #153

Immortal
Сообщений: 9 629
Спасибо сказали: 12594 раза




Для ФРПГ, лень с кубиками возиться.

Добавлено ([mergetime]1283685744[/mergetime]):
Немного поправил, чтобы можно было вводить вероятность
Код
Program 1
var
a,k,S1,S2: integer; V:real;
begin
read(V);
If V>99
Then V:=99;
k:=0;
randomize;
repeat
a:=random(1);
inc(k);
If k<v
Then S1:= S1+a;
Else
k:=0;
randomize;
repeat
a:=random(1);
inc(k);
If k<100-V
Then S2:=S2+a;
Else
If S1<S2
Then Write('Yes');
Else Write('No');
end.


--------------------
Космические мана-корабли бороздят просторы мана-вселенной,
Начиная с сегодня "мана" - это офигенно.
Go to the top of the pageAdd Nick
 
+Quote Post
Berserker
сообщение 05 Sep 2010, 14:38
Сообщение #154

Immortal
Сообщений: 1 468
Спасибо сказали: 1153 раза




Держи: http://www.mediafire.com/download.php?cecqhad5amw1x70


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
nosferatu
сообщение 05 Sep 2010, 14:59
Сообщение #155

Immortal
Сообщений: 9 629
Спасибо сказали: 12594 раза




Ну, можно и так)))


--------------------
Космические мана-корабли бороздят просторы мана-вселенной,
Начиная с сегодня "мана" - это офигенно.
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 05 Sep 2010, 20:52
Сообщение #156

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




лучше используй рандомную прогу Берса (или сайт про ГСЧ), а то у тебя в коде действительно фигня. например, рандомайз только раз надо делать.
Go to the top of the pageAdd Nick
 
+Quote Post
packa
сообщение 05 Sep 2010, 20:56
Сообщение #157

Immortal
Сообщений: 3 301
Спасибо сказали: 2643 раза




Теперь я понимаю, почему мне всегда говорят TAB'ить код smile.gif


--------------------
Удалено Администрацией. Браузеры жаловались на вредоносное ПО.
Ссылка на оригинальное изображение: http://herоeslibrary.nеt/Site_images/admin.jpg
Ссылка на сайт по нажатию баннера: http://herоeslibrary.nеt

(ссылки содержат кириллические символы вместо оригинальных)

Видишь бяку, - упрости! (с) кто-то из выдающихся математиков)
Учи матан & Сходи с ума (с) архидедус


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
nosferatu
сообщение 05 Sep 2010, 21:00 (Сообщение отредактировал nosferatu - 05 Sep 2010, 21:00)
Сообщение #158

Immortal
Сообщений: 9 629
Спасибо сказали: 12594 раза




Я же этого не знаю.
Код
randomize;
repeat
a:=random(1);

Этот кусок я нашел в инете, остальное накорябал по памяти.
Потому и спрашивал.
Вообще вопрос с прогой отпал благодаря EtherniDee, разве что мне захочется создать прогу, сочетающую в себе свойства рандома и картостроя, эдакий полноценный симулятор боя, подстроенный под мою ФРПГ и который можно будет легко модернизировать... Но это уже не скоро.


--------------------
Космические мана-корабли бороздят просторы мана-вселенной,
Начиная с сегодня "мана" - это офигенно.
Go to the top of the pageAdd Nick
 
+Quote Post
packa
сообщение 05 Sep 2010, 21:13
Сообщение #159

Immortal
Сообщений: 3 301
Спасибо сказали: 2643 раза




Носф, делай сразу МУД smile.gif


--------------------
Удалено Администрацией. Браузеры жаловались на вредоносное ПО.
Ссылка на оригинальное изображение: http://herоeslibrary.nеt/Site_images/admin.jpg
Ссылка на сайт по нажатию баннера: http://herоeslibrary.nеt

(ссылки содержат кириллические символы вместо оригинальных)

Видишь бяку, - упрости! (с) кто-то из выдающихся математиков)
Учи матан & Сходи с ума (с) архидедус
Go to the top of the pageAdd Nick
 
+Quote Post
nosferatu
сообщение 05 Sep 2010, 21:14
Сообщение #160

Immortal
Сообщений: 9 629
Спасибо сказали: 12594 раза




Не, лучше сразу сделать игру, которая будет сочитать все плюсы и прелести Спора, Фола, НоММ и ДаО.


--------------------
Космические мана-корабли бороздят просторы мана-вселенной,
Начиная с сегодня "мана" - это офигенно.
Go to the top of the pageAdd Nick
 
+Quote Post

9 страниц V  « < 6 7 8 9 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 22 July 2025 - 08:23
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика