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

Revision 7841, 6.5 KB checked in by jotapoti, 3 years ago (diff)

VenienteFragoreen? lisatty minimiinii-vihollisen animaatio

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