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

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