Board.KolibriOS.org

Official KolibriOS board
It is currently Sun Aug 25, 2019 10:02 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 78 posts ]  Go to page Previous 1 2 3 4 5 6 Next
Author Message
 Post subject: Re: Flood-it!
PostPosted: Fri Oct 07, 2011 9:51 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5054
>Я думал только ради подсветки кода расширение сменил

Вообще-то ты угадал :)

Интересно будет посмотреть на мои недоделки. Рано я, наверно, начал из Flood-it Кликсы делать...

_________________
Через тернии к звездам


Top
   
 Post subject: Re: Flood-it!
PostPosted: Wed Oct 12, 2011 5:46 pm 
Offline

Joined: Mon Sep 26, 2011 3:01 pm
Posts: 33
интересно. под фантомом сначала вообще ничего не произошло - запускаю - ноль эмоций, висит на считывании события. посмотрел в код - оказывается, ты рисуешь только по событию перерисовки - видимо (и это нигде не документировано) - Колибри изначально посылает нити (даже если у неё нет окна) событие перерисовки окна... добавил, теперь рисуется. :)


Top
   
 Post subject: Re: Flood-it!
PostPosted: Wed Oct 12, 2011 6:26 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
У любой программы есть окно. Даже если оно не определено и не рисуется.


Top
   
 Post subject: Re: Flood-it!
PostPosted: Wed Oct 12, 2011 7:22 pm 
Offline

Joined: Mon Sep 26, 2011 3:01 pm
Posts: 33
(ну, такое-то окно вообще у всего на свете есть.:)


Top
   
 Post subject: Re: Flood-it!
PostPosted: Sat Oct 15, 2011 3:19 am 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5054
dzavalishin wrote:
интересно. под фантомом сначала вообще ничего не произошло - запускаю - ноль эмоций, висит на считывании события. посмотрел в код - оказывается, ты рисуешь только по событию перерисовки - видимо (и это нигде не документировано) - Колибри изначально посылает нити (даже если у неё нет окна) событие перерисовки окна... добавил, теперь рисуется. :)
А можно скрин программы Flood-it в Фантоме?

_________________
Через тернии к звездам


Top
   
 Post subject: Flood-it! fv2.3
PostPosted: Tue Oct 18, 2011 4:59 pm 
Offline

Joined: Sat Aug 13, 2011 1:48 pm
Posts: 49
Flood-it! fv2.3
Делать было нефиг, а руки чесались. Переписал версию 2.2 на fasm, а заодно внёс некоторые изменения:
1. Окно справки теперь закрывается, если закрыть основное окно.
2. Окно проверяет "свернутость в заголовок" надёжным способом.
3. Генератор псевдослучайных чисел полностью переписан (хз как называется этот тип PRNG, но вроде он работает :) ); теперь он работает быстрее и не использует команду rdtsc.
4. Благодаря п. 3, теперь Flood-it! теоретически можно запустить на любом 32-битном x86-совместимом процессоре, а не только на P6+ как раньше.
5. Прорисовка сообщения о победе/прогрыше (fail/win) теперь построчная (раньше каждый блок рисовался отдельно).
6. В игру теперь можно полноценно играть без мыши - только используя клаву
Cкриншот:
Attachment:
Flood-it!.png
Flood-it!.png [ 6.11 KiB | Viewed 2439 times ]

Из-за того, что в этой порядком оптимизированной программе небольших размеров, написанной на ассемблере, избыточности мало, то и размер закупаковонного файла чуть больше 4*512 байт. Так что в четыре сектора втулить не получится :lol:
Attachment:
flood-it!-fv2.3.7z [13.38 KiB]
Downloaded 144 times


Leency, по поводу С/С-- версии:
а) при вызове потока справки указатель на вершину стека устанавливается, на самом деле, на дно стека, #stack нужно заменить на #stak+#stak_size (или как там ;) ), ведь в данном случае стек растёт сам знаешь куда
б) лучше проверять свернуто ли окно в заголовок по байту со смещением +70, который лежит в буфере возвращаемом сисфункцией 9
в) кстати loose_matrix надо переименовать в loss_matrix, а то получается какая-то "расхлябанная" матрица :)

P.S. Не сразу понял, что в C-- выражение x-a*b равнозначно (x-a)*b, а не x-(a*b), т. к. с C-- раньше не работал.


Top
   
 Post subject: Re: Flood-it! fv2.3
PostPosted: Tue Oct 18, 2011 10:12 pm 
Joaquin wrote:
Flood-it! fv2.3
Делать было нефиг, а руки чесались. Переписал версию 2.2 на fasm, а заодно внёс некоторые изменения:

Это Flood-it на Си - твой код огорчает его. :cry:


Top
   
 Post subject: Re: Flood-it! fv2.3
PostPosted: Tue Oct 18, 2011 10:39 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Mario wrote:
Joaquin wrote:
Flood-it! fv2.3
Делать было нефиг, а руки чесались. Переписал версию 2.2 на fasm, а заодно внёс некоторые изменения:

Это Flood-it на Си - твой код огорчает его. :cry:


