import Turtle.as class Snowflake extends MovieClip { private var startX : Number; private var startY : Number; private var startHeading : Number; private var step : Number; private var turn : Number; private var dX : Number; private var dY : Number; private var aX : Number; private var aY : Number; private var heading_dX : Number; private var turn_dX : Number; private var type : Number; private var col : Number; private var turtle:Turtle; private var axiom_str : String = "F"; private var bigF_str : String = "F[-F][+F]"; private var bigF2_str : String = "F[-F][F][+F]"; private var littleF_str : String = "f"; private var num_generations = 1; function Snowflake( ) { } function init(t : Turtle) { this.startX = Math.random() * Stage.width; this.startY = Math.random() * Stage.height; this.startHeading = Math.random() * 359.5; this.step = (Math.random() * 10) + 5.0; this.turn = Math.random() * 359.5; this.dX = (Math.random() * 11) - 5.5; this.dY = (Math.random() * 11) - 5.5; this.aX = ((Math.random() * 11) - 5.5) / 10.0; this.aY = ((Math.random() * 11) - 5.5) / 10.0; this.heading_dX = ((Math.random() * 11) - 5.5) / 2.0; this.turn_dX = ((Math.random() * 11) - 5.5) / 2.0; this.type = Math.floor(Math.random() * 2); var colBit = Math.floor((Math.random() * 127) + 128); this.col = colBit; colBit *= 256; this.col += colBit; colBit *= 256; this.col += colBit; // colBit *= 256; // this.col += colBit; // save ref to global turtle this.turtle = t; //trace(this.startX + ", " +this.startY); } function move () { var i : Number; this.startX += this.dX; this.startY += this.dY; this.dX += this.aX; this.dY += this.aY; this.startHeading += this.heading_dX; this.turn += this.turn_dX; if (this.startX < -200) { this.startX = Stage.width + 50; } if (this.startY < -200) { this.startY = Stage.height + 50; } if (this.startX > Stage.width + 50) { this.startX = -200; } if (this.startY > Stage.height + 50) { this.startY = -200; } if (this.dX > 10) { this.dX = 10; this.aX = -Math.abs(this.aX); } if (this.dX < -10) { this.dX = -10; this.aX = Math.abs(this.aX); } if (this.dY > 10) { this.dY = 5; this.aY = -Math.abs(this.aY); } if (this.dY < 0) { this.dY = 0; this.aY = Math.abs(this.aY); } } function onEnterFrame() { paint(); move(); } function paint() { this.clear(); this.lineStyle( 1, this.col, 100 ); this.moveTo(this.startX, this.startY); for(var j : Number = 0; j < 6; j++) { this.turtle.setX (this.startX); this.turtle.setY (this.startY); this.turtle.setH (this.startHeading + (j * 60.0)); // six sided snowflake this.turtle.setStep (this.step); this.turtle.setTurn (this.turn); this.turtle.interpret(this, num_generations, 0); } } function getAxiom() : String { return axiom_str; } function getBigF() : String { return bigF_str; } function getBigF2() : String { return bigF2_str; } function getLittleF() : String { return littleF_str; } function getType() : Number { return type; } function getStep() : Number { return step; } function getTurn() : Number { return turn; } } /* void SaveTurtle(void) { if(++SavedTurtles < NUM_TURTLES) { gTheTurtle[1] = gTheTurtle[0]; gTheTurtle++; } else oBeepAndExit(); } void RestoreTurtle(void) { if(SavedTurtles-- > 0) gTheTurtle--; else oBeepAndExit(); } */ /*function getBinaryStringRepresentation() : String { var binaryColour = convertToBinary(red) + convertToBinary(green) + convertToBinary(blue); return binaryColour; } function setBinaryStringRepresentation(bs : String) { var decimal = 0; trace("bs = " + bs); for (var i = 1; i <= 24; i++) { if (bs.substr(24-i, 1) == "1") { decimal += Math.pow(2, i); } } trace("decimal = " + decimal); this.red = (decimal & 16711680) >> 16; this.green = (decimal & 65280) >> 8; this.blue = decimal & 255; trace("red = " + red + ", green = " + green + ", blue = " + blue); }*/ // eight bit conversion /*function convertToBinary(numberToConvert:Number):String { var resultString:String = ""; for (var i = 0; i < 8; i++) { // Extract least significant bit using bitwise AND var lsb:Number = numberToConvert & 1; // Add this bit to the result resultString = (lsb ? "1" : "0") + resultString; // Shift numberToConvert right by one bit, to see next bit numberToConvert >>= 1; } return resultString; } */ //trace(convertToBinary(479)); // Returns the string 00000000000000000000000111011111 // This string is the binary representation of the decimal // number 479 //}