source: 2014/24/JuhoJ/ShotgunJoe/ShotgunJoe/ShotgunJoe/ShotgunJoe.cs @ 4972

Revision 4972, 8.9 KB checked in by juonoljo, 8 years ago (diff)

laatikoita

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class ShotgunJoe : PhysicsGame
10{
11    // TODO laatikot putoaa näkymättömien seinien läpi
12    // TODO tynnyrit ei saa räjäyttää lattiaa
13    // TODO
14    const double nopeus = 200;
15    const double hyppyNopeus = 550;
16    const int RUUDUN_KOKO = 40;
17   
18   
19    PlatformCharacter pelaaja1;
20    PlasmaCannon pelaajan1Ase;
21   
22
23    DoubleMeter elamalaskuri;
24
25
26    Image pelaajanKuva = LoadImage("shutter");
27    Image tahtiKuva = LoadImage("tahti");
28    Image piikkikuva = LoadImage("Piikki");
29    SoundEffect maaliAani = LoadSoundEffect("maali");
30    Image ruohokuva = LoadImage("Ruoho");
31    Image multakuva = LoadImage("multa");
32    Image asekuva = LoadImage("haulikko");
33    Image panoskuva = LoadImage("ammus");
34    Image vihukuva = LoadImage("Vihu");
35    Image näkymätönkuva = LoadImage("näkymätön");
36    Image tynnyrikuva = LoadImage("tynnyri");
37    Image laatikkokuva = LoadImage("laatikko");
38    public override void Begin()
39    {
40        Gravity = new Vector(0, -1000);
41
42        LuoKentta();
43        LisaaNappaimet();
44        LuoElamaLaskuri();
45
46        RandomUusiLaatikko();
47       
48        Timer ajastin = new Timer();
49        ajastin.Interval = 1.5;
50        ajastin.Timeout += RandomUusiLaatikko;
51        ajastin.Start();
52
53        Camera.Follow(pelaaja1);
54        Camera.ZoomFactor = 4.2;
55        Camera.StayInLevel = true;
56
57        pelaaja1.Weapon = new PlasmaCannon(30, 10);
58        pelaaja1.Weapon.Image = asekuva;
59        pelaaja1.Weapon.Ammo.Value = 100;
60        pelaaja1.Weapon.ProjectileCollision = AmmusOsui; 
61        pelaaja1.Weapon.FireRate = 1.0;
62       
63    }
64
65    void LuoKentta()
66    {
67        TileMap kentta = TileMap.FromLevelAsset("kentta1");
68        kentta.SetTileMethod('#', LisaaTaso);
69        kentta.SetTileMethod('*', LisaaTahti);
70        kentta.SetTileMethod('J', LisaaPelaaja);
71        kentta.SetTileMethod('P', LisaaPiikki);
72        kentta.SetTileMethod('R', LisaaRuoho);
73        kentta.SetTileMethod('V', LisaaVihu);
74        kentta.SetTileMethod('N', LisaaNäkymätön);
75        kentta.SetTileMethod('T', LisaaTynnyri);
76        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
77        Level.CreateBorders();
78        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
79    }
80
81    void LisaaTaso(Vector paikka, double leveys, double korkeus)
82    {
83        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
84        taso.Position = paikka;
85        taso.Image = multakuva;
86        taso.IgnoresExplosions = true;
87        Add(taso);
88    }
89
90    void LisaaTahti(Vector paikka, double leveys, double korkeus)
91    {
92        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
93        tahti.IgnoresCollisionResponse = true;
94        tahti.Position = paikka;
95        tahti.Image = tahtiKuva;
96        tahti.Tag = "tahti";
97        Add(tahti);
98    }
99
100    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
101    {
102        pelaaja1 = new PlatformCharacter(leveys , korkeus );
103        pelaaja1.Position = paikka;
104        pelaaja1.Mass = 4.0;
105        pelaaja1.Image = pelaajanKuva;
106        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
107        AddCollisionHandler(pelaaja1, "piikki", TormaaPiikkiin);
108       
109        AddCollisionHandler(pelaaja1, "vihu", TormaaVihuun);
110        Add(pelaaja1);
111    }
112
113    void LisaaNappaimet()
114    {
115        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
116        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
117
118        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
119        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
120        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
121
122        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
123
124        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
125        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
126        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
127        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
128
129        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
130    }
131
132    void Liikuta(PlatformCharacter hahmo, double nopeus)
133    {
134        hahmo.Walk(nopeus);
135    }
136
137    void Hyppaa(PlatformCharacter hahmo, double nopeus)
138    {
139        hahmo.Jump(nopeus);
140    }
141
142    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
143    {
144        maaliAani.Play();
145        MessageDisplay.Add("Keräsit tähden!");
146        tahti.Destroy();
147    }
148
149    void LisaaPiikki(Vector paikka, Double leveys, Double korkeus)
150    {
151        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
152        piikki.Tag = "piikki";
153        piikki.Position = paikka;
154        piikki.Image = piikkikuva;
155        Add(piikki);
156
157    }
158
159    void LisaaRuoho(Vector paikka, Double leveys, Double korkeus)
160    {
161        PhysicsObject ruoho = PhysicsObject.CreateStaticObject(leveys, korkeus);
162        ruoho.Tag = "ruoho";
163        ruoho.Position = paikka;
164        ruoho.Image = ruohokuva;
165        ruoho.IgnoresExplosions = true;
166        Add(ruoho);
167
168    }
169
170    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
171    {
172
173        if (kohde.Tag == "tynnyri")
174        {
175            Explosion rajahdys = new Explosion(45);
176            rajahdys.Position = kohde.Position;
177            rajahdys.UseShockWave = true;
178            rajahdys.AddShockwaveHandler("vihu", PaineaaltoOsuu);
179            Add(rajahdys);
180            kohde.Destroy();
181        }
182
183
184
185        if (kohde.Tag == "vihu")
186        { // if tag tee räjähdys
187            kohde.Destroy();
188        }
189        ammus.Destroy();
190    }
191
192    void PaineaaltoOsuu(IPhysicsObject olio, Vector shokki)
193    {
194        olio.Destroy();
195    }
196
197    void AmmuAseella(PlatformCharacter pelaaja)
198    {
199        PhysicsObject ammus = pelaaja.Weapon.Shoot();
200
201        if (ammus != null)
202        {
203            //ammus.Size *= 3;
204            ammus.Image = panoskuva;
205            ammus.MaximumLifetime = TimeSpan.FromSeconds(1.0);
206           
207        }
208    }
209
210    void LisaaVihu(Vector paikka, Double leveys, Double korkeus)
211    {
212        PlatformCharacter vihu = new PlatformCharacter(leveys, korkeus);
213        vihu.Position = paikka;
214        vihu.Tag = "vihu";
215        vihu.Image = vihukuva;
216        AddCollisionHandler(vihu, "piikki", CollisionHandler.DestroyObject);
217        Add(vihu);
218        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
219        vihu.Brain = seuraajanAivot;
220       
221    }
222
223    void LisaaNäkymätön(Vector paikka, Double leveys, Double korkeus)
224    {
225        PhysicsObject näkymätön = PhysicsObject.CreateStaticObject(leveys, korkeus);
226        näkymätön.Tag = "näkymätön";
227        näkymätön.Position = paikka;
228        näkymätön.Image = näkymätönkuva;
229        Add(näkymätön);
230    }
231
232    void LuoElamaLaskuri()
233    {
234        elamalaskuri = new DoubleMeter(3, 0, 3);
235        // elämä nyt,minimi,max
236        elamalaskuri.LowerLimit += ElamaLoppui;
237
238        ProgressBar elamaPalkki = new ProgressBar(150, 20);
239        elamaPalkki.X = Screen.Left + 150;
240        elamaPalkki.Y = Screen.Top - 20;
241        elamaPalkki.BindTo(elamalaskuri);
242        elamaPalkki.Color = Color.Transparent;
243        elamaPalkki.BarColor = Color.Red;
244        elamaPalkki.BorderColor = Color.Black;
245        Add(elamaPalkki);
246    }
247
248    void ElamaLoppui()
249    {
250        MessageDisplay.Add("Huudat elämäsi puolesta kun sisälmyksesi valuvat maahan!");
251        pelaaja1.Destroy();
252    }
253
254    void TormaaPiikkiin(PhysicsObject hahmo, PhysicsObject piikki)
255    {
256        elamalaskuri.Value -= 3;
257    }
258
259    void TormaaVihuun(PhysicsObject hahmo, PhysicsObject vihu)
260    {
261        elamalaskuri.Value -= 1;
262    }
263
264    void VihuTormaa()
265    {
266
267    }
268
269
270    void LisaaTynnyri(Vector paikka, Double leveys, Double korkeus)
271    {
272        PhysicsObject tynnyri = PhysicsObject.CreateStaticObject(leveys, korkeus);
273        tynnyri.Tag = "tynnyri";
274        tynnyri.Position = paikka;
275        tynnyri.Image = tynnyrikuva;
276        Add(tynnyri);
277    }
278    void RandomUusiLaatikko()
279    {
280        Double Y = Level.Top - 25;
281        Double X = RandomGen.NextDouble(Level.Left, Level.Right);
282        PhysicsObject laatikko = new PhysicsObject(50, 50);
283        laatikko.Position = new Vector(X, Y);
284        laatikko.Tag = "laatikko";
285        laatikko.Image = laatikkokuva;
286        Add(laatikko);
287    }
288
289   
290   
291
292
293   
294
295}
Note: See TracBrowser for help on using the repository browser.