Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];

Вниз

Нажатие двух клавиш   Найти похожие ветки 

 
KiberKot ©   (2006-04-25 17:48) [0]

Подскажите, как отследить нажатие двух клавиш вот в такой строке
if diks [DIK_space] and $80 <> 0 then begin


 
XProger ©   (2006-04-25 18:01) [1]

if (diks[DIK_space] and $80 <> 0) and (diks[DIK_RETURN] and $80 <> 0) then begin


 
KiberKot ©   (2006-04-25 18:29) [2]

Блин.
Я лепил что то типа
if diks [DIK_space] and [DIK_UP] and $80 <> 0 then begin
if diks [DIK_space and DIK_UP] and $80 <> 0 then begin


 
Cash ©   (2006-04-25 22:39) [3]

Интересно, а зачем diks[DIK_space] and $80 использовать?
Это же падение быстроты работы.
Почему бы не делать: diks[DIK_space] = $80?
(я понимаю, что это всего один And, но без него мой DInput класс стал
работать чуть ли ни в 1,5 раза быстрее, а клавиши также отсекает)


 
XProger ©   (2006-04-25 22:48) [4]

Cash, учи булеву алгебру...


 
KiberKot ©   (2006-04-26 00:17) [5]


> XProger ©   (25.04.06 22:48) [4]
> Cash, учи булеву алгебру..

Что ты этим хотел сказать ?


 
XProger ©   (2006-04-26 00:23) [6]

KiberKot, и тебя это тоже касается ;)
and не сопоставимо с простым сравнением


 
KiberKot ©   (2006-04-26 00:24) [7]

Я в курсе, он сопоставляется с И


 
KiberKot ©   (2006-04-26 00:26) [8]

Я просто подумал о том что ты щитаеш что Cash не прав про вывод


 
Mortem ©   (2006-04-26 00:27) [9]

Виндовые сообщения рулят! DirectInput маздай! (:


 
KiberKot ©   (2006-04-26 00:32) [10]


> Mortem ©

А вот меня чета не прет рывками перемещаться


 
Mortem ©   (2006-04-26 01:56) [11]


> KiberKot ©   (26.04.06 00:32) [10]

Прикинь, меня тоже! Но это ты явно с чем-то попутал... Небось VCL"ем балуешься?


 
KiberKot ©   (2006-04-26 02:15) [12]

Щас я DirectInput балуюсь, а как ты стандартными способами скорости добиваешся?


 
XProger ©   (2006-04-26 07:58) [13]

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


 
Cash ©   (2006-04-26 10:15) [14]

XProger ©   (26.04.06 00:23) [6]:
> and не сопоставимо
Ёу, чел, посвети в чем тут фишка!
(ответ твой мне вобще не нужен, я и без того знаю то что означает эта фраза)

KiberKot ©   (26.04.06 00:26) [8]:
> ...щитаеш что Cash не прав...
Этот человек считает, что я во всем не прав. Мне фиолетово!
Я знаю что лучше и как правильнее, мои цели не навязывать заблуждений
и не посылать на поисковики. Я посоветовал, меня послали, мне все равно!


 
Mortem ©   (2006-04-26 13:03) [15]


> Cash ©   (26.04.06 10:15) [14]

"Какой ты чувствиткльный Томми!" (с)Снетч


 
KiberKot ©   (2006-04-26 14:12) [16]


> Cash ©  


> diks[DIK_space] = $80?

Ну а можно так AND-ы позаменять во всех циклах. Инпут работает нормально
, а вот вывод на экран тормозит, т.к. у меня для каждого объекта куча
циклов с проверками, и если на экране появляется много объектов, то
начинаются еормоза. Надобы циклы как нибудь ускорить.
А вобще, если я выведу 1 цикл на 100 элементов и 50 циклов по 2 элемента,
то какой способ будет быстрее ???? Я спросил из за того, что у меня в
отрисовке куча циклов для одних и техже элементов, и может
если я это все засуну в один, то будет побыстрее работать

ЗЫ вернее циклы у меня не в отрисовке, а в обновлении экрана


 
Mortem ©   (2006-04-26 14:13) [17]

А чем отличается отрисовка и обновление экрана?


 
KiberKot ©   (2006-04-26 14:14) [18]


> XProger ©   [13]
> KiberKot, учи булеву алгебру

А где про эту самую алгебру можно документации достать, я вобще про нее
в первый раз слышу


 
KiberKot ©   (2006-04-26 14:18) [19]


> А чем отличается отрисовка и обновление экрана?

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


 
KiberKot ©   (2006-04-26 14:23) [20]

Вы бы мне про книгу ответили
Cash прикинь, я временно дезиртирую на OGL :)


 
Don Nikola ©   (2006-04-26 14:37) [21]

