source: 2015/30/EmilL/KariO/KariO/KariO/KariO.cs @ 6875

Revision 6875, 6.2 KB checked in by jupipana, 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 KariO : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter pelaaja2;
17    Image pelaajanKuva = LoadImage("KariOhahmo");
18    Image tahtiKuva = LoadImage("Euronjuusto");
19    Image VihollisenKuva = LoadImage("Vastustaja");
20    Image Piikki = LoadImage("Piikki");
21
22    SoundEffect maaliAani = LoadSoundEffect("KeräysÄäni");
23
24    public override void Begin()
25    {
26        Aloitapeli();
27    }
28
29    void Aloitapeli()
30    {
31        ClearAll();
32        Gravity = new Vector(0, -1000);
33
34        LuoKentta();
35        LisaaNappaimet();
36        MediaPlayer.Play("tausta biisi");
37
38        Camera.Follow(pelaaja1);
39        Camera.ZoomFactor = 4.0;
40        //Camera.StayInLevel = true;
41    }
42
43    void LuoKentta()
44    {
45
46        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
47        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Kenttä");
48
49        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
50        ruudut.SetTileMethod(Color.FromHexCode("002AFF"), LisaaPelaaja1);
51        ruudut.SetTileMethod(Color.FromHexCode("8330FF"), LisaaPelaaja2);
52        ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LisaaTaso);
53        ruudut.SetTileMethod(Color.FromHexCode("FFAD21"), LisaaTahti);
54        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), LisaaVihollinen);
55        ruudut.SetTileMethod(Color.FromHexCode("7F0000"), LisaaPiikki);
56        ruudut.SetTileMethod(Color.FromHexCode("808080"), LisaaLinna);
57        //3. Execute luo kentän
58        //   Parametreina leveys ja korkeus
59        ruudut.Execute(20, 20);
60        Level.CreateBorders();
61    }
62
63    void LisaaTaso(Vector paikka, double leveys, double korkeus)
64    {
65        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
66        taso.Position = paikka;
67        taso.Color = Color.Green;
68        Add(taso);
69    }
70
71    void LisaaTahti(Vector paikka, double leveys, double korkeus)
72    {
73        PhysicsObject Euronjuusto = PhysicsObject.CreateStaticObject(leveys, korkeus);
74        Euronjuusto.IgnoresCollisionResponse = true;
75        Euronjuusto.Position = paikka;
76        Euronjuusto.Image = tahtiKuva;
77        Euronjuusto.Tag = "Euronjuusto";
78        Add(Euronjuusto);
79    }
80
81    PlatformCharacter LisaaPelaaja(Vector paikka, double leveys, double korkeus)
82    {
83        PlatformCharacter pelaaja = new PlatformCharacter(leveys, korkeus);
84        pelaaja.Position = paikka;
85        pelaaja.Mass = 50.0;
86        pelaaja.Image = pelaajanKuva;
87        AddCollisionHandler(pelaaja, "Euronjuusto", TormaaTahteen);
88        Add(pelaaja);
89        AddCollisionHandler(pelaaja, "Vihollinen", PelaajaTormasi);
90        return pelaaja;
91    }
92
93    void LisaaPelaaja1(Vector paikka, double leveys, double korkeus)
94    {
95        pelaaja1 = LisaaPelaaja(paikka, leveys, korkeus);
96    }
97    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
98    {
99        pelaaja2 = LisaaPelaaja(paikka, leveys, korkeus);
100    }
101
102    void LisaaNappaimet()
103    {
104        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
105        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
106
107        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
108        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
109        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
110
111        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
112        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus);
113        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
114
115        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
116
117        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
118        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
119        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
120
121    }
122
123    void Liikuta(PlatformCharacter hahmo, double nopeus)
124    {
125        hahmo.Walk(nopeus);
126    }
127
128    void Hyppaa(PlatformCharacter hahmo, double nopeus)
129    {
130        hahmo.Jump(nopeus);
131    }
132
133    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
134    {
135        maaliAani.Play();
136        MessageDisplay.Add("Läski keräsit euronjuuston!!!!!!!! Hieno homma!");
137        tahti.Destroy();
138    }
139    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
140    {
141        PlatformCharacter Vihollinen = new PlatformCharacter(leveys, korkeus);
142        Vihollinen.Position = paikka;
143        Vihollinen.Mass = 4.0;
144        Vihollinen.Image = VihollisenKuva;
145        Add(Vihollinen);
146        Vihollinen.Tag = "Vihollinen";
147    }
148    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
149    {
150        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
151        taso.Position = paikka;
152        taso.Color = Color.Red;
153        Add(taso);
154        Piikki.Tag = "Piikki";
155    }
156    void LisaaLinna(Vector paikka, double leveys, double korkeus)
157    {
158        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
159        taso.Position = paikka;
160        taso.Color = Color.Gray;
161        Add(taso);
162    }
163    void PelaajaTormasi(PhysicsObject tormaaja, PhysicsObject kohde)
164    {
165        MessageDisplay.Add("Kuolit");
166        Explosion Räjähdys = new Explosion(100);
167        Räjähdys.Position = kohde.Position;
168        Add(Räjähdys);
169        tormaaja.Destroy();
170        kohde.Destroy();
171
172        Timer.SingleShot(2, Aloitapeli);
173    }
174   
175}
Note: See TracBrowser for help on using the repository browser.