source: 2016/27/JouniP/VenienteFragore/VenienteFragore/VenienteFragore/VenienteFragore.cs @ 7839

Revision 7839, 6.4 KB checked in by jotapoti, 3 years ago (diff)

Peliin lisatty alkuvalikko

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class VenienteFragore : 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("norsu");
18    Image tahtiKuva = LoadImage("tahti");
19    Image ruohonKuva = LoadImage("ruohotekstuuri");
20    Image luolanKuva = LoadImage("luola");
21    Image ilkeanOmenanKuva = LoadImage("ilkeaomena");
22     
23    SoundEffect maaliAani = LoadSoundEffect("maali");
24
25    Vector aloituspaikka = Vector.Zero;
26
27    IntMeter pistelaskuri;
28
29    public override void Begin()
30    {
31        ClearAll();
32       
33
34        LuoAlkuvalikko();
35
36    }
37
38    void AloitaPeli()
39    {
40        Gravity = new Vector(0, -1000);
41        LuoKentta();
42        LisaaNappaimet();
43        LuoPistelaskuri();
44
45        Camera.Follow(pelaaja1);
46        Camera.ZoomFactor = 1.2;
47        Camera.StayInLevel = true;
48
49    }
50    void LuoAlkuvalikko()
51    {
52        Level.Background.Color = Color.Black;
53        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
54"Aloita peli", "Lopeta");
55        Add(alkuValikko);
56        alkuValikko.AddItemHandler(0, AloitaPeli);
57        alkuValikko.AddItemHandler(1, Exit);
58
59    }
60    void LuoKentta()
61    {
62        TileMap kentta = TileMap.FromLevelAsset("kentta1");
63        kentta.SetTileMethod('#', LisaaTaso);
64        kentta.SetTileMethod('*', LisaaTahti);
65        kentta.SetTileMethod('N', LisaaPelaaja);
66        kentta.SetTileMethod('O', LisaaLuola);
67        kentta.SetTileMethod('z', LisaaIlkeaTyyppi);
68        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
69        Level.CreateBorders();
70        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
71    }
72
73    void LisaaIlkeaTyyppi(Vector paikka, double leveys, double korkeus)
74    {
75        // TODO lisaa tekoaly talle ilkealle tyypille!
76        PlatformCharacter tyyppi = new PlatformCharacter(leveys, korkeus);
77        tyyppi.Position = paikka;
78        tyyppi.Image = ilkeanOmenanKuva;
79        tyyppi.Tag = "pahis";
80        Add(tyyppi);
81
82        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
83        tasoAivot.Speed = 100;
84        tasoAivot.FallsOffPlatforms = true;
85        tasoAivot.TriesToJump = true;
86        tyyppi.Brain = tasoAivot;
87       
88
89    }
90    void LisaaLuola(Vector paikka, double leveys, double korkeus)
91    {
92        PhysicsObject luola = new PhysicsObject(2*leveys, 2*korkeus);
93        luola.MakeStatic();
94        luola.IgnoresCollisionResponse = true;
95        //luola.Color = Color.Black;
96        luola.Position = paikka + new Vector(0.0, korkeus/2);
97        luola.Tag = "luola";
98        luola.Image = luolanKuva;
99
100        Add(luola);
101    }
102
103    void LisaaTaso(Vector paikka, double leveys, double korkeus)
104    {
105        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
106        taso.Position = paikka;
107        taso.Color = Color.Green;
108        taso.Image = ruohonKuva;
109        Add(taso);
110    }
111
112    void LisaaTahti(Vector paikka, double leveys, double korkeus)
113    {
114        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
115        tahti.IgnoresCollisionResponse = true;
116        tahti.Position = paikka;
117        tahti.Image = tahtiKuva;
118        tahti.Tag = "tahti";
119        Add(tahti);
120    }
121
122    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
123    {
124        pelaaja1 = new PlatformCharacter(leveys, korkeus);
125        pelaaja1.Position = paikka;
126        aloituspaikka = paikka;
127        pelaaja1.Mass = 4.0;
128        pelaaja1.Image = pelaajanKuva;
129        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
130        AddCollisionHandler(pelaaja1, "luola", TormaaLuolaan);
131        AddCollisionHandler(pelaaja1, "pahis", TormaaPahikseen);
132        Add(pelaaja1);
133    }
134
135    void LisaaNappaimet()
136    {
137        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
138        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
139
140        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
141        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
142        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
143        Keyboard.Listen(Key.R, ButtonState.Pressed, Begin, "Aloita peli alusta");
144
145
146        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
147
148        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
149        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
150        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
151
152        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
153    }
154
155    void LuoPistelaskuri()
156    {
157        pistelaskuri = new IntMeter(0);
158
159        Label pisteNaytto = new Label();
160        pisteNaytto.X = Screen.Right - 100;
161        pisteNaytto.Y = Screen.Top - 100;
162        pisteNaytto.TextColor = Color.Black;
163        pisteNaytto.Color = Color.White;
164
165        pisteNaytto.BindTo(pistelaskuri);
166        Add(pisteNaytto);
167    }
168
169    void Liikuta(PlatformCharacter hahmo, double nopeus)
170    {
171        hahmo.Walk(nopeus);
172    }
173
174    void Hyppaa(PlatformCharacter hahmo, double nopeus)
175    {
176        hahmo.Jump(nopeus);
177    }
178
179    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
180    {
181        pistelaskuri.Value++;
182        maaliAani.Play();
183        MessageDisplay.Add("Keräsit tähden!");
184        tahti.Destroy();
185    }
186
187    void TormaaLuolaan(PhysicsObject hahmo, PhysicsObject luola)
188    {
189        // TODO hahmo siirtyy toiseen kenttaan!
190        MessageDisplay.Add("Menit luolaan!");
191    }
192
193    void TormaaPahikseen(PhysicsObject hahmo, PhysicsObject pahis)
194    {
195        //MessageDisplay.Add("Osuit vihuun!");
196        MessageWindow ikkuna = new MessageWindow("Osuit vihuun!");
197        Add(ikkuna);
198        hahmo.Destroy();
199
200        ikkuna.Closed += delegate
201        {
202            Begin();
203        };
204       
205
206    }
207
208}
Note: See TracBrowser for help on using the repository browser.