source: 2016/24/JoonatanJ/Pomppu/Pomppu/Pomppu/Pomppu.cs @ 10334

Revision 7437, 7.5 KB checked in by joojarvi, 3 years ago (diff)
RevLine 
[7253]1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Pomppu : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
[7297]17    Image pelaajanKuva = LoadImage("pallopoju");
[7253]18
[7337]19    Image piikinkuva = LoadImage("cocacola");
20
[7383]21    Image vihunkuva = LoadImage("cocacolaman");
22
[7337]23    Image tahdenkuva = LoadImage("pepsimax");
[7383]24    List<PhysicsObject> piikkienPaikat;
[7337]25
[7437]26    Vector spawnLokaatio;
27
[7253]28    SoundEffect maaliAani = LoadSoundEffect("maali");
[7437]29    string kenttaMenossa = "kentta2";
[7253]30
31    public override void Begin()
32    {
[7383]33        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
34"Aloita peli", "Lopeta");
35        Add(alkuValikko);
36        alkuValikko.AddItemHandler(0, AloitaPeli);
37        alkuValikko.AddItemHandler(1, Exit);
[7410]38        alkuValikko.Color = Color.Gold;
[7383]39        Mouse.IsCursorVisible = true;
[7410]40        Level.BackgroundColor = Color.Black;
[7337]41    }
[7253]42
[7337]43    void AloitaPeli()
44    {
45        Gravity = new Vector(0, -500);
46
[7253]47        LuoKentta();
48        LisaaNappaimet();
49
50        Camera.Follow(pelaaja1);
51        Camera.ZoomFactor = 1.2;
52        Camera.StayInLevel = true;
[7383]53        LuoAikaLaskuri();
[7253]54    }
55
56    void LuoKentta()
57    {
[7383]58        piikkienPaikat = new List<PhysicsObject>();
[7337]59        TileMap kentta = TileMap.FromLevelAsset(kenttaMenossa);
[7297]60        kentta.SetTileMethod('#', LisaaEsine, "taso", Color.Black);
[7253]61        kentta.SetTileMethod('N', LisaaPelaaja);
[7297]62        kentta.SetTileMethod('W', LisaaEsine, "maali", Color.Gold);
[7337]63        kentta.SetTileMethod('L', LisaaPiikki, "piikki", Color.Gray, piikinkuva);
64        kentta.SetTileMethod('O', LisaaEsine, "piikki", Color.Black);
65        kentta.SetTileMethod('P', LisaaPiikki, "tahti", Color.Gray, tahdenkuva);
[7383]66        kentta.SetTileMethod('S', LisaaSpawneri);
[7253]67        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
68        Level.CreateBorders();
[7297]69        Level.Background.CreateGradient(Color.Black, Color.Red);
[7253]70    }
71
[7383]72    private void LisaaSpawneri(Vector position, double width, double height)
73    {
74        Timer spawneri = new Timer();
75        spawneri.Interval = 0.2;
76        spawneri.Timeout += delegate
77        {
78            for (int i = 0; i < piikkienPaikat.Count; i++)
79            {
80                if (pelaaja1.Position.X >= piikkienPaikat[i].Position.X)
81                {
82                    LisaaVihu(new Vector(piikkienPaikat[i].X, piikkienPaikat[i].Y + height), width, height);
83                    piikkienPaikat.RemoveAt(i);
84                }
85            }
86
87        };
88        spawneri.Start();
89    }
90
91    void LisaaVihu(Vector paikka, double leveys, double korkeus)
92    { 
93        PlatformCharacter vihu = new PlatformCharacter(leveys, korkeus);
94    vihu.Position = paikka;
95        vihu.Color = Color.Aquamarine;
96        vihu.Tag = "vihu";
97        Add(vihu);
98        vihu.Image = vihunkuva;
99
[7437]100        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
101        seuraajanAivot.Speed = 350;
102        vihu.Brain = seuraajanAivot;
103
104        /*PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
[7383]105        tasoAivot.Speed = 100;
106        tasoAivot.JumpSpeed = 700;
107        tasoAivot.TriesToJump = true;
[7410]108        tasoAivot.Direction = Direction.None;
[7437]109        vihu.Brain = tasoAivot;*/
[7383]110    }
[7297]111    void LisaaEsine(Vector paikka, double leveys, double korkeus, string nimi, Color vari)
[7253]112    {
[7383]113      //  PhysicsObject vihu = new PhysicsObject(leveys, korkeus);
[7297]114        PhysicsObject esine = PhysicsObject.CreateStaticObject(leveys, korkeus);
115        esine.Position = paikka;
116        esine.Color = vari;
117        esine.Tag = nimi;
118        Add(esine);
[7253]119    }
120
[7337]121    void LisaaPiikki(Vector paikka, double leveys, double korkeus, string nimi, Color vari, Image kuva)
122    {
[7383]123        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus*1.2);
[7337]124        piikki.Position = paikka;
125        piikki.Color = vari;
126        piikki.Tag = nimi;
[7383]127        piikki.CollisionIgnoreGroup = 2;
[7337]128        piikki.Image = kuva;
129        Add(piikki);
[7383]130        piikkienPaikat.Add(piikki);
[7337]131    }
132
[7253]133    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
134    {
135        pelaaja1 = new PlatformCharacter(leveys, korkeus);
136        pelaaja1.Position = paikka;
[7337]137        pelaaja1.Shape = Shape.Circle;
138        pelaaja1.Mass = 1000.0;
[7253]139        pelaaja1.Image = pelaajanKuva;
[7437]140        spawnLokaatio = paikka;
[7253]141        Add(pelaaja1);
[7337]142        AddCollisionHandler(pelaaja1, "piikki", PelaajaOsuuPiikkiin);
[7437]143        AddCollisionHandler(pelaaja1, "vihu", PelaajaOsuuPiikkiin);
[7337]144        AddCollisionHandler(pelaaja1, "tahti", PelaajaOsuuTahteen);
145        AddCollisionHandler(pelaaja1, "maali", PelaajaOsuuMaaliin);
[7253]146    }
147
[7297]148
[7337]149
[7253]150    void LisaaNappaimet()
151    {
152        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
153        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
154
155        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
156        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
157        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
158
159        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
160
161        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
162        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
163        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
164
165        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
166    }
167
168    void Liikuta(PlatformCharacter hahmo, double nopeus)
169    {
170        hahmo.Walk(nopeus);
171    }
172
173    void Hyppaa(PlatformCharacter hahmo, double nopeus)
174    {
175        hahmo.Jump(nopeus);
176    }
177
178    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
179    {
180        maaliAani.Play();
181        MessageDisplay.Add("Keräsit tähden!");
182        tahti.Destroy();
183    }
[7337]184    void PelaajaOsuuPiikkiin(PhysicsObject pelaaja, PhysicsObject piikki)
185    {
[7437]186        pelaaja.Position = spawnLokaatio;
187
[7337]188    }
189
190    void PelaajaOsuulattiaan(PhysicsObject pelaaja, PhysicsObject lattia)
191    {
192        pelaaja.Destroy();
193    }
194    void PelaajaOsuuTahteen(PhysicsObject pelaaja, PhysicsObject pullo)
195    {
196        pullo.Destroy();
197        MessageDisplay.Add("Keräsit pullon ootko nyt iloinen Häh?!");
198    }
199    void PelaajaOsuuMaaliin(PhysicsObject pelaaja, PhysicsObject maali)
200    {
201        ClearAll();
[7437]202        if (kenttaMenossa == "kentta2")
203        {
204            MessageDisplay.Add("Peli loppui!");
205            Level.Background.Color = Color.Red;
206
207            Label voitit = new Label("Voitit pelin");
208            voitit.Color = Color.Blue;
209            Add(voitit);
210            Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
211        }
212        else
213        {
214            kenttaMenossa = "kentta2";
215            AloitaPeli();
216        }
[7337]217    }
[7383]218    void LuoAikaLaskuri()
219    {
220        Timer aikaLaskuri = new Timer();
221        aikaLaskuri.Start();
[7337]222
[7383]223        Label aikaNaytto = new Label();
224        aikaNaytto.TextColor = Color.White;
225        aikaNaytto.DecimalPlaces = 1;
226        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
227        Add(aikaNaytto);
228    }
229
[7253]230}
Note: See TracBrowser for help on using the repository browser.