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

Revision 8230, 4.7 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    PhysicsObject hitBox;
17    PhysicsStructure bike;
18    Timer timer;
19    Smoke smoke;
20    public override void Begin()
21    {
22
23        Level.Width = Screen.Width * 25;
24        SmoothTextures = true;
25        IsFullScreen = false;
26
27        CreatePlayer();
28        CreateLevel();
29        CreateSmoke();
30        Timer();
31        Keys();
32
33    }
34    void Loss(PhysicsObject hitBox, PhysicsObject level)
35    {
36        smoke.Destroy();
37        bike.Destroy();
38        timer.Stop();
39    }
40    void Win(PhysicsObject goal, PhysicsStructure bike)
41    {
42        timer.Stop();
43        MessageDisplay.Add("gg");
44        MessageDisplay.Add("gg");
45        MessageDisplay.Add("gg");
46        MessageDisplay.Add("gg");
47        MessageDisplay.Add("gg");
48        MessageDisplay.Add("gg");
49        MessageDisplay.Add("gg");
50        MessageDisplay.Add("gg");
51        MessageDisplay.Add("gg");
52        MessageDisplay.Add("gg");
53        MessageDisplay.Add("gg");
54        MessageDisplay.Add("gg");
55        MessageDisplay.Add("gg");
56        MessageDisplay.Add("gg");
57        MessageDisplay.Add("gg");
58        MessageDisplay.Add("gg");
59    }
60    void CreateSmoke()
61    {
62        Wind = new Vector(-25, 0);
63        smoke = new Smoke();
64        Timer smokeTimer = new Timer();
65        smokeTimer.Interval = 0.1;
66        smokeTimer.Timeout += delegate { smoke.Position = bike.Objects[0].Position; };
67        smokeTimer.Start();
68        Add(smoke);
69    }
70    void Timer()
71    {
72        timer = new Timer();
73        timer.Start();
74
75        Label label = new Label();
76        label.TextColor = Color.Blue;
77        label.DecimalPlaces = 1;
78        label.BindTo(timer.SecondCounter);
79        label.X = Screen.Left + 50;
80        label.Y = Screen.Top - 50;
81        Add(label);
82    }
83    void CreateLevel()
84    {
85        Surface level = Surface.CreateBottom(Level, 500, 700, 200, 250); //500, 700, 200, 250 //10, 10, 10, 10
86        Add(level);
87        level.Left = Screen.Left;
88        PhysicsObject flat = PhysicsObject.CreateStaticObject(15000.0, 50.0);
89        flat.Left = level.Right;
90        flat.Bottom = level.Bottom;
91        flat.Color = level.Color;
92        Add(flat);
93        PhysicsObject goal = new PhysicsObject(50.0, 500.0);
94        goal.Color = Color.Brown;
95        goal.Right = flat.Right;
96        goal.Bottom = flat.Top;
97        goal.Tag = "µ";
98        Add(goal);
99
100        Gravity = new Vector(0.0, -800.0);
101
102        AddCollisionHandler(goal, bike, Win);
103        AddCollisionHandler(level, hitBox, Loss);
104    }
105    void CreatePlayer()
106    {
107        leftTire = new PhysicsObject(57.5, 57.5, Shape.Circle);
108        rightTire = new PhysicsObject(57.5, 57.5, Shape.Circle);
109        bikePhysicsObject = new PhysicsObject(250.0, 200.0);
110        hitBox = new PhysicsObject(25.0, 25.0, Shape.Circle);
111        hitBox.Color = Color.Red;
112        leftTire.X = -70.0;
113        leftTire.Y = -260.0;
114        rightTire.X = 65.0;
115        rightTire.Y = -260.0;
116        bikePhysicsObject.X = 0;
117        bikePhysicsObject.Y = -200;
118        hitBox.Top = bikePhysicsObject.Top - 20.0;
119        leftTire.Image = tire;
120        rightTire.Image = tire;
121        bikePhysicsObject.Image = motorbike;
122        this.bike = new PhysicsStructure(leftTire, rightTire, bikePhysicsObject, hitBox);
123        bikePhysicsObject.IgnoresCollisionResponse = true;
124        Add(this.bike);
125        hitBox.IsVisible = false;
126        bike.KineticFriction = 1.0;
127        bike.AngularDamping = 0.99;
128        bike.LinearDamping = 1;
129        bike.Restitution = 0.2;
130        bike.Y += 100;
131        Camera.Follow(bikePhysicsObject);
132    }
133    void Keys()
134    {
135        Keyboard.Listen(Key.Down, ButtonState.Down, Movement, null, new Vector(-5000, 0));
136        Keyboard.Listen(Key.Up, ButtonState.Down, Movement, null, new Vector(5000, 0));
137        Keyboard.Listen(Key.Left, ButtonState.Down, ChangeAngle, null, 1.0);
138        Keyboard.Listen(Key.Right, ButtonState.Down, ChangeAngle, null, -1.0);
139        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
140    }
141    void Movement(Vector movement)
142    {
143        if (GetObjectAt(bikePhysicsObject.Position - new Vector(0, bike.Height / 2) * 0.9, 0.1) != null)
144        {
145            bike.Push(movement);
146        }
147    }
148    void ChangeAngle(double ammount)
149    {
150        bike.AngularVelocity = ammount;
151    }
152}
Note: See TracBrowser for help on using the repository browser.