>Cash
>(я понимаю, что это всего один And, но без него мой DInput класс стал
>работать чуть ли ни в 1,5 раза быстрее, а клавиши также отсекает)

Одно-тактовый and тормозит метод в полтора раза?! 8O
Да ты великий гуру программления познавший дзен.
Можно на сырцы посмотреть, а то может я столько в жизни пропустил и не знаю.


 
KiberKot ©   (2006-04-26 14:47) [22]


> Don Nikola ©

Я чет не понял, and  тормозит или всетаки не тормозит ???


 
Don Nikola ©   (2006-04-26 15:00) [23]

2KiberKot:
AND это одна из комманд проца, которая выполняется за минимально возможное время. Если у человека программа тормозит из-за одного and, то он или великий гуру или не совсем понимает что у него написано.


 
KiberKot ©   (2006-04-26 15:03) [24]


> Don Nikola ©

Ну в принципе логично.
А вот скажи мне Николна, ты книжки читаеш (OGL) ?


 
Cash ©   (2006-04-26 15:09) [25]

KiberKot ©   (26.04.06 14:47) [22]:
Нет, and не тормозит, а наобарот работает быстрее... е-если
к нему правильно приложить руки!
Операция в [1] полностью верна, так же как и верна операция
эквивалентности (=) в [3]. Но обе они нерациональны с точки зрения
организации алгоритма. (наминального быстродействия не будет)
Рационален подход с and, приделанным к нужному месту, я (как и мой
учитель в подобных ситуациях) сложу руки и промолчу о нем. Потаму как
это приложение слишком тревиально для простого объяснения, надо
догадаться.

ЗЫ: предпод за такие вопросы автоматы раздает, но за всю его практику
таким образом автоматы получили только двое или трое челов.

> Cash прикинь, я временно дезиртирую на OGL :)
И правильно, кстати! Посиди на опене, это кульная штука. :)

Вот по DirectX я бы тебе сразу сказал, а опен, я чёт не знаю, как говорится
Краснов, но ты же сам видел, примеры у него в Бобруйск. На GameDev сходи,
посмотри там в каталоге книг.


 
KiberKot ©   (2006-04-26 15:19) [26]


>  На GameDev

Но ты же говорл что ОГЛ знаеш, значит о чем то учил (логично ?)
А на GameDev я был и вот нашел три варианта, которые перечислил,
кстати Краснова ОГЛ уже фиг где найдеш , за тем фактом, что этой книге уже 6 лет

Если кто захочет сказать про книги, то давайте в тот топик


 
Mortem ©   (2006-04-26 15:20) [27]

Вполне нормально по Краснову читься, хотя примеры немного переделывать приходится...
А ваще, примеры можно брать тут: http://code.darthman.com (:


 
KiberKot ©   (2006-04-26 15:26) [28]

