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

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