source: 2017/24/GregoryK/LimaPeli/LimaPeli/LimaPeli/LimaPeli.cs @ 10335

Revision 8744, 5.9 KB checked in by npo17_12, 2 years ago (diff)

Ei vielä täysin valmis.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class LimaPeli : PhysicsGame
10{
11    private Animation limanKavely;
12    const double nopeus = 200;
13    const double hyppyNopeus = 550;
14    const int RUUDUN_KOKO = 40;
15
16    PlatformCharacter pelaaja1;
17
18    Image pelaajanKuva = LoadImage("slime\\slime1");
19    Image tahtiKuva = LoadImage("dorito");
20    Image piikitKuva = LoadImage("piikit");
21    Image portaaliKuva = LoadImage("portaali");
22    Image glassesKuva = LoadImage("mlg glasses");
23    int kenttaNro = 1;
24
25
26    public override void Begin()
27    {
28        SeuraavaKentta();
29    }
30
31    void SeuraavaKentta()
32    {
33        ClearAll();
34
35        if (kenttaNro == 1) LuoKentta("kentta1");
36        else if (kenttaNro == 2) LuoKentta("kentta2");
37        else if (kenttaNro == 3) LuoKentta("kentta3");
38        else if (kenttaNro > 3) Exit();
39
40        LisaaNappaimet();
41    }
42
43    void LisaaGlasses(Vector paikka, double leveys, double korkeus)
44    {
45        PhysicsObject Glasses = PhysicsObject.CreateStaticObject(leveys* 3, korkeus* 3);
46        Glasses.Tag = "mlgglasses";
47        Glasses.Position = paikka;
48        Glasses.Image = glassesKuva;
49
50        Add(Glasses);
51    }
52       
53    void LisaaTeleportti(Vector paikka, double leveys, double korkeus)
54    {
55        PhysicsObject Telportti = PhysicsObject.CreateStaticObject(leveys, korkeus);
56        Telportti.Tag = "Teleportti";
57        Telportti.Position = paikka;
58        Telportti.Image = portaaliKuva;
59
60        Add(Telportti);
61    }
62
63    void LisaaPiikit(Vector paikka, double leveys, double korkeus)
64    {
65        PhysicsObject Piikit = PhysicsObject.CreateStaticObject(leveys, korkeus);
66        Piikit.Position = paikka;
67        Piikit.Image = piikitKuva;
68        Piikit.Tag = "Piikit";
69       
70
71        Add(Piikit);
72    }
73
74    void LuoKentta(string kenttaTiedostonNimi)
75    {
76        limanKavely = LoadAnimation("slime");
77        TileMap kentta = TileMap.FromLevelAsset(kenttaTiedostonNimi);
78        kentta.SetTileMethod('#', LisaaTaso);
79        kentta.SetTileMethod('*', LisaaTahti);
80        kentta.SetTileMethod('N', LisaaPelaaja);
81        kentta.SetTileMethod('T', LisaaTeleportti);
82        kentta.SetTileMethod('P', LisaaPiikit);
83        kentta.SetTileMethod('M', LisaaGlasses);
84        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
85        Level.CreateBorders();
86        //Level.Background.CreateGradient(Color.White, Color.SkyBlue);
87        Level.Background.Color = Color.Green;
88 
89        Gravity = new Vector(0, -500);
90
91        //LuoKentta();
92        //LisaaNappaimet();
93
94        Camera.Follow(pelaaja1);
95        Camera.ZoomFactor = 1.2;
96        Camera.StayInLevel = true;
97    }
98
99    void TormaaTeleporttiin(PhysicsObject slime, PhysicsObject maali)
100    {
101        //Kasvatetaan kenttänumeroa yhdellä ja siirrytään seuraavaan kenttään:
102        kenttaNro++;
103        SeuraavaKentta();
104    }
105
106    void TormasiPiikkiin(PhysicsObject slime, PhysicsObject piikki)
107    {
108        MessageDisplay.Add("kuolit");
109        Keyboard.Clear();
110
111        Timer.SingleShot(0.5, delegate 
112        {
113           
114            //Sama kenttä ladataan alusta jos kenttänumeroa ei kasvateta:
115            SeuraavaKentta();
116        });
117
118       
119    }
120
121
122    void LisaaTaso(Vector paikka, double leveys, double korkeus)
123    {
124        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
125        taso.Position = paikka;
126        taso.Image = LoadImage("slime background");
127        Add(taso);
128    }
129
130    void LisaaTahti(Vector paikka, double leveys, double korkeus)
131    {
132        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
133        tahti.IgnoresCollisionResponse = true;
134        tahti.Position = paikka;
135        tahti.Image = tahtiKuva;
136        tahti.Tag = "tahti";
137        Add(tahti);
138    }
139
140    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
141    {
142   
143        pelaaja1 = new PlatformCharacter(leveys, korkeus);
144        pelaaja1.Position = paikka;
145        pelaaja1.Mass = 4.0;
146        pelaaja1.Image = pelaajanKuva;
147        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
148        AddCollisionHandler(pelaaja1, "Teleportti", TormaaTeleporttiin);
149        AddCollisionHandler(pelaaja1, "Piikit", TormasiPiikkiin);
150        pelaaja1.Animation = new Animation(limanKavely);
151        pelaaja1.Animation.Start();
152
153        Add(pelaaja1);
154    }
155
156    void LisaaNappaimet()
157    {
158        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
159        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
160
161        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
162        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
163        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
164        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää palin");
165
166        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
167
168        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
169        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
170        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
171
172       
173    }
174
175    void Liikuta(PlatformCharacter hahmo, double nopeus)
176    {
177        hahmo.Walk(nopeus);
178    }
179
180    void Hyppaa(PlatformCharacter hahmo, double nopeus)
181    {
182        hahmo.Jump(nopeus);
183    }
184
185    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
186    {
187       
188        MessageDisplay.Add("Nam! Doritos!");
189        tahti.Destroy();
190    }
191}
Note: See TracBrowser for help on using the repository browser.