Mortem
Кстати про code.darthman.com, это ты там админиш, а то я вот незнаю куда
положить свою мега гамму для скачивания :)
ЗЫ а это только гаммаделам положено смайлики перевернутые рисовать ? (:


 
Cash ©   (2006-04-26 15:28) [29]

KiberKot ©   (26.04.06 15:19) [26]:
Хм-м, я опен учил своими двумя, без книжек.
(Я и товарищ Брежнев очень похожи, мы оба не читаем книг :)

А с Don Nikola © я бы не согласилися!
Это где это and - это команда процессора?
(надо бы не приператься, а точно указать в какой из семантических
конструкций слово and является командой процессора)


 
Don Nikola ©   (2006-04-26 15:31) [30]

2Cash:
P.S.:
x - byte
if (x and $80)=0 then ...
компилиться в test al,$80
if x=$80 then ...
компилиться в cmp al,$80
Твой выигрыш в производительности не от этого 100%.
P.P.S.:
Если в sdk help пишут "If an element"s high bit is on, the key was down at the moment of the call" значит нужно именно старший бит пользовать, иначе иногда можно встретить такой неуловимый баг, что неделю просидишь.
P.P.P.S.:
Хороший у тебя препод, добрый. Другой бы за такой код в извращенной форме бы после занятий.


 
KiberKot ©   (2006-04-26 15:32) [31]


> Cash ©

Ну вобще в ассемблере and используется, а он использует машинные команды


 
Cash ©   (2006-04-26 15:41) [32]

KiberKot ©   (26.04.06 15:32) [31]:
Вот именно! and на 100% это and только в асме.
В Делфе это побитовая операция.
(что быстрее вычитание, сравнение и проверка флага или операция с
моментальным занесением результата во флаг)
При этом в [1] производится ряд операций которые друг другу не нужны.

Don Nikola ©:
test - это оператор или макрокоманда?
Какие числа в себя включает маска $80?
(это не придирки или чего то там, это направление к "верному" решению)


 
Don Nikola ©   (2006-04-26 15:43) [33]

2Cash:
>Это где это and - это команда процессора?
>(надо бы не приператься, а точно указать в какой из семантических
>конструкций слово and является командой процессора)

and - это команда всех x86.
паскаль, да и другие языки обычно преобразуют твой код и как вышеуказанно if ... and ... преобразовывается в другие команды.
Если же написать x:=x and $80 то в асме получиться and al,$80.
Более подробно о команда цпу можно посмотреть http://www.agner.org/assem/ и на intel.com там не помню где куча pdf"ов с описанием процев и их команд лежала.
Для изучения команд 386 можно взять с http://www.whitetown.com/ru/ng/index.php3?lang=1&what=6 TechHelp!6


 
Don Nikola ©   (2006-04-26 15:49) [34]

2Cash:
Я не успеваю ответить, а ты новый вопрос задаешь ;)

>test - это оператор или макрокоманда?

Это команда проца, если мне не веришь возьми дебагер с http://www.ollydbg.de и посмотри во что delphi код превращает. Довольно часто бывает менее "правильный" текст на delphi компилится в неоптимальный код.

>Какие числа в себя включает маска $80?
>(это не придирки или чего то там, это направление к "верному" решению)

Если я правильно тебя понял, то $80-$FF 128-255


 
KiberKot ©   (2006-04-26 15:50) [35]

Ну про [1] [3] понятно, там будет работать не за счет исправления and на =
а за счет сокращения алгаритма  
f diks [DIK_space] and $80 <> 0 then begin - сначала вычисляет [DIK_space] and $80
, а потом сравнивает с 0.
В [3] сразу сравнивает два значения.

А вот что будет, если нельзя две проверки в одну вместить, пример
if (x<0) and (x>640) то как тогда писать and или =


 
Don Nikola ©   (2006-04-26 15:51) [36]

>Довольно часто бывает более "правильный" текст на delphi компилится в неоптимальный код.
;)


 
Cash ©   (2006-04-26 15:53) [37]

Don Nikola ©   (26.04.06 15:49) [34]:
> Это команда проца
Верю, ляпнул не подумавши. :)

> то $80-$FF 128-255
Да, 128 и выше. То есть вполне есть резон использовать логическую
операцию ">="


 
Don Nikola ©   (2006-04-26 15:57) [38]

2KiberKot:
Он не вичисляется и сравнивается, а совмещается в одну команду.

>А вот что будет, если нельзя две проверки в одну вместить, пример
>if (x<0) and (x>640) то как тогда писать and или =

То и будет, проверка-jump, проверка-jump.
Кстати, если нужно проверить равенство переменной небольшим значениям(0-255), то выгоднее писать if x in [1,2,3,4..8] then delphi там с битами начинает играть и получает весьма занятный код.


 
Cash ©   (2006-04-26 15:58) [39]

KiberKot ©   (26.04.06 15:50) [35]:
> if (x<0) and (x>640) то
То есть выход за пределы? (смутило то, что X одновременно и меньше 0 и
больше 640!)

Наверное?:
if (x < 0)or(x > 640) then...


 
Don Nikola ©   (2006-04-26 15:59) [40]

2Cash:
Что and, что >= разницы в результате нет. Но для понимания исходника лучше использовать то, что основано на sdk. Если там написано проверьте старший бит, то лучше так и делать, что бы потом не тратить пару минут на "а что здесь, собственно, происходит?"


 
KiberKot ©   (2006-04-26 16:01) [41]


> Наверное?:if (x < 0)or(x > 640) then...

не, скорее так if (x>0) and (x<640)


 
Cash ©   (2006-04-26 16:03) [42]

