|
#16
|
||||
|
||||
пару раз удалось его поймать, действительно пищит)
выключить : Alt+F4 Пишу программы за еду. __________________ |
#17
|
||||
|
||||
Aristarh Dark, у него 7 цветов, при запуске выбирается случайный из них.
Програмистами не рождаются, ими становятся! |
#18
|
||||
|
||||
Цитата:
ОП, первые правки появились продолжаем, кому интересно. ЗЫ: Не пойдёт поправка,.. т.к. не на всех фреймах анимация из 4 кадров, - на некоторых из 5. И кстати, если память мне не изменяет, конструкция Case работает быстрее операторов div и mod (т.к. case в данном случае играет роли "выборки" из табличных значений, в отличии от арифметико-логических операций с числами) Скачать исходники + exe тут Библиотека GraphicEx тут Програмистами не рождаются, ими становятся! Последний раз редактировалось SCrat.ORS, 05.11.2013 в 17:35. |
#19
|
||||
|
||||
Цитата:
Цитата:
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
|
||||
|
||||
Вот поэтому и нужно картинки править, а у меня никак руки не доходят до этого.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#21
|
||||
|
||||
Bargest, не, я конечно полностью согласен что 60 строк - это перебор, но как по другому выставить конструкцию голова не придумала из-за разного кол-ва кадров анимации. А перерисовывать анимацию на определённое кол-во кадров - нет, спасибо, увольте (нужное подчеркнуть). Я как-то не занимаюсь рисованием анимации, а картинка просто была позаимствована с игры. И да, товарищи, - неужели это настолько убогая и единственная конструкция в программе требующая изменения? (то что самая очевидная - не считается :-) )
Програмистами не рождаются, ими становятся! |
#22
|
||||
|
||||
Цитата:
Не стоит путать форумы с богадельнями. © Bargest |
#23
|
||||
|
||||
Цитата:
Код:
//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
|
||||
|
||||
Осталось только добавить массив с количеством паучков в ряду.
Кстати, писка "уточки" я так и не дождался. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#25
|
||||
|
||||
просто предложение:
-при бездействии пользователя некоторое время паучок засыпает. на пробуждение тоже тратится некоторое время (в течении которого он не убегает), чтобы было легче поймать его Пишу программы за еду. __________________ |
#26
|
||||
|
||||
Да вроде бы особых трудностей не составляет его поймать
Програмистами не рождаются, ими становятся! |
#27
|
||||
|
||||
Эта хитрая скатина еще и любопытная до жути. Стремится подобраться к кусору - видимо его мухой считает
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#28
|
||||
|
||||
Решился переписать этого паучка, используя 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
|
||||
|
||||
Нужно, чтобы он распознавал полноэкранные приложения, как то не хочется наблюдать его при просмотре фильмов, если сам не сможешь задетектить, то я те код подкину
И, при его запуске, чтобы он типа выбегал с произвольного края экрана и забегал аналогично при выключении ПК, т.е. нужно событие завершения работы ПК отслеживать. Еще идея такая, при долгом бездействии пользователя паучок плетет произвольного размера паутину в произвольных углах экрана или приложения на переднем плане, можно просто, чтобы произвольно появлялась, если сложно сделать анимацию. При отслеживании отсутствия движения мыши, можно также отслеживать набор текста, т.к. паучок своей любопытностью загораживает текст, то же касается чтени я или выделения текста, хотя, может я придираюсь и это сложно организовать. |
#30
|
||||
|
||||
если запустить несколько экземпляров проги - будет много паучков, неплохо бы поправить до уровня - прога одна, а паучков несколько
Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Последний раз редактировалось Yurk@, 06.11.2013 в 23:31. |