source: 2015/23/AkuL/FysiikkaPeli1/FysiikkaPeli1/Avaruuspeli.cs @ 5900

Revision 5900, 8.1 KB checked in by sieerinn, 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;
8
9public class FysiikkaPeli1 : PhysicsGame
10{
11    Image PelaajanKuva = LoadImage("spaceman");
12    Image PelaajanKuvaLiekki = LoadImage("flying_spaceman");
13    Image PelaajanKuvaVasen;
14    Image PelaajanKuvaLiekkiVasen;
15    Image MeteoriitinKuva = LoadImage("vodka");
16    Image LaatikonKuva = LoadImage("laatiokko");
17
18    IntMeter pisteLaskuri;
19
20    bool oikealle = true;
21    PhysicsObject pelaaja;
22    private double liikkumisnopeus = 500;
23
24    EasyHighScore topLista = new EasyHighScore();
25
26    DoubleMeter alaspainLaskuri;
27    Timer aikaLaskuri;
28
29
30
31    public override void Begin()
32    {
33        alkuValikko();
34    }
35    void alkuValikko()
36
37        {
38        MultiSelectWindow alkuValikko = new MultiSelectWindow("AvaruusSeikkailu :))","Aloita peli", "KURWA & VODKA", "Lopeta");
39        Add(alkuValikko);
40        alkuValikko.AddItemHandler(0, AloitaPeli);
41        alkuValikko.AddItemHandler(1, Kurwa);
42        alkuValikko.AddItemHandler(2, Exit);
43    }
44    void AloitaPeli()
45    {
46        ClearAll();
47   
48       
49
50        PelaajanKuvaVasen = Image.Mirror(PelaajanKuva);
51        PelaajanKuvaLiekkiVasen = Image.Mirror(PelaajanKuvaLiekki);
52
53        LuoKentta();
54        LuoAikaLaskuri();
55        LuoPistelaskuri();
56
57        LaskeAlaspain();
58
59        Gravity = new Vector(0, -0);
60
61        Level.Background.CreateStars(10000);
62
63
64        //Explosion rajahdys = new Explosion(100);
65        //Add(rajahdys);
66
67       
68
69     /*   PhysicsObject pelaaja = new PhysicsObject(50, 120);
70        pelaaja.Shape = Shape.Rectangle;
71        pelaaja.Image = PelaajanKuva;
72        pelaaja.Mass = 5.0;
73        pelaaja.IgnoresExplosions = false;
74        Add(pelaaja);*/
75
76       
77        Keyboard.Listen(Key.W, ButtonState.Down, Liikuta, null, pelaaja, -2200.0);
78        Keyboard.Listen(Key.W, ButtonState.Released, Pysahdy, null, pelaaja);
79        Keyboard.Listen(Key.A, ButtonState.Down, pyorita, null, pelaaja, 35000.0);
80        Keyboard.Listen(Key.D, ButtonState.Down, pyorita, null, pelaaja, -35000.0);
81
82        PhysicsObject meteoriitti = new PhysicsObject(20, 60);
83        meteoriitti.Shape = Shape.Circle;
84        meteoriitti.Position = RandomGen.NextVector(Level.Left, Level.Bottom, Level.Right, Level.Top);
85        meteoriitti.Image = MeteoriitinKuva;
86        meteoriitti.Mass = 5.0;
87        Add(meteoriitti);
88
89        PhysicsObject Laatikko = new PhysicsObject(50, 50);
90        Laatikko.Shape = Shape.Rectangle;
91        Laatikko.Position = RandomGen.NextVector(Level.Left, Level.Bottom, Level.Right, Level.Top);
92        Laatikko.Image = LaatikonKuva;
93        Laatikko.Mass = 10.0;
94        Add(Laatikko);
95
96        Camera.Follow(pelaaja);
97        Camera.ZoomFactor = 1.0;
98
99       // Surface alaReuna = Surface.CreateBottom(Level, 30, 100, 40, 10);
100        //Add(alaReuna);
101        //alaReuna.Color = Color.Gray;
102        //Surface ylaReuna = Surface.CreateTop(Level, 30, 70, 40, 10);
103        //Add(ylaReuna);
104        //ylaReuna.Color = Color.Gray;
105        //Surface vasenReuna = Surface.CreateLeft(Level, 30, 100, 30, 10);
106        //Add(vasenReuna);
107        //vasenReuna.Color = Color.Gray;
108        //Surface oikeaReuna = Surface.CreateRight(Level, 30, 120, 40, 10);
109        //Add(oikeaReuna);
110        //oikeaReuna.Color = Color.Gray;
111
112        MediaPlayer.Play("russianrap");
113        MediaPlayer.IsRepeating = true;
114
115
116        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
117        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
118
119    }
120
121    void Liikuta(PhysicsObject pelaaja, double suunta)
122    {
123        pelaaja.Push((pelaaja.AbsoluteAngle-Angle.FromDegrees(90)).GetVector() * suunta);
124        pelaaja.Image = oikealle? PelaajanKuvaLiekki : PelaajanKuvaLiekkiVasen;
125        }
126    void pyorita(PhysicsObject pelaaja, double suunta)
127    {
128        pelaaja.ApplyTorque(suunta);
129        if (suunta < 0)
130            oikealle = true;
131        else
132            oikealle = false;
133
134        pelaaja.Image = oikealle ? PelaajanKuva : PelaajanKuvaVasen;
135    }
136
137    void LuoKentta()
138    {
139        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("testikentta");
140
141        ruudut.SetTileMethod(new Color(0, 255, 33, 255), LuoPelaaja);
142        ruudut.SetTileMethod(new Color(0, 0, 0, 255), LuoTaso);
143        ruudut.SetTileMethod(new Color(255, 255, 28, 255), LuoMeteoriitti);
144        ruudut.SetTileMethod(new Color(255, 8, 0, 255), LuoLaatikko);
145       // ruudut.SetTileMethod(new Color(0, 0, 255, 255), LuoMaali);
146
147       ruudut.Execute(100, 100);
148    }
149
150    void LuoTaso(Vector paikka, double leveys, double korkeus)
151    {
152        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
153        taso.Position = paikka;
154        taso.Color = Color.Gray;
155        Add(taso);
156    }
157
158    void Pysahdy(PhysicsObject pelaaja)
159    {
160        pelaaja.Image = oikealle? PelaajanKuva : PelaajanKuvaVasen;
161    }
162
163    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
164    {
165        pelaaja = new PhysicsObject(50, 120);
166        pelaaja.Shape = Shape.Rectangle;
167        pelaaja.Image = PelaajanKuva;
168        pelaaja.Position = paikka;
169        pelaaja.Mass = 5.0;
170        AddCollisionHandler(pelaaja, "vodka", TormaaVodkaan);
171        pelaaja.IgnoresExplosions = false;
172        Add(pelaaja);
173
174    }
175
176    void LuoMeteoriitti(Vector paikka, double leveys, double korkeus)
177    {
178        PhysicsObject meteoriitti = new PhysicsObject(20, 60);
179        meteoriitti.Shape = Shape.Circle;
180        meteoriitti.Position = RandomGen.NextVector(Level.Left, Level.Bottom, Level.Right, Level.Top);
181        meteoriitti.Image = MeteoriitinKuva;
182        meteoriitti.Position = paikka;
183        meteoriitti.Tag = "vodka";
184        meteoriitti.Mass = 5.0;
185        Add(meteoriitti);
186    }
187
188    void LuoLaatikko(Vector paikka, double leveys, double korkeus)
189    {
190        PhysicsObject Laatikko = new PhysicsObject(50, 50);
191        Laatikko.Shape = Shape.Rectangle;
192        Laatikko.Position = RandomGen.NextVector(Level.Left, Level.Bottom, Level.Right, Level.Top);
193        Laatikko.Image = LaatikonKuva;
194        Laatikko.Position = paikka;
195        Laatikko.Mass = 10.0;
196        Add(Laatikko);
197    }
198
199    void LuoMaali(Vector paikka, double leveys, double korkeus)
200    {
201
202
203    }
204    void LuoAikaLaskuri()
205    {
206        alaspainLaskuri = new DoubleMeter(60);
207
208        aikaLaskuri = new Timer();
209        aikaLaskuri.Interval = 0.1;
210        aikaLaskuri.Timeout += LaskeAlaspain;
211        aikaLaskuri.Start();
212
213        Label aikaNaytto = new Label();
214        aikaNaytto.TextColor = Color.White;
215        aikaNaytto.DecimalPlaces = 1;
216        aikaNaytto.BindTo(alaspainLaskuri);
217        aikaNaytto.Y = 300;
218        Add(aikaNaytto);
219    }
220
221    void LaskeAlaspain()
222    {
223        alaspainLaskuri.Value -= 0.1;
224
225        if (alaspainLaskuri.Value <= 0)
226        {
227            MessageDisplay.Add("Sinulta loppui vodka!!");
228            aikaLaskuri.Stop();
229            pelaaja.Destroy();
230            topLista.EnterAndShow(pisteLaskuri.Value);
231            topLista.HighScoreWindow.Closed += LopetusIkkuna;
232        }
233    }
234
235    void TormaaVodkaan(PhysicsObject pelaaja, PhysicsObject vodka)
236    {
237        vodka.Destroy();
238        pisteLaskuri.Value ++;
239    }
240    void LuoPistelaskuri()
241    {
242        pisteLaskuri = new IntMeter(0);
243       
244
245        Label pisteNaytto = new Label();
246        pisteNaytto.X = Screen.Left + 100;
247        pisteNaytto.Y = Screen.Top - 100;
248        pisteNaytto.TextColor = Color.Green;
249        pisteNaytto.Color = Color.Black;
250
251        pisteNaytto.BindTo(pisteLaskuri);
252        Add(pisteNaytto);
253    }
254
255    void LopetusIkkuna(Window W)
256    {
257        MultiSelectWindow LopetusValikko = new MultiSelectWindow("Hävisit Pelin","Yritä Uudelleen?", "Poistu");
258        Add(LopetusValikko);
259       LopetusValikko.AddItemHandler(0, AloitaPeli);
260       LopetusValikko.AddItemHandler(1, Exit);
261    }
262
263    void Kurwa()
264    {
265        System.Diagnostics.Process.Start("http://www.hurr-durr.com/");
266        alkuValikko();
267    }
268}
Note: See TracBrowser for help on using the repository browser.