source: 2016/30/AleksiN/name/name/name/name.cs @ 8224

Revision 8224, 3.8 KB checked in by almajono, 3 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8using System.Linq;
9public class name : PhysicsGame
10{
11    Image motorbike = LoadImage("motorbike");
12    Image tire = LoadImage("tire");
13    PhysicsObject bikePhysicsObject;
14    PhysicsObject leftTire;
15    PhysicsObject rightTire;
16    PhysicsStructure bike;
17    Timer timer;
18    public override void Begin()
19    {
20
21        Level.Width = Screen.Width * 25;
22        SmoothTextures = true;
23        IsFullScreen = false;
24
25        CreatePlayer();
26        CreateLevel();
27        CreateSmoke();
28        Timer();
29        Keys();
30
31    }
32    void Goal(PhysicsObject goal, PhysicsStructure bike)
33    {
34        timer.Stop();
35    }
36    void CreateSmoke()
37    {
38        Wind = new Vector(-25, 0);
39        Smoke smoke = new Smoke();
40        Timer smokeTimer = new Timer();
41        smokeTimer.Interval = 0.1;
42        smokeTimer.Timeout += delegate { smoke.Position = bike.Objects[0].Position; };
43        smokeTimer.Start();
44        Add(smoke);
45    }
46    void Timer()
47    {
48        timer = new Timer();
49        timer.Start();
50
51        Label label = new Label();
52        label.TextColor = Color.Blue;
53        label.DecimalPlaces = 1;
54        label.BindTo(timer.SecondCounter);
55        label.X = Screen.Left + 50;
56        label.Y = Screen.Top - 50;
57        Add(label);
58    }
59    void CreateLevel()
60    {
61        Surface level = Surface.CreateBottom(Level, 500, 700, 200, 250); //500, 700, 200, 250
62        Add(level);
63        level.Left = Screen.Left;
64        PhysicsObject flat = PhysicsObject.CreateStaticObject(10000.0, 50.0);
65        flat.Left = level.Right;
66        flat.Bottom = level.Bottom;
67        flat.Color = level.Color;
68        Add(flat);
69        PhysicsObject goal = new PhysicsObject(50.0, 500.0);
70        goal.Color = Color.Brown;
71        goal.Right = flat.Right;
72        goal.Bottom = flat.Top;
73        goal.Tag = "µ";
74        Add(goal);
75
76        Gravity = new Vector(0.0, -800.0);
77
78        AddCollisionHandler(goal, bike, Goal);
79    }
80    void CreatePlayer()
81    {
82        leftTire = new PhysicsObject(57.5, 57.5, Shape.Circle);
83        rightTire = new PhysicsObject(57.5, 57.5, Shape.Circle);
84        bikePhysicsObject = new PhysicsObject(250.0, 200.0);
85        leftTire.X = -70.0;
86        leftTire.Y = -260.0;
87        rightTire.X = 65.0;
88        rightTire.Y = -260.0;
89        bikePhysicsObject.X = 0;
90        bikePhysicsObject.Y = -200;
91        leftTire.Image = tire;
92        rightTire.Image = tire;
93        bikePhysicsObject.Image = motorbike;
94        this.bike = new PhysicsStructure(leftTire, rightTire, bikePhysicsObject);
95        bikePhysicsObject.IgnoresCollisionResponse = true;
96        Add(this.bike);
97        Add(bikePhysicsObject);
98        bike.KineticFriction = 1.0;
99        bike.AngularDamping = 0.99;
100        bike.LinearDamping = 1;
101        bike.Restitution = 0.2;
102        bike.Y += 100;
103        Camera.Follow(bikePhysicsObject);
104    }
105    void Keys()
106    {
107        Keyboard.Listen(Key.Down, ButtonState.Down, Movement, null, new Vector(-5000, 0));
108        Keyboard.Listen(Key.Up, ButtonState.Down, Movement, null, new Vector(5000, 0));
109        Keyboard.Listen(Key.Left, ButtonState.Down, ChangeAngle, null, 1.0);
110        Keyboard.Listen(Key.Right, ButtonState.Down, ChangeAngle, null, -1.0);
111        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
112    }
113    void Movement(Vector movement)
114    {
115        if (GetObjectAt(bikePhysicsObject.Position - new Vector(0, bike.Height / 2) * 0.9, 0.1) != null)
116        {
117            bike.Push(movement);
118        }
119    }
120    void ChangeAngle(double ammount)
121    {
122        bike.AngularVelocity = ammount;
123    }
124}
Note: See TracBrowser for help on using the repository browser.