source: 2015/24/OttoK/Grand Theft Norsu II/Grand Theft Norsu II/Grand Theft Norsu II/Grand_Theft_Norsu_II.cs @ 5977

Revision 5977, 11.3 KB checked in by otoskinn, 4 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 Grand_Theft_Norsu_II : PhysicsGame
10{
11   
12    Image kaupunkitausta = LoadImage("kaupunkitausta");
13   
14    double nopeus = 750;
15    const double hyppyNopeus = 1000;
16    const int RUUDUN_KOKO = 42;
17    GameObject tahtain;
18
19    PlatformCharacter pelaaja1;
20
21    Image pelaajanKuva = LoadImage("norsu");
22    Image tahtiKuva = LoadImage("tahti");
23    Image auto1kuva = LoadImage("auto1kuva");
24    Image kursorinkuva = LoadImage("kursori1");
25    Image panoksenkuba = LoadImage("panos");
26    double hyppykerroin = 1.0;
27    AssaultRifle pelaajan1Ase;
28    Grenade kranaatti;
29
30
31
32    SoundEffect maaliAani = LoadSoundEffect("maali");
33
34    bool Autossa = false;
35
36    public override void Begin()
37    {
38        IsFullScreen = false;
39        SetWindowSize(1024, 768, true); 
40        Gravity = new Vector(0, -1000);
41       
42
43
44        Mouse.IsCursorVisible = false;
45        Vector paikkaRuudulla = Mouse.PositionOnScreen;
46        Vector paikkaKentalla = Mouse.PositionOnWorld;
47        tahtain = new GameObject(50, 50);
48        tahtain.Image = kursorinkuva;
49        Add(tahtain);
50
51        LuoKentta();
52        LisaaNappaimet();
53
54        Camera.Follow(pelaaja1);
55        Camera.ZoomFactor = 1.2;
56        Camera.StayInLevel = false;
57    }
58
59    void LuoKentta()
60    {
61        TileMap kentta = TileMap.FromLevelAsset("kentta1");
62        kentta.SetTileMethod('#', LisaaTaso);
63        kentta.SetTileMethod('*', LisaaTahti);
64        kentta.SetTileMethod('N', LisaaPelaaja);
65        kentta.SetTileMethod('A', LuoAuto);
66        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
67        Level.CreateBorders();
68        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
69        Level.Background.Image = kaupunkitausta;
70
71        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
72        "Aloita peli","Lopeta");
73        Add(alkuValikko);
74
75
76       
77    }
78
79    void LisaaTaso(Vector paikka, double leveys, double korkeus)
80    {
81        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
82        taso.Position = paikka;
83        taso.Color = Color.Green;
84        taso.IgnoresExplosions = true;
85        Add(taso);
86    }
87
88    void LisaaTahti(Vector paikka, double leveys, double korkeus)
89    {
90        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
91        tahti.IgnoresCollisionResponse = true;
92        tahti.Position = paikka;
93        tahti.Image = tahtiKuva;
94        tahti.Tag = "tahti";
95        Add(tahti);
96    }
97
98    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
99    {
100        pelaaja1 = new PlatformCharacter(leveys, korkeus);
101        pelaaja1.Position = paikka;
102        pelaaja1.Mass = 4.0;
103        pelaaja1.Image = pelaajanKuva;
104        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
105        pelaajan1Ase = new AssaultRifle(30, 10);
106
107        //Ammusten määrä aluksi:
108        pelaajan1Ase.Ammo.Value = 1000;
109
110        //Mitä tapahtuu kun ammus osuu johonkin?
111        pelaajan1Ase.ProjectileCollision = AmmusOsui;
112
113        pelaaja1.Add(pelaajan1Ase);
114        Add(pelaaja1);
115     
116
117
118       
119    }
120    void MeneAutoon(PhysicsObject auto)
121    {
122        pelaaja1.Image = auto1kuva;
123        //pelaaja1.Shape = Shape.FromImage(auto1kuva);
124
125        pelaaja1.Position = auto.Position;
126        pelaaja1.Size = auto.Size;
127        auto.Destroy();
128
129        Autossa = true;
130       
131    }
132
133
134
135
136    void LisaaNappaimet()
137    {
138       
139        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
140        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
141
142        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
143        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
144        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
145        Keyboard.Listen(Key.F2, ButtonState.Down, AvaaKirjoitusIkkuna, "Avaa kirjoitusikkunan");
146        Keyboard.Listen(Key.LeftControl, ButtonState.Pressed, AsetaHyppykerroin, "Korkeampi hyppy", 1.5);
147        Keyboard.Listen(Key.LeftControl, ButtonState.Released, AsetaHyppykerroin, null, 1.0);
148        //Mouse.Listen(MouseButton.Left, ButtonState.Pressed, TarkistaHiirenPainallus, "Objektin kohdalla toiminto");
149        Keyboard.Listen(Key.F, ButtonState.Pressed, UlosAutosta, "Mene ulos autosta");
150        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
151        Keyboard.Listen(Key.E, ButtonState.Pressed, HeitaKranaatti, "Heita kranaatti", pelaaja1); 
152
153    //ammus.Destroy();
154
155
156        Mouse.ListenWheel(ZoomaaKenttaa, "");
157        Mouse.ListenMovement(0.0, TahtaaAseella, "");
158        Mouse.ListenMovement(0.0, KuunteleLiiketta, null);
159        //kranaatti.Explosion.AddShockwaveHandler("vihollinen", KranaattiOsui);
160
161        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
162
163        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
164        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
165        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
166        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 2.0,
167        LiikutaPelaajaa, "Liikuta pelaajaa tattia pyörittämällä.");
168        Vector tatinAsento = ControllerOne.LeftThumbDirection;
169
170        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
171    }
172       
173    void Liikuta(PlatformCharacter hahmo, double nopeus)
174    {
175        hahmo.Walk(nopeus);
176    }
177
178    void Hyppaa(PlatformCharacter hahmo, double nopeus)
179    {
180        hahmo.Jump(nopeus*hyppykerroin);
181    }
182
183    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
184    {
185        maaliAani.Play();
186        MessageDisplay.Add("Keräsit tähden!");
187        tahti.Destroy();
188    }
189    void LiikutaPelaajaa(AnalogState tatinTila)
190    {
191        Vector tatinAsento = tatinTila.StateVector;
192    }
193    void TarkistaHiirenPainallus()
194    { 
195
196    }
197    void LuoAuto(Vector paikka, double leveys, double korkeus)
198    {
199        PhysicsObject auto1 = new PhysicsObject(auto1kuva);
200        auto1.Shape = Shape.FromImage(auto1kuva);
201        auto1.Position = paikka+ new Vector(0, 40);
202        auto1.Image = auto1kuva;
203        auto1.Mass = 350;
204        Add(auto1);
205
206        Mouse.ListenOn(auto1, MouseButton.Left, ButtonState.Pressed, () => MeneAutoon(auto1),"Mene Autoon");
207
208    }
209    void AvaaKirjoitusIkkuna()
210    {
211        InputWindow kysymysIkkuna = new InputWindow("Kirjoita  koodi");
212        kysymysIkkuna.TextEntered += ProcessInput;
213        Add(kysymysIkkuna);
214
215    }
216    void ProcessInput(InputWindow ikkuna)
217    {
218        string vastaus = ikkuna.InputBox.Text;
219
220        if (vastaus == "/gravity0")
221        {
222            Gravity = new Vector(0, 0);
223        }
224        else if (vastaus == "/gravity1")
225        {
226            Gravity = new Vector(0, -1000);
227        }
228        else if (vastaus == "/createcar")
229        {
230            LuoAuto(pelaaja1.Position, 0, 0);
231        }
232        else if (vastaus == "/canrotate")
233        {
234            pelaaja1.CanRotate = true;
235
236        }
237        else if (vastaus == "/cantrotate")
238        {
239            pelaaja1.CanRotate = false;
240        }
241        else if (vastaus == "/superspeed")
242        {
243            nopeus = 1500;
244            PoistaNappaimet();
245            LisaaNappaimet();
246        }
247        else if (vastaus == "/normalspeed")
248        {
249            nopeus = 750;
250            PoistaNappaimet();
251            LisaaNappaimet();
252        }
253        else if (vastaus == "/showcodes")
254        {
255            MessageDisplay.Add("/gravity0, /gravity1, /createcar, /canrotate, /cantrotate, /superspeed, /normalspeed.");
256        }
257
258       
259    }
260
261
262
263
264   
265   
266   
267
268
269
270    void AsetaHyppykerroin(double haluttukerroin)
271    {
272        hyppykerroin = haluttukerroin;
273    }
274    void UlosAutosta()
275    {
276        if (Autossa == true)
277        {
278
279            pelaaja1.Image = pelaajanKuva;
280            pelaaja1.Size = new Vector(RUUDUN_KOKO, RUUDUN_KOKO);
281            LuoAuto(pelaaja1.Position, 0, 0);
282            Autossa = false;
283        }
284
285    }
286    void LuoSlider()
287    {
288        IntMeter zoomausKerroin = new IntMeter(0, 0, 5);
289        //zoomausKerroin.Changed += ZoomaaKenttaa;
290
291        Slider liukusaadin = new Slider(200, 50);
292        liukusaadin.BindTo(zoomausKerroin);
293        liukusaadin.X = Screen.LeftSafe + 200;
294        liukusaadin.Y = Screen.TopSafe - 40;
295
296        liukusaadin.Color = Color.Pink;
297        liukusaadin.Knob.Color = Color.Black;
298        liukusaadin.Track.Color = Color.Blue;
299        liukusaadin.BorderColor = Color.Red;
300        Add(liukusaadin);
301    }
302
303
304    void ZoomaaKenttaa()
305    {
306        double zoomi = Camera.ZoomFactor + Mouse.WheelChange;
307        double maxZoom = 0.1;
308        double maxZoomattu = 3.0;
309
310
311        if (zoomi < maxZoom)
312        {
313            Camera.ZoomFactor = maxZoom;
314            return;
315        }
316
317        if (zoomi > maxZoomattu)
318        {
319            Camera.ZoomFactor = maxZoomattu;
320            return;
321        }
322
323        if (Mouse.WheelChange > maxZoom)
324        {
325            Camera.ZoomFactor += maxZoom;
326            return;
327        }
328
329        if (Mouse.WheelChange < -maxZoom)
330        {
331            Camera.ZoomFactor -= maxZoom;
332            return;
333        }
334
335        Camera.ZoomFactor = zoomi;
336    }
337    void PoistaNappaimet()
338    {
339        Keyboard.Clear();
340
341    }
342    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
343    {
344        ammus.Destroy();
345   
346    }
347   
348    void AmmuAseella(AssaultRifle ase)
349    {
350        PhysicsObject ammus = ase.Shoot();
351
352
353        if(ammus != null)
354        {
355            AddCollisionHandler(ammus, "auto", TuhoaAuto);
356            //ammus.Size *= 3;
357            ammus.Image = panoksenkuba;
358            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
359        }
360    }
361    void TahtaaAseella(AnalogState hiirenLiike)
362    {
363        Vector suunta = (Mouse.PositionOnWorld - pelaajan1Ase.AbsolutePosition).Normalize();
364        pelaajan1Ase.Angle = suunta.Angle;
365    }
366    void KuunteleLiiketta(AnalogState hiirenTila)
367    {
368
369
370        Vector hiirenLiike = hiirenTila.MouseMovement;
371        //if (hiirenLiike.Magnitude > 0)
372        //{
373
374            tahtain.X = Mouse.PositionOnWorld.X;
375            tahtain.Y = Mouse.PositionOnWorld.Y;
376        //}
377
378        //tahtain.Move(hiirenTila.StateVector * 30);
379   
380    }
381    void HeitaKranaatti(PlatformCharacter pelaaja)
382    {
383        Grenade kranu = new Grenade(4.0);
384        pelaaja.Throw(kranu, Angle.FromDegrees(30), 10000);
385        kranu.Explosion.ShockwaveReachesObject += KranaattiOsui;
386    }
387   
388    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
389    {
390        rajahdyksenKohde.Destroy();
391    }
392
393    void TuhoaAuto(PhysicsObject ammus, PhysicsObject auto)
394    {
395        ammus.Destroy();
396        Flame liekki = new Flame();
397        liekki.Position = new Vector(10, 10);
398        Add(liekki);
399
400    }
401}
Note: See TracBrowser for help on using the repository browser.