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

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