Показать сообщение отдельно
Старый 23.05.2006, 20:53
scourge ' kangaroo вне форума Посмотреть профиль Отправить личное сообщение для scourge ' kangaroo Посетить домашнюю страницу scourge ' kangaroo Найти все сообщения от scourge ' kangaroo
  № 94  
scourge ' kangaroo
 
Аватар для scourge ' kangaroo

Регистрация: Sep 2005
Сообщений: 390
Отправить сообщение для scourge ' kangaroo с помощью ICQ
я что-то читал, про конкурс, в котором нужно сделать красиво кодом и уместиться в 1кб. правда у меня получилось 1.5кб..

вот http://relevance4.com/thesoulgames.html

вот код. всё в первом кейфрэйме. fps 100, размер 410 на 260

Код:
// Конфиг
// Если значение "true", то заполняется случайными числами
// Если значение "false", то используются введённые параметры
// max - количество элементов
// step - количество шагов, до изменения траектории
// steplength - размер шага в пикселях
// die - шанс смерти элемента
// dietime - продолжительность жизни элемента, перед смертью
//	rnd = "true"	
	rnd = "false"
	if(rnd == "true"){max = random(40) + 10}else{max = 31}
	if(rnd == "true"){step = random(26) + 4}else{step = 10}
	if(rnd == "true"){steplength = random(11)/10}else{steplength = 0.5}
	if(rnd == "true"){die = random(200)}else{die = 100}
	if(rnd == "true"){lifetime = random(500)}else{lifetime = 250}
	logotext = "relevance4.com :: моя никчёмная идея"
	crateAmibas();
	createText();
// Исполняемая часть
function onEnterFrame()
	{
	moveAmibas();
	if(lifetime <= 0){destroyAmibas();}else{lifetime -= 1}
	if(max >= 2)this.statustext._alpha = this.statustext._alpha - 1
	}
// Генерируем траектории элементов
function reset()
	{
	this["fiX" + i] = this.relevance4["x" + i]._x + random(step + 1) - step/2
	this["fiY" + i] = this.relevance4["x" + i]._y + random(step + 1) - step/2
	test();
	}
// Не даём элементам уйти за пределы экрана и оторваться друг от друга
function test()
	{
	if(this["fiX" + i] < 15)reset()
	if(this["fiX" + i] > 385)reset()
	if(this["fiY" + i] < 15)reset()
	if(this["fiY" + i] > 235)reset()
	this["ht" + i] = 0
	for(a = 1; a < max; a++){
	if(a != i)if(this.relevance4["x" + i].hitTest(this.relevance4["x" + a]))this["ht" + i] = 1
	}
	if(this["ht" + i] == 0){
	if(i == 1){a = 2}else{a = 1}
	blX = this.relevance4["x" + a]._x - this.relevance4["x" + i]._x; if(XtoX < 0)XtoX = XtoX*(-1)
	blY = this.relevance4["x" + a]._y - this.relevance4["x" + i]._y; if(YtoY < 0)YtoY = YtoY*(-1)
	blZ = a
	for(a = 1; a < max; a++){
	if(a != i){
	XtoX = this.relevance4["x" + a]._x - this.relevance4["x" + i]._x; if(XtoX < 0)XtoX = XtoX*(-1)
	YtoY = this.relevance4["x" + a]._y - this.relevance4["x" + i]._y; if(YtoY < 0)YtoY = YtoY*(-1)
	if(XtoX < blX)if(YtoY < blY)XtoX = blX; YtoY = blY; blZ = a			
	}
	}
	this["fiX" + i] = this["fiX" + blZ]
	this["fiY" + i] = this["fiY" + blZ]
	}}
// Управляем элэментами
function moveAmibas()
	{
	for (i = 1; i < max; i++){
	if(this["fiX" + i] == undefined)reset();
	test()
	if(this.relevance4["x" + i]._x > this["fiX" + i])this.relevance4["x" + i]._x = this.relevance4["x" + i]._x - steplength
	if(this.relevance4["x" + i]._x < this["fiX" + i])this.relevance4["x" + i]._x = this.relevance4["x" + i]._x - (-steplength)
	if(this.relevance4["x" + i]._y > this["fiY" + i])this.relevance4["x" + i]._y = this.relevance4["x" + i]._y - steplength
	if(this.relevance4["x" + i]._y < this["fiY" + i])this.relevance4["x" + i]._y = this.relevance4["x" + i]._y - (-steplength)
	if(this.relevance4["x" + i]._x == this["fiX" + i])if(this.relevance4["x" + i]._y == this["fiY" + i])reset();
	if(this["ArcX" + i] == this.relevance4["x" + i]._x)reset()
	if(this["ArcY" + i] == this.relevance4["x" + i]._y)reset()
	this["ArcX" + i] = this.relevance4["x" + i]._x
	this["ArcY" + i] = this.relevance4["x" + i]._y
	}}
// Создаём элементы
function crateAmibas()
	{
	this.createEmptyMovieClip("background", this.getNextHighestDepth());
	with (background) 
	{
	beginFill(0x000000, 100);
	lineTo(0, 0); lineTo(408, 0); lineTo(408, 258);
	lineTo(0, 258); lineTo(0, 0); endFill();
    matrix = {a:100, b:500, c:900, d:900, e:50, f:50, g:0, h:0, i:410};
    beginGradientFill("radial", [0x016D6D, 0x003333], [100, 100],
	[0, 0xFF], matrix, "pad", "RGB", 0);
    moveTo(4, 4); lineTo(404, 4); lineTo(404, 254); lineTo(4, 254); lineTo(4, 4); endFill();
	}
	this.createEmptyMovieClip("relevance4", this.getNextHighestDepth());
	with (relevance4)
	{
	this.relevance4.createEmptyMovieClip("x1", this.getNextHighestDepth());
	with (relevance4.x1){
	beginFill(0xFFFFFF, 100);
	lineTo(10, 0); lineTo(28, 0); lineTo(40, 10);
	lineTo(40, 28);	lineTo(28, 40); lineTo(14, 40);
	lineTo(0, 28); lineTo(0, 10); lineTo(10, 0);
	endFill();
	for(a = 2; a < max; a++){
	this.relevance4.x1.duplicateMovieClip("x"+a, this.relevance4.getNextHighestDepth());
	}}}
	this.relevance4.cacheAsBitmap = true;
	this.relevance4.filters = [new flash.filters.BlurFilter(30, 30, 2)];
	this.relevance4.blendMode = 8
	for (i = 1; i < max; i++){
	this.relevance4["x" + i]._x = 185
	this.relevance4["x" + i]._y = 110
	}}	
// Создаём текст
function createText()
	{
	this.createTextField("glowtext", this.getNextHighestDepth(), 4, 238, 402, 40);
	var fmt:TextFormat = new TextFormat();
	glowtext.selectable = false
	glowtext.text = logotext
	fmt.color = 0xFFFFFF;
	fmt.font = "Arial"
	fmt.size = 11
	fmt.align = "right"
	glowtext.setTextFormat(fmt);
	this.glowtext.filters = [new flash.filters.GlowFilter(3, 5, 5,5,4,3)];
	this.glowtext._alpha = 10
	statustxt = "это всего лишь одна никчёмная идея..."
	statusText()
	}
function destroyAmibas()
	{
	dietime = 100
	if(destroy != "true"){
	d1 = random(die); 	d2 = random(die); 
	if(d1 == d2){destroy = "true"; lifetimer = dietime;}
	}
	if(destroy == "true"){
		if(lifetimer == dietime){
		var str:String = max.toString();;
		word = "осталось " + max +  " элементов"
		if(str.charAt(str.length -1) == "1")word = " элемент"
		if(str.charAt(str.length -1) == "2")word = "осталось " + max + " элемента"
		if(str.charAt(str.length -1) == "3")word = "осталось " + max + " элемента"
		if(str.charAt(str.length -1) == "4")word = "осталось " + max + " элемента"
		if(firsttime == undefined){
			statustxt = "идея оказалась никому не нужной. скоро её нестанет..."
			firsttime = 1
		}else{statustxt = "идея постепенно умирает. " + word}
		if(max < 10){
		choise = random(4)
		if(choise == 1)statustxt = "идея скоро умрёт. она никому не нужна..."
		if(choise == 2)statustxt = "идея почти умерла. почти..."
		if(choise == 3)statustxt = "маленькое пятно. ненужная идея..."
		}
		if(max < 2)statustxt = "\n \n всего лишь идея... \n умерла, так и не родившись... \n может быть, это было лекарство от спида... \n может быть новый вид топлива... \n а может быть, это был всего лишь детский рисунок, \n так и не нарисованный из-за сломавшегося карандаша... \n \n relevance4.com \n философия."
		statusText()
		this.relevance4["x" + (max-1)].beginFill(0x000000, 100);
		this.relevance4["x" + (max-1)].lineTo(10, 0); lineTo(28, 0); lineTo(40, 10);
		this.relevance4["x" + (max-1)].lineTo(40, 28);	lineTo(28, 40); lineTo(14, 40);
		this.relevance4["x" + (max-1)].lineTo(0, 28); lineTo(0, 10); lineTo(10, 0);
		this.relevance4["x" + (max-1)].endFill();
		}
	this.relevance4["x" + (max-1)]._alpha = lifetimer
	lifetimer -= 1
	if(lifetimer == 0){
	removeMovieClip(this.relevance4["x" + (max-1)]);
	max -= 1
	destroy = "false"
	}}}
function statusText(){
	removeMovieClip(this.statustext);
	this.createTextField("statustext", this.getNextHighestDepth()+1, 4, 10, 402, 200);
	var fmt:TextFormat = new TextFormat();
	this.statustext.selectable = false
	this.statustext.multiline = true
	this.statustext.text = statustxt
	fmt.color = 0xFFFFFF;
	fmt.font = "Arial"
	fmt.size = 12
	fmt.align = "center"
	this.statustext.setTextFormat(fmt);
	this.statustext.filters = [new flash.filters.GlowFilter(3, 5, 5,5,4,3)];
	this.statustext._alpha = 100
}