Вообще-то ты угадал
Интересно будет посмотреть на мои недоделки. Рано я, наверно, начал из Flood-it Кликсы делать...
А можно скрин программы Flood-it в Фантоме?dzavalishin wrote:интересно. под фантомом сначала вообще ничего не произошло - запускаю - ноль эмоций, висит на считывании события. посмотрел в код - оказывается, ты рисуешь только по событию перерисовки - видимо (и это нигде не документировано) - Колибри изначально посылает нити (даже если у неё нет окна) событие перерисовки окна... добавил, теперь рисуется.
Это Flood-it на Си - твой код огорчает его.Joaquin wrote:Flood-it! fv2.3
Делать было нефиг, а руки чесались.Переписал версию 2.2 на fasm, а заодно внёс некоторые изменения:
ты по поводу чего-то вродеMario wrote:Это Flood-it на Си - твой код огорчает его.Joaquin wrote:Flood-it! fv2.3
Делать было нефиг, а руки чесались.Переписал версию 2.2 на fasm, а заодно внёс некоторые изменения:
Code: Select all
imul esi, ebx
add esi, edx
add esi, edx
Это как понять? В архиве, который я выложил, нет ни одного фрагмента на C.Mario wrote:Это Flood-it на Си - твой код огорчает его.Joaquin wrote:Flood-it! fv2.3
Делать было нефиг, а руки чесались.Переписал версию 2.2 на fasm, а заодно внёс некоторые изменения:
А вот это я тупанул немного. Разумеется это надо заменить на:SoUrcerer wrote:ты по поводу чего-то вроде?Code: Select all
imul esi, ebx add esi, edx add esi, edx
Code: Select all
imul esi
lea [esi+edx*2]
По какой формуле ты генерируешь числа? Когда-то в интернете я нашел такую x(k+1) = (a*x(k)+c) mod m с рекомендуемыми параметрами a=22695477, c=1, m=2^32Joaquin wrote:Кстати, большая просьба потестировать работу генератора случайных чисел на вменяемость - все цвета должны использоваться и поле должно быть заполнено хаотично.
Code: Select all
rand_x dd 0
align 4
rand_next:
;x(k+1) = (a*x(k)+c) mod m
; a=22695477, c=1, m=2^32
push eax
mov eax,dword[rand_x]
imul eax,22695477
inc eax
mov dword[rand_x],eax
pop eax
retАлгоритм я ниоткуда не копировал, а написал сам (лень было разбираться с существующими формулами), поэтому не в курсе как он называется. Вычисление происходит таким образом:IgorA wrote:По какой формуле ты генерируешь числа?
Code: Select all
seed = 0xBABEFACECode: Select all
seed = seed xor (current_time xor tick_count),
где current_time = текущее время, tick_count = значение счётчика времени ("число сотых долей секунды, прошедших с момента запуска системы")
Code: Select all
seed = (seed*5+0xFADEBEEF) rol 11
return (abs(seed) mod (max-min+1))+min
а) как узнать размер стека я не знаю, но он ведь всегда равен 100, или нет? Заменил CreateThread(#help,#stak); на CreateThread(#help,#stak+100); ничего не изменилось. Всё работает и я решил оставить как было раньше. Тут пусть lev разбирается, он круче))Joaquin wrote:Flood-it! fv2.3
Делать было нефиг, а руки чесались.Переписал версию 2.2 на fasm, а заодно внёс некоторые изменения:
1. Окно справки теперь закрывается, если закрыть основное окно.
2. Окно проверяет "свернутость в заголовок" надёжным способом.
3. Генератор псевдослучайных чисел полностью переписан (хз как называется этот тип PRNG, но вроде он работает); теперь он работает быстрее и не использует команду rdtsc.
4. Благодаря п. 3, теперь Flood-it! теоретически можно запустить на любом 32-битном x86-совместимом процессоре, а не только на P6+ как раньше.
5. Прорисовка сообщения о победе/прогрыше (fail/win) теперь построчная (раньше каждый блок рисовался отдельно).
6. В игру теперь можно полноценно играть без мыши - только используя клаву
Cкриншот: Из-за того, что в этой порядком оптимизированной программе небольших размеров, написанной на ассемблере, избыточности мало, то и размер закупаковонного файла чуть больше 4*512 байт. Так что в четыре сектора втулить не получитсяLeency, по поводу С/С-- версии:
а) при вызове потока справки указатель на вершину стека устанавливается, на самом деле, на дно стека, #stack нужно заменить на #stak+#stak_size (или как там), ведь в данном случае стек растёт сам знаешь куда
б) лучше проверять свернуто ли окно в заголовок по байту со смещением +70, который лежит в буфере возвращаемом сисфункцией 9
в) кстати loose_matrix надо переименовать в loss_matrix, а то получается какая-то "расхлябанная" матрица![]()
Users browsing this forum: No registered users and 9 guests