ты по поводу чего-то вроде
Code:
imul   esi, ebx
add   esi, edx
add   esi, edx

?


Top
   
 Post subject: Re: Flood-it!
PostPosted: Tue Oct 18, 2011 10:57 pm 
Дима забей! Это просто еще одно мое "ценное" замечание, которое будет выпилено при очередном карательном рейде, с мотивировкой "говорите по существу".


Top
   
 Post subject: Re: Flood-it! fv2.3
PostPosted: Tue Oct 18, 2011 11:12 pm 
Offline

Joined: Sat Aug 13, 2011 1:48 pm
Posts: 49
Mario wrote:
Joaquin wrote:
Flood-it! fv2.3
Делать было нефиг, а руки чесались. Переписал версию 2.2 на fasm, а заодно внёс некоторые изменения:

Это Flood-it на Си - твой код огорчает его. :cry:

Это как понять? В архиве, который я выложил, нет ни одного фрагмента на C.
SoUrcerer wrote:
ты по поводу чего-то вроде
Code:
imul   esi, ebx
add   esi, edx
add   esi, edx

?

А вот это я тупанул немного. Разумеется это надо заменить на:
Code:
imul esi
lea [esi+edx*2]


Top
   
 Post subject: Re: Flood-it!
PostPosted: Tue Oct 18, 2011 11:16 pm 
Специально описняю - сообщение касается тебя чуть более чем никак. Дальше должен сам додумать.


Top
   
 Post subject: Re: Flood-it!
PostPosted: Tue Oct 18, 2011 11:40 pm 
Offline

Joined: Sat Aug 13, 2011 1:48 pm
Posts: 49
Кстати, большая просьба потестировать работу генератора случайных чисел на вменяемость - все цвета должны использоваться и поле должно быть заполнено хаотично. Если их меньше или поле заполнено повторяющимися блоками, напишите, пожалуйста.


Top
   
 Post subject: Re: Flood-it!
PostPosted: Tue Oct 18, 2011 11:48 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
Joaquin wrote:
Кстати, большая просьба потестировать работу генератора случайных чисел на вменяемость - все цвета должны использоваться и поле должно быть заполнено хаотично.

По какой формуле ты генерируешь числа? Когда-то в интернете я нашел такую x(k+1) = (a*x(k)+c) mod m с рекомендуемыми параметрами a=22695477, c=1, m=2^32
Code:
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


Top
   
 Post subject: Re: Flood-it!
PostPosted: Wed Oct 19, 2011 1:16 am 
Offline

Joined: Sat Aug 13, 2011 1:48 pm
Posts: 49
IgorA wrote:
По какой формуле ты генерируешь числа?

Алгоритм я ниоткуда не копировал, а написал сам (лень было разбираться с существующими формулами), поэтому не в курсе как он называется. Вычисление происходит таким образом:
определение переменной seed:
Code:
seed = 0xBABEFACE

randomize, который вызывается каждый раз во время начала новой игры, делает следующее:
Code:
seed = seed xor (current_time xor tick_count),
где current_time = текущее время, tick_count = значение счётчика времени  ("число сотых долей секунды, прошедших с момента запуска системы")

функция random, принимающая значения min и max (max должен быть больше min для корректного результата), делает такие вещи:
Code:
seed = (seed*5+0xFADEBEEF) rol 11
return (abs(seed) mod (max-min+1))+min

В общем, реализация деревянная, поэтому не уверен, что генератор работает идеально...


Top
   
 Post subject: Re: Flood-it! fv2.3
PostPosted: Wed Oct 19, 2011 1:28 am 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5054
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криншот:
Attachment:
Flood-it!.png

Из-за того, что в этой порядком оптимизированной программе небольших размеров, написанной на ассемблере, избыточности мало, то и размер закупаковонного файла чуть больше 4*512 байт. Так что в четыре сектора втулить не получится :lol:
Attachment:
flood-it!-fv2.3.7z


Leency, по поводу С/С-- версии:
а) при вызове потока справки указатель на вершину стека устанавливается, на самом деле, на дно стека, #stack нужно заменить на #stak+#stak_size (или как там ;) ), ведь в данном случае стек растёт сам знаешь куда
б) лучше проверять свернуто ли окно в заголовок по байту со смещением +70, который лежит в буфере возвращаемом сисфункцией 9
в) кстати loose_matrix надо переименовать в loss_matrix, а то получается какая-то "расхлябанная" матрица :)

а) как узнать размер стека я не знаю, но он ведь всегда равен 100, или нет? Заменил CreateThread(#help,#stak); на CreateThread(#help,#stak+100); ничего не изменилось. Всё работает и я решил оставить как было раньше. Тут пусть lev разбирается, он круче))
б) сделано
в) сделано.
6 - и в мою тоже можно :)
4 - определяется флагом компиляции, но Колибри кажись и так нельзя на старых процессорах запускать, потому и стоит высокий флаг
1 - можно реализовать, но стоит ли игра свеч

_________________
Через тернии к звездам


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 78 posts ]  Go to page Previous 1 2 3 4 5 6 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited