Программное обеспечение для создания заставки-часов

Компьютеры, программы, периферия, коммуникации, интернет, программирование и т.п. Ранее назывался Hard-n-Soft.
Сообщение
Автор
Wiz
ШИЗО
Благодарил (а): 45 раз
Поблагодарили: 34 раза

№ 0 Сообщение Wiz » 27 янв 2012 11:37

привет, видели заставку-часы перед новостями в 21:00 ? также по другим каналам. меня интересуют какое используют программное обеспечения для этого. пишут ли сами программу. буду ждать ответа.

Vodka
Аватара пользователя
Поблагодарили: 1 раз

№ 1 Сообщение Vodka » 28 янв 2012 09:34

есть такая заставка "от первого канала". и она вроде не флеше написана.

Wiz
ШИЗО
Благодарил (а): 45 раз
Поблагодарили: 34 раза

№ 2 Сообщение Wiz » 05 апр 2012 09:43

Вот сделал часы такие, думаю, что сама идея оригинальная

кто-то владеет 3-мерным программированием ну и прочее

http://www.youtube.com/watch?v=AX3EcNPx2V8 

Wiz
ШИЗО
Благодарил (а): 45 раз
Поблагодарили: 34 раза

№ 3 Сообщение Wiz » 05 апр 2012 10:23

код сам примерно такой (работает при частоте обновления экрана 70 Гц):


Код: Выделить всё

void DrawClock()
{
	int OldBigSymScale;
	{
		double PI=3.1415926;

		double R=200/2;

		int xc=320/2, yc=200/2;



		static double angle=0;

		{

			static sec_start=0;

			unsigned char hour,min,sec;

			GetRealTimeClock(hour, min, sec);
			sec_start=sec;

		}

		static double Speed=1;
		static double SpeedAdd=1;


		for(double a=0; a>-2*PI*12000; a-=2*PI/70*Speed)
		{

			int digit=-1;

			//scr.clear();

			int _clr_=0;

				static double spd=0.0001;
				static double speed_bukve=0.0001;
				static double speed_bukve_add=0.00001;


			for(double b=0; b>=-2*PI; b-=2*PI/12)
			{
				digit++;

				//double R=64*sin(angle);

				if (Keyb[KEY_SPACE])
				{
					static int old_angle;

					static int sav;
					angle=old_angle;
					old_angle=sav;
				}


				angle+=0.0001;

				angle+=0.0000001;

				angle=spd;


				spd+=speed_bukve;


				if (Keyb[KEY_A])
				{
					Keyb.Set(KEY_A,0);
					speed_bukve+=speed_bukve_add;
				}

				if (Keyb[KEY_S])
				{
					Keyb.Set(KEY_S,0);
					speed_bukve-=speed_bukve_add;
				}

				R=64;
				scr.x=320/2 + R*sin(b*angle + PI);//+spd);
				scr.y=200/2 + R*cos(b*angle + PI);//+spd);

				int dig=digit;
				if (digit==0) dig=12;

				//scr<<dig;

				char d[16];
				sprintf(d, "%i", dig);

				OldBigSymScale=BigSymScale;

				BigSymScale=1;

				scr.color=_clr_;

				_clr_++;

				for(int i=0; i<strlen(d); i++)
				scr.putBigSym(d[i], _clr_,7);

				BigSymScale=OldBigSymScale;
			}
			unsigned char hour,min,sec;
			GetRealTimeClock(hour, min, sec);

			char txt[12]={0};
			sprintf(txt,"%02i:%02i:%02i", int(hour), int(min),int(sec));

			scr.x=40;
			scr.y=0;
			scr.color=1;

			char clr=15;

			if (Keyb[KEY_C]) Speed+=SpeedAdd;
			if (Keyb[KEY_V]) Speed-=SpeedAdd;


			a=-Speed*2*PI*counter/70.0;
			scr.line(xc,yc, xc + R*sin(a+PI), yc + R*cos(a+PI), clr);

			int R_sec=60;

			scr.line(xc,yc,
			xc + R_sec*sin(PI + -2*PI*sec/60),// + -2*PI/60 * (counter)/70),
			yc + R_sec*cos(PI + -2*PI*sec/60),// + -2*PI/60 * (counter)/70),
			 clr-1);

			int R_min=70;

			double delta=2*PI/60/10;

			scr.line(xc,yc, xc + R_min*sin(PI + -2*PI*min/60), yc + R_min*cos(PI + -2*PI*min/60), clr-5);
			scr.line(xc,yc, xc + R_min*sin(PI + -2*PI*min/60 + delta), yc + R_min*cos(PI + -2*PI*min/60+delta), clr-5);
			scr.line(xc,yc, xc + R_min*sin(PI + -2*PI*min/60 - delta), yc + R_min*cos(PI + -2*PI*min/60-delta), clr-5);

			int R_hour=40;

			if (hour>12) hour-=12;

			scr.line(xc,yc, xc + R_hour*sin(PI + -2*PI*hour/12), yc + R_hour*cos(PI + -2*PI*hour/12), clr-3);

			counter++;

			if (counter>=70/Speed) counter=0;

			//if (Keyb[KEY_ESC]) break;
			BigSymScale=OldBigSymScale;
			return;
		}
	}
}

gn2

№ 4 Сообщение gn2 » 05 апр 2012 18:03

Вникать в код не стал, но бросился в глаза этот фрагмент
angle+=0.0001;
angle+=0.0000001;
angle=spd;
А нафига 2 первых оператора, чтобы дольше работала?

ХЗ
Экономный
Благодарил (а): 158 раз
Поблагодарили: 347 раз

№ 5 Сообщение ХЗ » 05 апр 2012 18:56

4: gn2:
Нормальный компилятор их просто выкинет.

gn2

№ 6 Сообщение gn2 » 05 апр 2012 19:19

5: X3:
Сомневаюсь, что выкинет. Программист может вставлять не нужные операторы для своих целей. Например в ассемблере есть пустая операция nop. Однако я могу вставить сколько угодных таких операций подряд и все они будут присутствовать в окончательном коде. Просто я хочу, чтобы следующая команда начиналась с адреса памяти, через например 16 байт от последней выполненной команды. Или я просто хочу, чтобы эти += выполнялись для замедления выполнения следующей команды. Транслятор, может выдать
предупреждение, но удалять такие операторы молча он не будет.
Последний раз редактировалось gn2 05 апр 2012 19:28, всего редактировалось 1 раз.

ХЗ
Экономный
Благодарил (а): 158 раз
Поблагодарили: 347 раз

№ 7 Сообщение ХЗ » 05 апр 2012 19:27

6: gn2:
Будет с включенной оптимизацией. И циклы пустые выкинет :)

gn2

№ 8 Сообщение gn2 » 05 апр 2012 19:42

7: X3:
По поводу ассемблера, пустые nop не выкинет и в оптимизированном коде. Смотрел в отладчике SoftIce. Дело в том, что в зарезервированном этими командами место, я в другом фрагменте программы генерирую исполняемый код, например переход на неверный ключ или вы зарегистрированы. Смысл в том, что в дисассемблером коде программы там будут стоять пустые операторы и вскрыть программу для хакера будет несколько сложнее. Правда опытный хакер ее все равно вскроет, если она очень нужна.

ХЗ
Экономный
Благодарил (а): 158 раз
Поблагодарили: 347 раз

№ 9 Сообщение ХЗ » 05 апр 2012 19:44

8: gn2:

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

gn2

№ 10 Сообщение gn2 » 05 апр 2012 19:55

9: X3:
Да здесь я не уверен. Но попробую проверить на VC2008. Позже напишу о результатах.

ХЗ
Экономный
Благодарил (а): 158 раз
Поблагодарили: 347 раз

№ 11 Сообщение ХЗ » 05 апр 2012 19:59

10: gn2:
Давай. У меня просто дома компилеров нет. Завтра проверю. Тока не забудь оптимизацию полную включить :)

Wiz
ШИЗО
Благодарил (а): 45 раз
Поблагодарили: 34 раза

№ 12 Сообщение Wiz » 05 апр 2012 21:47

4: gn2

только пришел, да нет это издержки производства :) смысла нет конечно в тех операторах

yozhyk
Аватара пользователя
Благодарил (а): 2 раза
Поблагодарили: 7 раз

№ 13 Сообщение yozhyk » 06 апр 2012 03:48

Я в AAE лучше получается

Wiz
ШИЗО
Благодарил (а): 45 раз
Поблагодарили: 34 раза

№ 14 Сообщение Wiz » 06 апр 2012 07:48

[quote]Я в AAE лучше получается[/quote]

? ? ?

поподробнее, пожалуйста

ХЗ
Экономный
Благодарил (а): 158 раз
Поблагодарили: 347 раз

№ 15 Сообщение ХЗ » 06 апр 2012 09:49

10: gn2:

Ну вот я проверил.
Исходный код:

Код: Выделить всё

double fun()
{
	double ret_val = 0.;
	ret_val += 10.;
	ret_val += 20.;
	ret_val = -1.;
	return ret_val;
}
Компиляция cl /c /O0 /Fa:

Код: Выделить всё

_fun	PROC
; Line 2
	push	ebp
	mov	ebp, esp
	sub	esp, 8
; Line 3
	fldz
	fstp	QWORD PTR _ret_val$[ebp]
; Line 4
	fld	QWORD PTR _ret_val$[ebp]
	fadd	QWORD PTR __real@4024000000000000
	fstp	QWORD PTR _ret_val$[ebp]
; Line 5
	fld	QWORD PTR _ret_val$[ebp]
	fadd	QWORD PTR __real@4034000000000000
	fstp	QWORD PTR _ret_val$[ebp]
; Line 6
	fld	QWORD PTR __real@bff0000000000000
	fstp	QWORD PTR _ret_val$[ebp]
; Line 7
	fld	QWORD PTR _ret_val$[ebp]
; Line 8
	mov	esp, ebp
	pop	ebp
	ret	0
_fun	ENDP
Компиляция cl /c /Ox /Fa:

Код: Выделить всё

_fun	PROC
; Line 7
	fld	QWORD PTR __real@bff0000000000000
; Line 8
	ret	0
_fun	ENDP

gn2

№ 16 Сообщение gn2 » 06 апр 2012 16:22

15: X3:
Я то же проверил. Ты был прав.
; 9 : int a,b;
; 10 : b=1; a=0;
; 11 : a+=10;
; 12 : a+=5;
; 13 : a=b;
; 14 :
; 15 : return a;

00000 b8 01 00 00 00 mov eax, 1

; 16 : }

00005 c3 ret 0
Строки с 9 по 15 были заменены одой командой пересылки 1 в регистр еах. Что вобщем то и нужно было. Действительно компилятор выкинул все лишнее.

ХЗ
Экономный
Благодарил (а): 158 раз
Поблагодарили: 347 раз

№ 17 Сообщение ХЗ » 06 апр 2012 17:25

16: gn2:
работа у меня такая :) Попробуй еще циклы пустые компилировать :)

Wiz
ШИЗО
Благодарил (а): 45 раз
Поблагодарили: 34 раза

№ 18 Сообщение Wiz » 06 апр 2012 18:37

Андрей, привет!

Хотел поинтересоваться у тебя, насколько компилятор сложная штука как программный продукт ?

ХЗ
Экономный
Благодарил (а): 158 раз
Поблагодарили: 347 раз

№ 19 Сообщение ХЗ » 06 апр 2012 18:54

18: Wiz:
Скачай и посмотри.

Wiz
ШИЗО
Благодарил (а): 45 раз
Поблагодарили: 34 раза

№ 20 Сообщение Wiz » 06 апр 2012 18:54

19: X3:

Спасибо! Скачаю и посмотрю.

Вернуться в «Компьютерный форум»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей