source: 2015/24/JuusoM/JuusonHyppelyPeli/JuusonHyppelyPeli/JuusonHyppelyPeli/JuusonHyppelyPeli.cs @ 5948

Revision 5948, 6.2 KB checked in by jujamann, 6 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 JuusonHyppelyPeli : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14   
15
16
17    PlatformCharacter pelaaja1;
18
19    Image pelaajanKuva = LoadImage("SpiderKnight");
20    Image tahtiKuva = LoadImage("176");
21    Image piikkikuva = LoadImage("piikki");
22    Image pahiskuva = LoadImage("pahis1");
23    Image assaultRifle = LoadImage("");
24       
25
26    SoundEffect maaliAani = LoadSoundEffect("maali");
27
28    public override void Begin()
29    {
30        AloitaAlusta();
31    }
32    void AloitaAlusta()
33    {
34        ClearAll();
35        Gravity = new Vector(0, -1000);
36
37        LuoKentta();
38        LisaaNappaimet();
39
40        Camera.Follow(pelaaja1);
41        Camera.ZoomFactor = 1.2;
42        Camera.StayInLevel = true;
43    }
44
45
46    void LuoKentta()
47    {
48        TileMap kentta = TileMap.FromLevelAsset("kentta1");
49        kentta.SetTileMethod('#', LisaaTaso);
50        kentta.SetTileMethod('*', LisaaTahti);
51        kentta.SetTileMethod('N', LisaaPelaaja);
52        kentta.SetTileMethod('p', LisaaPiikki);
53        kentta.SetTileMethod('v', LisaaPahis);
54        kentta.SetTileMethod(b, LisaaPommi);
55        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
56        Level.CreateBorders();
57        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
58    }
59
60    void LisaaTaso(Vector paikka, double leveys, double korkeus)
61    {
62        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
63        taso.Position = paikka;
64        taso.Color = Color.Green;
65        Add(taso);
66    }
67    void LisaaPahis(Vector paikka, double leveys, double korkeus)
68    {
69        PlatformCharacter pahis = new PlatformCharacter(leveys * 1.5, korkeus * 2.5);
70        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
71        tasoAivot.Speed = 100;
72
73        pahis.Brain = tasoAivot;
74        pahis.Position = paikka;
75        pahis.Position += new Vector(0, korkeus);
76        pahis.Color = Color.White;
77        pahis.Tag = "pahis";
78        pahis.Image = pahiskuva;
79        Add(pahis);
80
81    }
82
83    void LisaaTahti(Vector paikka, double leveys, double korkeus)
84    {
85        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
86        tahti.IgnoresCollisionResponse = true;
87        tahti.Position = paikka;
88        tahti.Image = tahtiKuva;
89        tahti.Tag = "tahti";
90        Add(tahti);
91
92    }
93    void LisaaPommi(Vector paikka, double leveys, double korkeus)
94    {
95        PhysicsObject pommi = PhysicsObject.CreateStaticObject(leveys, korkeus);
96        pommi.Position = paikka;
97        pommi.Color = Color.White;
98        pommi.Tag = "piikki";
99        pommi.Image = piikkikuva;
100        Add(pommi);
101    }
102
103
104    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
105    {
106        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
107        piikki.Position = paikka;
108        piikki.Color = Color.White;
109        piikki.Tag = "piikki";
110        piikki.Image = piikkikuva;
111        Add(piikki);
112    }
113    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
114    {
115        ammus.Destroy();
116        if (kohde.Tag.Equals("pahis"))
117        {
118            kohde.Destroy();
119        }
120
121   
122   
123   
124   
125    }
126    void AmmuAseella(PlatformCharacter pelaaja1)
127    {
128        PhysicsObject ammus = pelaaja1.Weapon.Shoot();
129
130        if (ammus != null)
131        {
132            //ammus.Size *= 3;
133            //ammus.Image = ...
134            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
135        }
136    }
137
138
139
140    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
141    {
142        pelaaja1 = new PlatformCharacter(leveys, korkeus);
143        pelaaja1.Position = paikka;
144        pelaaja1.Mass = 4.0;
145        pelaaja1.Image = pelaajanKuva;
146        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
147        AddCollisionHandler(pelaaja1, "piikki", TormaaPiikkiin);
148        AddCollisionHandler(pelaaja1, "pahis", TormaaPiikkiin);
149        Add(pelaaja1);
150        AssaultRifle pelaajan1Ase = new AssaultRifle(30, 10);
151
152        //Ammusten määrä aluksi:
153        pelaajan1Ase.Ammo.Value = 1000;
154
155        //Mitä tapahtuu kun ammus osuu johonkin?
156        pelaajan1Ase.ProjectileCollision = AmmusOsui;
157        pelaaja1.Weapon = pelaajan1Ase;
158    }
159    void TormaaPiikkiin(PhysicsObject hahmo, PhysicsObject piikki)
160    {
161     
162        MessageDisplay.Add("Kuolit :(");
163        hahmo.Destroy();
164        Timer.SingleShot(2, AloitaAlusta);
165    }
166
167
168    void LisaaNappaimet()
169    {
170        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
171        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
172
173        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
174        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
175        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
176
177        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
178
179        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
180        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
181        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
182        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
183
184
185        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
186    }
187
188    void Liikuta(PlatformCharacter hahmo, double nopeus)
189    {
190        hahmo.Walk(nopeus);
191    }
192
193    void Hyppaa(PlatformCharacter hahmo, double nopeus)
194    {
195        hahmo.Jump(nopeus);
196    }
197
198    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
199    {
200        maaliAani.Play();
201        MessageDisplay.Add("Keräsit tähden!");
202        tahti.Destroy();
203    }
204   
205
206
207}
Note: See TracBrowser for help on using the repository browser.