Don Nikola ©   (26.04.06 15:59) [40]:
В принципе да. Ведь, можно сказать, все делают так как сказано в SDK, и
только некоторые психи вроде меня и еще нескольких людей решаются на
такого рода эксперименты.


 
KiberKot ©   (2006-04-26 16:05) [43]


> решаются на такого рода эксперименты.

ну и чем обычно эти эксперементы заканчиваются, может находите решения
побыстрее ?


 
Cash ©   (2006-04-26 16:06) [44]

KiberKot ©   (26.04.06 16:01) [41]:
А ну тогда другое дело!
Удобнее всетаки (наверное) будет простая коньюнкция!
(x > 0)and(x < 640)


 
KiberKot ©   (2006-04-26 16:08) [45]


> Don Nikola ©  

ты мне про книгу еще ничего не сказал (забыл наверно )


 
Cash ©   (2006-04-26 16:11) [46]

KiberKot ©   (26.04.06 16:05) [43]:
Это всегда авантюра, довольно времяемкое занятие.
А результаты получаются далеко не всегда!
Но если получаюся, то это просто куль!


 
KiberKot ©   (2006-04-26 16:15) [47]


> > Don Nikola ©  

Похоже ты книги не читаеш :) Ладно, тогда проехали (:


 
Cash ©   (2006-04-26 16:17) [48]

ЗЫ: А (x < 640) еще можно заменить на ((x and $0280) = 0) :)))


 
KiberKot ©   (2006-04-26 16:19) [49]


> ЗЫ: А (x < 640) еще можно заменить на ((x and $0280) = 0)
> :)))

А че, с 16-ричными работает быстрее ???


 
Cash ©   (2006-04-26 16:19) [50]

Да не, ему по барабану.
Просто так как то понтово выглядит! :)))


 
Don Nikola ©   (2006-04-26 16:20) [51]

2Cash:
>только некоторые психи вроде меня и еще нескольких людей решаются на
>такого рода эксперименты.

Любитель нестандартных извращений ;) ok.
Есть генератор случайных чисел вида:
add x,AddVal
rol x,RolVal
xor x,XorVal

Например для байта:
function Rnd(X: byte): byte;
asm
 add al,119
 rol al,3
 xor al,1
end;
Для слова:
function Rnd(X: word): word;
asm
 add ax,23975
 rol ax,3
 xor ax,1
end;

Чем хороши эти два генератора? Они выдают максимальную последовательность. Первый 256 значений, второй 65536. Стандартный дельфевый меня не устраивает, так как при некотых значениях range и randseed он выдает значения которые случайными назвать сложно.

Почти на 99.9(9)% такой же есть и для dword.
Вот и задача для тебя и твоего преподавателя найти хоть один коэффициент для dword и сказать его мне или по крайней мере сказать как за адекватное время их находить.
Я этим занялся вчера и пока вижу только брутфорс с преварительно отсеченными 50-75% значений. Но так как коэффициенты будут 32bit, то все равно время слишком большое.


 
KiberKot ©   (2006-04-26 16:22) [52]


> Просто так как то понтово выглядит! :)))

так круче ((x and h1010000000) = 0) :)))


 
Don Nikola ©   (2006-04-26 16:23) [53]

2KiberKot:
я как-то пропустил... что за книжка? сразу скажу ogl не занимаюсь, где взять не знаю ;)


 
KiberKot ©   (2006-04-26 16:26) [54]


> я как-то пропустил... что за книжка? сразу скажу ogl не
> занимаюсь, где взять не знаю ;)

А..  ну в этом случае тоже можно проехать :)


 
Cash ©   (2006-04-26 16:26) [55]

А бошка то у меня дырявая, я совсем забыл как записать бинарное число. :)

Don Nikola ©   (26.04.06 16:20) [51]:
Препод ко мне никакого отношения не имеет, как и я к нему. Он универскую
команду по шкодингу тренирует, а они 2-е и 3-и места расхватывают. :)
А мне к ним не охота! Вот писали бы они игрухи...! :)))
ЗЫ: А задачкой пожалуй займусь... :)


 
KiberKot ©   (2006-04-26 16:33) [56]

А кто админит на http://code.darthman.com ?
я так понял Mortem и DeadMeat


 
Don Nikola ©   (2006-04-26 16:35) [57]

2Cash:
>ЗЫ: А задачкой пожалуй займусь... :)

Удачи ;)
На всякий случай: X - RandSeed; Range не реализован, нужно добавить простое деление после записи RandSeed, не принципиально.


 
Cash ©   (2006-04-26 16:35) [58]

KiberKot ©   (26.04.06 16:33) [56]:
А по моему Darthman  и админит, только его давно нету.
А что тебе помешает создать свой сайт и там кинть свою игруху?
А ссылку потом раздаш остальным!


 
KiberKot ©   (2006-04-26 16:39) [59]

Сайт у меня есть , но т.к. я в HTML только поверхностно, то там ниче нету,
http://kot-set.narod.ru - я сверху :))


 
XProger ©   (2006-04-26 17:57) [60]

KiberKot, бедняга, имея под рукой ВСЕМИРНУЮ сеть не способен найти нужную себе информацию...
Краснов - http://www.libray.narod.ru/Program/DOpenGL/index.html
Булева Алгебра - http://www.yandex.ru/yandsearch?text=%C1%F3%EB%E5%E2%E0+%E0%EB%E3%E5%E1%F0%E0


 
Cash ©   (2006-04-26 18:11) [61]

Ну ни все же такие умные как ТЫ!!!


 
KiberKot ©   (2006-04-26 18:12) [62]


> XProger ©

Что касается книг , мне нужны были мнения тех, кто уже читал эти книги,
для того что бы купить лучшую, в аналоговом вареанте


 
KiberKot ©   (2006-04-26 18:13) [63]


> Cash ©   (26.04.06 18:11) [61]
> Ну ни все же такие умные как ТЫ!!!

Во во ... :)


 
KiberKot ©   (2006-04-26 18:25) [64]


> Краснов - http://www.libray.narod.ru/Program/DOpenGL/index.
> html

Странно, у меня примеры работают :) Все щас доделываю меню к игре и сажусь за ОГЛ


 
KiberKot ©   (2006-04-26 18:30) [65]

Аааа...  фиг там , не все работают !!!!!  Жизнь кончена  :((


 
Mortem ©   (2006-04-26 23:18) [66]

Это, нефиг мои смайлы юзать. Плагиаторы чёртовы! Развели тут флейм, блин.
Регайся на http://code.darthman.com, общайся, всё будет. (:


 
XProger ©   (2006-04-27 07:56) [67]

KiberKot, сеть буквально кишит примерами. А из нормальных книг могу посоветовать http://www.mirgames.ru/files/books/


 
Cash ©   (2006-04-27 10:50) [68]

Mortem ©   (26.04.06 23:18) [66]:
Такие смайлы еще фидошники придумали, не присваивай чужого! (:


 
Mortem ©   (2006-04-27 11:18) [69]

Фидошники курят в сторонке, так что сходи покури! (:


 
Cash ©   (2006-04-27 12:31) [70]

А я не фидошник! (:
:) И вааще! Как хочу так смайлки и ставлю! (:
(::) :)(: :():
(или какньть еще :))) )


 
Mortem ©   (2006-04-27 12:58) [71]

Плагиатор.


 
DeadMeat ©   (2006-04-27 13:25) [72]


> KiberKot ©   (26.04.06 16:33) [56]
>
> А кто админит на http://code.darthman.com ?
> я так понял Mortem и DeadMeat

Вот так вот... А я и не знал.
Кому пиво ставить?


 
Mortem ©   (2006-04-27 13:40) [73]


> DeadMeat ©   (27.04.06 13:25) [72]

Вот КиберКошке и ставь! Добро пожаловать в штат! (:


 
Darthman ©   (2006-04-28 12:33) [74]

DeadMeat прикинь, я тоже незнал. А еще я незнал, что я куда-то пропал еще... странные вещи в мире творятся, ейбогу.


 
KiberKot ©   (2006-05-01 03:13) [75]


> Darthman ©

Сори, не то скопировал, лица у вас больно похожие :)
Кто то из вас под двойника косит :)



Страницы: 1 2 вся ветка

Форум: "Игры";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.65 MB
Время: 0.043 c
15-1173612964
Kerk
2007-03-11 14:36
2007.04.01
Знатокам линукса


15-1173256037
Некто
2007-03-07 11:27
2007.04.01
Простые тосты к 8.03


15-1173605644
Geret
2007-03-11 12:34
2007.04.01
Ура! Я приобрел книгу Кормена!


15-1173071399
leonidus
2007-03-05 08:09
2007.04.01
Подскажите удобную программу для создания хелпов


2-1173260999
Officeman
2007-03-07 12:49
2007.04.01
сортировка в TListView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский