Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Разное > Ваши программы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 05.11.2013, 16:27
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

пару раз удалось его поймать, действительно пищит)
выключить : Alt+F4
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #17  
Старый 05.11.2013, 16:41
Аватар для SCrat.ORS
SCrat.ORS SCrat.ORS вне форума
Активный
 
Регистрация: 20.02.2007
Адрес: Мой адрес не дом и не улица, мой адрес 0x7С00
Сообщения: 208
Версия Delphi: 2006
Репутация: 884
По умолчанию

Aristarh Dark, у него 7 цветов, при запуске выбирается случайный из них.
__________________
Програмистами не рождаются, ими становятся!
Ответить с цитированием
  #18  
Старый 05.11.2013, 16:42
Аватар для SCrat.ORS
SCrat.ORS SCrat.ORS вне форума
Активный
 
Регистрация: 20.02.2007
Адрес: Мой адрес не дом и не улица, мой адрес 0x7С00
Сообщения: 208
Версия Delphi: 2006
Репутация: 884
По умолчанию

Цитата:
Сообщение от icWasya
>код ужасен - править и править
например, вот это
Код:
X_Sp:=0;Y_Sp:=0;
case Num_splash of
  0: begin X_Sp:=0;Y_Sp:=0; end;
  1: begin X_Sp:=1;Y_Sp:=0; end;
... и ещё 58 строк

смело можно заменить на
Код:
X_Sp:=Num_splash mod 4;
Y_Sp:=Num_splash div 4;

ОП, первые правки появились продолжаем, кому интересно.
ЗЫ: Не пойдёт поправка,.. т.к. не на всех фреймах анимация из 4 кадров, - на некоторых из 5.
И кстати, если память мне не изменяет, конструкция Case работает быстрее операторов div и mod (т.к. case в данном случае играет роли "выборки" из табличных значений, в отличии от арифметико-логических операций с числами)

Скачать исходники + exe тут
Библиотека GraphicEx тут
__________________
Програмистами не рождаются, ими становятся!

Последний раз редактировалось SCrat.ORS, 05.11.2013 в 17:35.
Ответить с цитированием
  #19  
Старый 05.11.2013, 20:32
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
ЗЫ: Не пойдёт поправка,.. т.к. не на всех фреймах анимация из 4 кадров, - на некоторых из 5.
Ну так завести переменную под количество кадров. Все равно 60 строк - это ни в какие ворота.
Цитата:
И кстати, если память мне не изменяет, конструкция Case работает быстрее операторов div и mod
Помню, был когда в 10 классе, меня отправили на олимпиаду по программированию. Была задача, в которой было всего 768 возможных комбинаций входных данных. Ну я мельком глянул на комп соседа. Этот чувак решал задачу гениально - он решил запрогать все 768 входных комбинаций на куче IF-ов. До сих пор как вспомню - в глазах рябит от этих IF-ов. Брр.
div 4 можно заменить на shl 2, mod 4 на and 3. Для 5 кадров так уже не выйдет, однако можно сделать везде 4 кадра (или везде 8). Если прям так важна скорость. Хотя проще оставить div/mod - разницу заметить будет невозможно в принципе: любая 3Д-игра выполняет много десятков тысяч делений каждую секунду (имею в виду только на CPU - на видюхе думаю куда больше).
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 05.11.2013 в 20:42.
Ответить с цитированием
  #20  
Старый 05.11.2013, 21:51
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Вот поэтому и нужно картинки править, а у меня никак руки не доходят до этого.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #21  
Старый 05.11.2013, 21:53
Аватар для SCrat.ORS
SCrat.ORS SCrat.ORS вне форума
Активный
 
Регистрация: 20.02.2007
Адрес: Мой адрес не дом и не улица, мой адрес 0x7С00
Сообщения: 208
Версия Delphi: 2006
Репутация: 884
По умолчанию

Bargest, не, я конечно полностью согласен что 60 строк - это перебор, но как по другому выставить конструкцию голова не придумала из-за разного кол-ва кадров анимации. А перерисовывать анимацию на определённое кол-во кадров - нет, спасибо, увольте (нужное подчеркнуть). Я как-то не занимаюсь рисованием анимации, а картинка просто была позаимствована с игры. И да, товарищи, - неужели это настолько убогая и единственная конструкция в программе требующая изменения? (то что самая очевидная - не считается :-) )
__________________
Програмистами не рождаются, ими становятся!
Ответить с цитированием
  #22  
Старый 05.11.2013, 21:59
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 577
Версия Delphi: 6
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Bargest
div 4 можно заменить на shl 2, mod 4 на and 3. Для 5 кадров так уже не выйдет, однако можно сделать везде 4 кадра (или везде 8).
На самом деле это сделает за вас компилятор. Delphi 6 уже так делает, по крайней мере. Он даже на 10 умножает через LEA и сложение.
__________________
Не стоит путать форумы с богадельнями. © Bargest
Ответить с цитированием
  #23  
Старый 05.11.2013, 22:01
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
не придумала из-за разного кол-ва кадров анимации
Говорят же:
Код:
//frameCount = кол-ву кадров анимации
X_Sp:=Num_splash mod frameCount;
Y_Sp:=Num_splash div frameCount;
Цитата:
неужели это настолько убогая и единственная конструкция в программе требующая изменения? (то что самая очевидная - не считается :-) )
Настолько. А насчет единственной - понятия не имею, я только добавил поправку к уже имеющемуся комментарию. Сам код я не открывал - не люблю чужие большие исходники.
Цитата:
На самом деле это сделает за вас компилятор
Надеяться на оптимизатор - грех. А на делфовый оптимизатор - большой грех... Некоторые паттерны у него хороши, но некоторые другие очевидные вещи он не оптимизирует вовсе. Натыкался на парочку, хотя уже их забыл.
Но да, div/mod на константу он вроде умеет.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 05.11.2013 в 22:06.
Ответить с цитированием
  #24  
Старый 05.11.2013, 22:17
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Осталось только добавить массив с количеством паучков в ряду.

Кстати, писка "уточки" я так и не дождался.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #25  
Старый 06.11.2013, 08:26
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

просто предложение:
-при бездействии пользователя некоторое время паучок засыпает. на пробуждение тоже тратится некоторое время (в течении которого он не убегает), чтобы было легче поймать его
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #26  
Старый 06.11.2013, 09:25
Аватар для SCrat.ORS
SCrat.ORS SCrat.ORS вне форума
Активный
 
Регистрация: 20.02.2007
Адрес: Мой адрес не дом и не улица, мой адрес 0x7С00
Сообщения: 208
Версия Delphi: 2006
Репутация: 884
По умолчанию

Да вроде бы особых трудностей не составляет его поймать
__________________
Програмистами не рождаются, ими становятся!
Ответить с цитированием
  #27  
Старый 06.11.2013, 18:17
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Эта хитрая скатина еще и любопытная до жути. Стремится подобраться к кусору - видимо его мухой считает
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #28  
Старый 06.11.2013, 20:01
Аватар для SCrat.ORS
SCrat.ORS SCrat.ORS вне форума
Активный
 
Регистрация: 20.02.2007
Адрес: Мой адрес не дом и не улица, мой адрес 0x7С00
Сообщения: 208
Версия Delphi: 2006
Репутация: 884
По умолчанию

Решился переписать этого паучка, используя winapi и gdi+
Не получается передать форме прозрачность от png

Код:
procedure initialized;
Var
x_pos,y_pos:integer;
GPImage:TGPImage;
Stream          : TStream;
Aptr            : IStream;
begin
Randomize;
x_pos := getsystemmetrics(sm_cxscreen) div 2 - 50;    //Центр экрана - форма
y_pos := getsystemmetrics(sm_cyscreen) div 2 - 30;    //Центр экрана - форма
INST := GetModuleHandle(nil);
  with WinClass do
  begin
   Style := CS_HREDRAW or CS_VREDRAW; //стиль класса главного окна
   hIcon := LoadIcon(INST, MAKEINTRESOURCE('MAINICON')); //иконка программы
   lpfnWndProc := @WindowProc; //назначение обработчика сообщений
   hInstance := INST;
   hbrBackground := COLOR_BTNFACE + 1; //цвет окна
   lpszClassName := WndClassName; //класс окна
   hCursor := LoadCursor(0, IDC_ARROW); //активный курсор
  end;
InitCommonControls;
Windows.RegisterClass(WinClass); //регистрация класса в системе
Handle := CreateWindowEx(0, WndClassName, WndClassName,
WS_POPUP or WS_VISIBLE or WS_EX_LAYERED or WS_EX_TOPMOST, x_pos , y_pos, 100, 60, 0, 0,INST, nil); //Создание главного окна

DC:=GetDC(Handle); //Определяем контекст
GraphicsGDIPlus:=TGPGraphics.Create(DC);  //Создаём графику на контексте
try
  Stream := TResourceStream.Create(HInstance, 'SPLASH_'+inttostr(Random(7)), RT_RCDATA); //Загрузка PNG из ресурсов
    try
      Aptr := TStreamAdapter.Create(Stream, soReference) as IStream; //Грузим стрим в интерфейс
      GPImage:=TGPImage.Create(aptr);  //Создаём картинку из интерфейса
      GraphicsGDIPlus.DrawImage(GPImage, 0, 0, 512, 1024); //выводим на контекст
  finally
  Aptr := nil; //Освобождаем интерфейс
  Stream.Free;
  end;
finally
//Execute(A);
end;
end;

так отрисовывается на форме... а как сюда прозрачность прикрутить?

Использовать то что в изначальном VLC паучке -
Код:
UpdateLayeredWindow(Handle, 0, nil, @BitmapSize, Bitmap.Canvas.Handle,
   @BitmapPos, 0, @BlendFunction, ULW_ALPHA);

Не понял как её прикрутить,... крутил вертел, - пустая форма получается
__________________
Програмистами не рождаются, ими становятся!

Последний раз редактировалось SCrat.ORS, 06.11.2013 в 21:54.
Ответить с цитированием
  #29  
Старый 06.11.2013, 22:44
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
Смех

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

И, при его запуске, чтобы он типа выбегал с произвольного края экрана и забегал аналогично при выключении ПК, т.е. нужно событие завершения работы ПК отслеживать.

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

При отслеживании отсутствия движения мыши, можно также отслеживать набор текста, т.к. паучок своей любопытностью загораживает текст, то же касается чтени я или выделения текста, хотя, может я придираюсь и это сложно организовать.
Ответить с цитированием
  #30  
Старый 06.11.2013, 23:12
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

если запустить несколько экземпляров проги - будет много паучков, неплохо бы поправить до уровня - прога одна, а паучков несколько
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз

Последний раз редактировалось Yurk@, 06.11.2013 в 23:31.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:15.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter