Ejemplo n.º 1
0
        protected override void Initialize()
        {
            SpriteBatchHelpers.Initialize(this.GraphicsDevice);

            graphics.IsFullScreen = false;
            graphics.PreferredBackBufferWidth = 512;
            graphics.PreferredBackBufferHeight = 512;
            graphics.ApplyChanges();

            inputSystem = new InputSystem(this);
            inputSystem.RegisterKeyReleasedAction(Keys.Escape, () => Exit());
            inputSystem.RegisterKeyReleasedAction(Keys.Up, () => { level++; RefreshTurtle(); });
            inputSystem.RegisterKeyReleasedAction(Keys.Down, () => { level--; RefreshTurtle(); });
            inputSystem.RegisterKeyReleasedAction(Keys.Left, () => { dist /= 2; RefreshTurtle(); });
            inputSystem.RegisterKeyReleasedAction(Keys.Right, () => { dist *= 2; RefreshTurtle(); });
            inputSystem.RegisterKeyReleasedAction(Keys.W, () => { angle /= 2; RefreshTurtle(); });
            inputSystem.RegisterKeyReleasedAction(Keys.S, () => { angle *= 2; RefreshTurtle(); });
            inputSystem.RegisterKeyReleasedAction(Keys.D0, () =>
                {
                    system = new TreeSystem();
                    angle = 45;
                    level = 8;
                    RefreshTurtle();
                });
            inputSystem.RegisterKeyReleasedAction(Keys.D1, () =>
                {
                    system = new SierpinskiTriangle();
                    angle = 60;
                    level = 8;
                    RefreshTurtle();
                });
            inputSystem.RegisterKeyReleasedAction(Keys.D2, () =>
                {
                    system = new SierpinskiTriangleB();
                    angle = 120;
                    level = 8;
                    RefreshTurtle();
                });
            inputSystem.RegisterKeyReleasedAction(Keys.D3, () =>
                {
                    system = new DragonCurve();
                    angle = 90;
                    dist = 6;
                    level = 8;
                    RefreshTurtle();
                });
            inputSystem.RegisterKeyReleasedAction(Keys.D4, () =>
                {
                    system = new KochCurve();
                    angle = 90;
                    level = 8;
                    RefreshTurtle();
                });
            inputSystem.RegisterKeyReleasedAction(Keys.D5, () =>
                {
                    system = new CantorDust();
                    level = 8;
                    RefreshTurtle();
                });
            inputSystem.RegisterKeyReleasedAction(Keys.D6, () =>
                {
                    system = new FractalPlant();
                    angle = 35;
                    level = 8;
                    RefreshTurtle();
                });

            base.Initialize();
        }
Ejemplo n.º 2
0
        protected override void LoadContent()
        {
            spriteBatch = new SpriteBatch(GraphicsDevice);
            this.Services.AddService(typeof(SpriteBatch), spriteBatch);

            system = new TreeSystem();

            turtle = new Turtle(this);
            turtle.Operations.Add('a', () => turtle.Draw(dist));
            turtle.Operations.Add('b', () => turtle.Draw(dist));
            turtle.Operations.Add('m', () => turtle.Move(dist));
            turtle.Operations.Add('-', () => turtle.Turn(MathHelper.ToRadians(-angle)));
            turtle.Operations.Add('+', () => turtle.Turn(MathHelper.ToRadians(angle)));
            turtle.Operations.Add('[', () => { turtle.Push(); turtle.Turn(MathHelper.ToRadians(-angle)); });
            turtle.Operations.Add(']', () => { turtle.Pop(); turtle.Turn(MathHelper.ToRadians(angle)); });
            turtle.Drawings.Add(system.Get(level, 1));

            base.LoadContent();
        }