source: 2015/26/JoonaO/Autopeli1.cs @ 6449

Revision 6449, 5.2 KB checked in by jojuojal, 5 years ago (diff)
RevLine 
[6236]1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Autopeli1 : PhysicsGame
10{
[6263]11    SoundEffect hyppyAani = LoadSoundEffect("hyppyAani");
[6236]12    Image taustaKuva2 = LoadImage("rata2");
13    Automobile auto;
[6364]14    Image autonKuva = LoadImage("Auto3");
[6236]15    Image taustaKuva = LoadImage("rata");
[6449]16    PhysicsObject viiva;
17    DoubleMeter alaspainLaskuri;
18    Timer aikaLaskuri;
19
[6236]20    public override void Begin()
21    {
[6449]22        AlkuValikko();
23
24    }
25
26    void AlkuValikko()
27    {
28        ClearAll();
29
[6236]30        SetWindowSize(1000, 800);
[6449]31        Surfaces seinat = Level.CreateBorders();
[6236]32        Level.Background.Image = taustaKuva;
[6342]33
[6449]34        MultiSelectWindow alkuValikko = new MultiSelectWindow("MeneeLintassa",
35"Aloita peli", "Lopeta");
[6236]36        alkuValikko.Color = Color.Red;
37        Add(alkuValikko);
[6342]38        alkuValikko.AddItemHandler(0, AloitaPeli);
[6449]39
40        alkuValikko.AddItemHandler(1, Exit);
41
[6236]42    }
[6449]43
[6236]44    void LiikutaPelaajaa(Vector vektori)
45    {
46        auto.Push(vektori);
47    }
[6449]48
[6263]49    void Ajastin()
50    {
51        Timer aikaLaskuri = new Timer();
52        aikaLaskuri.Start();
53
54        Label aikaNautto = new Label();
55        aikaNautto.TextColor = Color.White;
56        aikaNautto.DecimalPlaces = 1;
57        aikaNautto.BindTo(aikaLaskuri.SecondCounter);
58        double aikaaKulunut = aikaLaskuri.SecondCounter.Value;
59        Add(aikaNautto);
60    }
[6449]61
[6236]62    void KaasutaAutoa()
63    {
64        auto.Accelerate();
65    }
[6449]66
[6236]67    void KaannaPelaajaa(Angle kulma)
68    {
69        auto.Turn(kulma, 1.0);
70    }
[6449]71
[6236]72    void Jarruta()
73    {
74        auto.Brake();
75    }
[6449]76
[6236]77    void PelaajaTormasi(PhysicsObject tormaaja, PhysicsObject kohde)
78    {
[6449]79        if (kohde != viiva)
80        {
81            MessageDisplay.Add("Vedit seinää päi!");
82            hyppyAani.Play();
83            MessageDisplay.Add("Bump!");
84        }
[6342]85    }
[6449]86
[6342]87    void AloitaPeli()
88    {
[6236]89
[6449]90        auto = new Automobile(50, 38);
91        auto.Shape = Shape.Rectangle;
92        auto.Mass = 100000000000.0;
93        auto.AngularDamping = 0.9;
94        auto.Image = autonKuva;
95        auto.X = -Level.Width / 4;
96        auto.Y += Level.Height / 3 + auto.Height;
97        Add(auto);
98
99        viiva = PhysicsObject.CreateStaticObject(10, auto.Height * 2 + 5);
100        viiva.X = -Level.Width / 4 + auto.Width;
101        viiva.Y += Level.Height / 3 + viiva.Height / 2 - 7;
102        viiva.IgnoresCollisionResponse = true;
103        Add(viiva);
104
105        LuoAikaLaskuri();
106
107        AddCollisionHandler(auto, viiva, Kaunnistaaika);
108        LuoCheckPoint();
109        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
110        ControllerOne.Vibrate(0.5, 0.5, 0.0, 0.0, 0.1);
111        Keyboard.Listen(Key.Left, ButtonState.Down, KaannaPelaajaa, null, Angle.FromDegrees(1));
112        Keyboard.Listen(Key.Right, ButtonState.Down, KaannaPelaajaa, null, Angle.FromDegrees(-1));
113        Keyboard.Listen(Key.Up, ButtonState.Down, KaasutaAutoa, null);
114        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
115        Keyboard.Listen(Key.Down, ButtonState.Down, Jarruta, null);
116        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
117        Mouse.IsCursorVisible = true;
118
119        AddCollisionHandler(auto, PelaajaTormasi);
120        //AddCollisionHandler(auto, PelaajatTormaavat);
[6342]121    }
[6449]122
[6342]123    void ParhaatPisteet()
124    {
[6236]125
[6342]126    }
[6236]127
[6449]128    void Kaunnistaaika(PhysicsObject auto, PhysicsObject viiva)
129    {
130        if (!aikaLaskuri.Enabled)
131        {
132            alaspainLaskuri.Value = 30;
133            aikaLaskuri.Start();
134        }
135        else
136        {
137            aikaLaskuri.Stop();
138        }
[6236]139
[6449]140    }
[6263]141
[6449]142   
[6263]143
[6449]144    void LuoAikaLaskuri()
145    {
146        alaspainLaskuri = new DoubleMeter(30);
[6263]147
[6449]148        aikaLaskuri = new Timer();
149        aikaLaskuri.Interval = 0.1;
150        aikaLaskuri.Timeout += LaskeAlaspain;
151        //aikaLaskuri.Start();
[6263]152
[6449]153        Label aikaNaytto = new Label();
154        aikaNaytto.TextColor = Color.White;
155        aikaNaytto.DecimalPlaces = 1;
156        aikaNaytto.BindTo(alaspainLaskuri);
157        aikaNaytto.Position -= new Vector(100, 0);
158        aikaNaytto.Color = Color.White;
159        aikaNaytto.TextColor = Color.Black;
160        Add(aikaNaytto);
161    }
[6263]162
[6449]163    void LaskeAlaspain()
164    {
165        alaspainLaskuri.Value -= 0.1;
[6263]166
[6449]167        if (alaspainLaskuri.Value <= 0)
168        {
169            MessageDisplay.Add("Aika loppui...");
170            aikaLaskuri.Stop();
171            double aikaaKulunut = aikaLaskuri.SecondCounter.Value;
172            //Exit();
173            Timer.SingleShot(3, AlkuValikko);
174        }
175    }
[6263]176
177
[6449]178    void PelaajatTormaavat(PhysicsObject tormaaja, PhysicsObject kohde)
179    {
180        MessageDisplay.Add("Bump!");
181    }
[6263]182
[6449]183    void LuoCheckPoint()
184    {
185        PhysicsObject viiva = PhysicsObject.CreateStaticObject(10, auto.Height * 2 + 5);
186        viiva.Color = Color.Red;
187        viiva.X = -Level.Width / 4 + auto.Width;
188        viiva.Y += Level.Height / 3 + viiva.Height / 2 - 7;
189        viiva.IgnoresCollisionResponse = true;
190        Add(viiva);
191    }
[6263]192
193
194
195
196
197
198
199
[6342]200
[6263]201
202
[6449]203
204
205
206
207
208
209
[6236]210}
Note: See TracBrowser for help on using the repository browser.