source: 2016/30/LeoM/Akupeli/Akupeli/Akupeli/Akupeli.cs @ 8215

Revision 8215, 6.9 KB checked in by lemaline, 3 years ago (diff)

kentät ja roope sekä aku valmiit. myös alku ja loppuvalikot

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Akupeli : PhysicsGame
10{
11    const double nopeus = 400;
12    const double hyppyNopeus = 900;
13    const int RUUDUN_KOKO = 40;
14    int kenttanro = 1;
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("akusedo2");
18    Image tahtiKuva = LoadImage("tahti");
19    Image ovikuva= LoadImage("ovi");
20    Image roopekuva = LoadImage("roope");
21
22    SoundEffect maaliAani = LoadSoundEffect("maali");
23
24    public override void Begin()
25    {
26        ClearAll();
27        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
28"Aloita peli", "Lopeta");
29        Add(alkuValikko);
30        alkuValikko.AddItemHandler(0, AloitaPeli);
31        alkuValikko.AddItemHandler(1, Exit);
32        MediaPlayer.Play("musa");
33
34
35    }
36
37    void AloitaPeli()
38    {
39        ClearAll();
40        Gravity = new Vector(0, -1000);
41
42        MessageDisplay.Add("Musiikki: Toby Fox");
43
44
45        LuoKentta();
46        LisaaNappaimet();
47
48        Camera.Follow(pelaaja1);
49        Camera.ZoomFactor = 1.2;
50        Camera.StayInLevel = true;
51    }
52
53    void LuoKentta()
54    {
55        TileMap kentta = TileMap.FromLevelAsset("kentta" + kenttanro);
56        kentta.SetTileMethod('#', LisaaTaso);
57        kentta.SetTileMethod('*', LisaaTahti);
58        kentta.SetTileMethod('!', LisaaMaali);
59        kentta.SetTileMethod('N', LisaaPelaaja);
60        kentta.SetTileMethod('p', LisaaPiikki);
61        kentta.SetTileMethod('R', LisaaVihollinen);
62        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
63        Level.CreateBorders();
64        Level.Background.CreateGradient(Color.Pink, Color.HotPink);
65    }
66
67    void LisaaTaso(Vector paikka, double leveys, double korkeus)
68    {
69        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
70        taso.Position = paikka;
71        taso.Color = Color.Green;
72        Add(taso);
73    }
74    void LisaaMaali(Vector paikka, double leveys, double korkeus)
75    {
76        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
77        maali.IgnoresCollisionResponse = true;
78        maali.Position = paikka;
79        maali.Image = ovikuva;
80        maali.Tag = "maali";
81        Add(maali);
82    }
83    void LisaaTahti(Vector paikka, double leveys, double korkeus)
84    {
85        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
86        tahti.IgnoresCollisionResponse = true;
87        tahti.Position = paikka;
88        tahti.Image = tahtiKuva;
89        tahti.Tag = "tahti";
90        Add(tahti);
91    }
92
93    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
94    {
95        PhysicsObject RoopeSedo = new PhysicsObject(leveys, korkeus);
96        RoopeSedo.Position = paikka;
97        RoopeSedo.Image = roopekuva;
98        RoopeSedo.Tag = "Roope";
99        Add(RoopeSedo);
100        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
101        seuraajanAivot.Speed = 100;                 // Millä nopeudella kohdetta seurataan
102        seuraajanAivot.DistanceFar = 6000;           // Etäisyys jolla aletaan seurata kohdetta
103        seuraajanAivot.FarBrain = seuraajanAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
104        RoopeSedo.Brain = seuraajanAivot;
105        RoopeSedo.CanRotate = false;
106        RoopeSedo.IgnoresCollisionResponse = true;
107     }
108   
109
110void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
111    {
112        pelaaja1 = new PlatformCharacter(leveys, korkeus);
113        pelaaja1.Position = paikka;
114        pelaaja1.Mass = 4.0;
115        pelaaja1.Image = pelaajanKuva;
116        pelaaja1.Destroyed += delegate () 
117        {
118            MessageDisplay.Add("ROOPE SEDÖ SAI SUT KIINNI");
119            Timer.SingleShot(1.0, Begin);
120
121        };
122        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
123        AddCollisionHandler(pelaaja1, "maali", TormaaMaaliin);
124        Add(pelaaja1);
125        AddCollisionHandler(pelaaja1, "piikki", TormaaPiikkiin);
126        AddCollisionHandler(pelaaja1, "Roope", CollisionHandler.DestroyObject);
127        pelaaja1.Tag = "pelaaja";
128    }
129
130    void LisaaNappaimet()
131    {
132        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
133        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
134
135        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
136        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
137        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
138
139        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
140
141        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
142        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
143        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
144
145        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
146    }
147
148    void Liikuta(PlatformCharacter hahmo, double nopeus)
149    {
150        hahmo.Walk(nopeus);
151    }
152
153    void Hyppaa(PlatformCharacter hahmo, double nopeus)
154    {
155        hahmo.ForceJump(nopeus);
156    }
157
158    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
159    {
160        maaliAani.Play();
161        MessageDisplay.Add("Keräsit tähden!");
162        tahti.Destroy();
163    }
164    void TormaaMaaliin(PhysicsObject hahmo, PhysicsObject maali)
165    {
166        maaliAani.Play();
167        MessageDisplay.Add("PÄÄSIT MAALIIN!");
168        Timer.SingleShot(1, SeuraavaKentta);
169       
170    }
171
172    void SeuraavaKentta()
173    {
174        kenttanro++;
175        if(kenttanro > 2)
176        {
177            kenttanro = 1;
178            MessageDisplay.Add("loppu, voitit pelin!");
179            ClearAll();
180            MultiSelectWindow loppuvalikko = new MultiSelectWindow("Pelin loppuvalikko",
181    "uusi peli", "Lopeta");
182            Add(loppuvalikko);
183            loppuvalikko.AddItemHandler(0, AloitaPeli);
184            loppuvalikko.AddItemHandler(1, Exit);
185
186
187        }
188        else { AloitaPeli(); }
189       
190    }
191
192    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
193    {
194        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
195        piikki.IgnoresCollisionResponse = true;
196        piikki.Position = paikka;
197        piikki.Color = Color.Gray;
198        piikki.Tag = "piikki";
199        Add(piikki);
200        piikki.Shape = Shape.Triangle;
201    }
202    void TormaaPiikkiin(PhysicsObject hahmo, PhysicsObject piikki)
203    {
204        MessageDisplay.Add("OSUIT PIIKKIIN!");
205        hahmo.Destroy();
206       
207       
208    }
209   
210}
Note: See TracBrowser for help on using the repository browser.