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(); }
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(); }