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

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