source: 2017/27/AnttiN/Synttaripeli/Synttaripeli/Synttaripeli/Synttaripeli.cs @ 8814

Revision 8814, 10.2 KB checked in by npo17_45, 2 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
9
10public class Synttaripeli : PhysicsGame
11{
12    const double nopeus = 0;
13    const double hyppyNopeus = 0;
14    const int RUUDUN_KOKO = 40;
15
16    PhysicsObject pelaaja1;
17    PhysicsObject pelaaja2;
18
19    DoubleMeter elamaLaskuri1;
20    DoubleMeter elamaLaskuri2;
21
22    PhysicsObject kakkuhirvio1;
23
24    AssaultRifle pelaajan1Ase;
25
26    Image pelaajanKuva = LoadImage("norsu");
27    Image tahtiKuva = LoadImage("tahti");
28    Image loharikuva = LoadImage("Lohikaarme");
29    Image kakkukuva = LoadImage("kakkuhirvio");
30
31    SoundEffect maaliAani = LoadSoundEffect("maali");
32
33
34    public override void Begin()
35    {
36        Gravity = new Vector(0, -1000);
37
38
39       
40        LisaaNappaimet();
41        LuoAlkuvalikko();
42
43        Camera.Follow(pelaaja1);
44        Camera.ZoomFactor = 1.2;
45        Camera.StayInLevel = true;
46    }
47
48    void LuoAlkuvalikko()
49    {
50       
51
52        Level.Background.Image = LoadImage("kakku");
53        MultiSelectWindow alkuValikko = new MultiSelectWindow("Synttäripeli",
54"Aloita peli", "Lopeta");
55        Add(alkuValikko);
56        alkuValikko.AddItemHandler(0, LuoKentta);
57        alkuValikko.AddItemHandler(1, Exit);
58
59    }
60
61
62
63   
64
65    void LuoKentta()
66    {
67        double HahmoNumero1 = RandomGen.SelectOne(1, 2);
68        double HahmoNumero2 = RandomGen.SelectOne(1, 2);
69
70        TileMap kentta = TileMap.FromLevelAsset("kentta1");
71        kentta.SetTileMethod('#', LisaaTaso);
72        kentta.SetTileMethod('*', LisaaTahti);
73
74        if (HahmoNumero1 == 1)
75        {
76            kentta.SetTileMethod('1', HahmoOnKakkuhirvio1);
77
78            //elamaLaskuri1 = new DoubleMeter(68);
79            //elamaLaskuri1.MaxValue = 68;
80           
81        }
82        if (HahmoNumero1 == 2)
83        {
84            kentta.SetTileMethod('1', HahmoOnLohari1);
85
86            //elamaLaskuri1 = new DoubleMeter(91);
87            //elamaLaskuri1.MaxValue = 91;
88        }
89
90        if (HahmoNumero2 == 1)
91        {
92            kentta.SetTileMethod('2', HahmoOnKakkuhirvio2);
93
94            //elamaLaskuri2 = new DoubleMeter(68);
95            //elamaLaskuri2.MaxValue = 68;
96        }
97        if (HahmoNumero2 == 2)
98        {
99            kentta.SetTileMethod('2', HahmoOnLohari2);
100
101            //elamaLaskuri2 = new DoubleMeter(91);
102            //elamaLaskuri2.MaxValue = 91;
103        }
104
105
106        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
107        Level.CreateBorders();
108        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
109       
110    }
111
112
113
114    void LisaaTaso(Vector paikka, double leveys, double korkeus)
115    {
116        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
117        taso.Position = paikka;
118        taso.Color = Color.Green;
119        Add(taso);
120    }
121
122    void LisaaTahti(Vector paikka, double leveys, double korkeus)
123    {
124        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
125        tahti.IgnoresCollisionResponse = true;
126        tahti.Position = paikka;
127        tahti.Image = tahtiKuva;
128        tahti.Tag = "tahti";
129        Add(tahti);
130    }
131
132    void HahmoOnKakkuhirvio1(Vector paikka, double leveys, double korkeus)
133    {
134        Kakkuhirvio kakkuhirvio1 = new Kakkuhirvio(leveys, korkeus);
135        kakkuhirvio1.Position = paikka;
136        kakkuhirvio1.Mass = 4.0;
137        kakkuhirvio1.Image = kakkukuva;
138        kakkuhirvio1.Tag = "Kakkuhirvio1";
139        AddCollisionHandler(kakkuhirvio1, "tahti", TormaaTahteen);
140
141        pelaajan1Ase = new AssaultRifle(30, 10);
142
143        kakkuhirvio1.Add(pelaajan1Ase);
144
145        //Mitä tapahtuu kun ammus osuu johonkin?
146        pelaajan1Ase.ProjectileCollision = AmmusOsui;
147
148       
149
150        Add(kakkuhirvio1);
151
152        Label pisteNaytto1 = new Label();
153        pisteNaytto1.X = Screen.Left + 80;
154        pisteNaytto1.Y = Screen.Top - 50;
155        pisteNaytto1.TextColor = Color.Red;
156        pisteNaytto1.BindTo(kakkuhirvio1.ElamaLaskuri);
157        Add(pisteNaytto1);
158
159        BarGauge elamapalkki1 = new BarGauge(20, Screen.Width / 10);
160        elamapalkki1.X = Screen.Left + 80;
161        elamapalkki1.Y = Screen.Top - 80;
162        elamapalkki1.Angle = Angle.FromDegrees(90);
163        elamapalkki1.BindTo(kakkuhirvio1.ElamaLaskuri);
164        elamapalkki1.Color = Color.Red;
165        elamapalkki1.BarColor = Color.Green;
166
167        Add(elamapalkki1);
168       
169    }
170
171
172    void HahmoOnLohari1(Vector paikka, double leveys, double korkeus)
173    {
174
175        Lohari lohari = new Lohari(leveys, korkeus);
176        lohari.Position = paikka;
177        lohari.Mass = 4.0;
178        lohari.Image = loharikuva;
179        lohari.Tag = "Pelaaja1";
180        AddCollisionHandler(lohari, "tahti", TormaaTahteen);
181        Add(lohari);
182
183        Label pisteNaytto1 = new Label();
184        pisteNaytto1.X = Screen.Left + 80;
185        pisteNaytto1.Y = Screen.Top - 50;
186        pisteNaytto1.TextColor = Color.Red;
187        pisteNaytto1.BindTo(lohari.ElamaLaskuri);
188        Add(pisteNaytto1);
189
190        BarGauge elamapalkki1 = new BarGauge(20, Screen.Width / 10);
191        elamapalkki1.X = Screen.Left + 80;
192        elamapalkki1.Y = Screen.Top - 80;
193        elamapalkki1.Angle = Angle.FromDegrees(90);
194        elamapalkki1.BindTo(lohari.ElamaLaskuri);
195        elamapalkki1.Color = Color.Red;
196        elamapalkki1.BarColor = Color.Green;
197        Add(elamapalkki1);
198
199    }
200
201    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
202    {
203        ammus.Destroy();
204    }
205
206
207
208    void HahmoOnKakkuhirvio2(Vector paikka, double leveys, double korkeus)
209    {
210        Kakkuhirvio kakkuhirvio = new Kakkuhirvio(leveys, korkeus);
211        kakkuhirvio.Position = paikka;
212        kakkuhirvio.Mass = 4.0;
213        kakkuhirvio.Image = kakkukuva;
214        kakkuhirvio.Tag = "Pelaaja2";
215        AddCollisionHandler(kakkuhirvio, "tahti", TormaaTahteen);
216        Add(kakkuhirvio);
217
218        Label pisteNaytto2 = new Label();
219        pisteNaytto2.X = Screen.Right - 80;
220        pisteNaytto2.Y = Screen.Top - 50;
221        pisteNaytto2.TextColor = Color.Red;
222        pisteNaytto2.BindTo(kakkuhirvio.ElamaLaskuri);
223        Add(pisteNaytto2);
224
225        BarGauge elamapalkki2 = new BarGauge(20, Screen.Width / 10);
226        elamapalkki2.X = Screen.Right - 80;
227        elamapalkki2.Y = Screen.Top - 80;
228        elamapalkki2.Angle = Angle.FromDegrees(90);
229        elamapalkki2.BindTo(kakkuhirvio.ElamaLaskuri);
230        elamapalkki2.Color = Color.Red;
231        elamapalkki2.BarColor = Color.Green;
232        Add(elamapalkki2);
233    }
234
235    void HahmoOnLohari2(Vector paikka, double leveys, double korkeus)
236    {
237
238        Lohari lohari = new Lohari(leveys, korkeus);
239        lohari.Position = paikka;
240        lohari.Mass = 4.0;
241        lohari.Image = loharikuva;
242        lohari.Tag = "Pelaaja2";
243        AddCollisionHandler(lohari,"tahti", TormaaTahteen);
244        Add(lohari);
245
246        Label pisteNaytto2 = new Label();
247        pisteNaytto2.X = Screen.Right - 80;
248        pisteNaytto2.Y = Screen.Top - 50;
249        pisteNaytto2.TextColor = Color.Red;
250        pisteNaytto2.BindTo(lohari.ElamaLaskuri);
251        Add(pisteNaytto2);
252
253        BarGauge elamapalkki2 = new BarGauge(20, Screen.Width / 10);
254        elamapalkki2.X = Screen.Right - 80;
255        elamapalkki2.Y = Screen.Top - 80;
256        elamapalkki2.Angle = Angle.FromDegrees(90);
257        elamapalkki2.BindTo(lohari.ElamaLaskuri);
258        elamapalkki2.Color = Color.Red;
259        elamapalkki2.BarColor = Color.Green;
260        Add(elamapalkki2);
261    }
262
263    void LisaaNappaimet()
264    {
265        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
266        Keyboard.Listen(Key.F5, ButtonState.Pressed, AloitaAlusta, "Aloita alusta");
267        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
268
269        //Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
270        //Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
271        //Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
272
273        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
274
275        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
276
277        //ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
278        //ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
279        //ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
280
281        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
282    }
283
284    void AmmuAseella(AssaultRifle ase)
285    {
286        PhysicsObject ammus = ase.Shoot();
287
288        if (ammus != null)
289        {
290            //ammus.Size *= 3;
291            //ammus.Image = ...
292            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
293        }
294    }
295
296    void AloitaAlusta()
297    {
298
299        ClearAll();
300        Begin();
301
302    }
303
304    void Liikuta(PlatformCharacter hahmo, double nopeus)
305    {
306        hahmo.Walk(nopeus);
307    }
308
309    void Hyppaa(PlatformCharacter hahmo, double nopeus)
310    {
311        hahmo.Jump(nopeus);
312    }
313
314    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
315    {
316        maaliAani.Play();
317        MessageDisplay.Add("Keräsit tähden!");
318        tahti.Destroy();
319    }
320}
321
322
323
324
325
326
327class Kakkuhirvio : PlatformCharacter
328{
329    private IntMeter elamaLaskuri = new IntMeter(68, 0, 68);
330    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
331
332    public Kakkuhirvio(double leveys, double korkeus)
333        : base(leveys, korkeus)
334    {
335        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
336    }
337}
338
339
340
341
342class Lohari : PlatformCharacter
343{
344    private IntMeter elamaLaskuri = new IntMeter(91, 0, 91);
345    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
346
347    public Lohari(double leveys, double korkeus)
348        : base(leveys, korkeus)
349    {
350        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
351    }
352}
Note: See TracBrowser for help on using the repository browser.