source: 2010/30/heanjule/Pyromaani/Peli.cs @ 1472

Revision 1472, 7.7 KB checked in by heanjule, 11 years ago (diff)

pyromaani-peli valmis

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Widgets;
5using Jypeli.Assets;
6
7public class Peli : PhysicsGame
8{
9    const int ruudunLeveys = 50;
10    const int ruudunKorkeus = 50;
11
12    const double nopeus = 200;
13    const double hyppyvoima = 6500;
14
15    PlatformCharacter pyro;
16    GameObject pyronPaikka;
17
18    List<Weapon> inventory;
19    int valittuAse;
20
21    Image pyronKuva = LoadImage("pyro");
22    Image vihollinenKuva = LoadImage("Terroristi");
23   
24
25    protected override void Begin()
26    {
27        LuoKentta();
28        LisaaNappaimet();
29        Camera.Follow(pyro);
30        Camera.ZoomFactor = 2.0;
31        Camera.StayInLevel = true;
32       
33
34        Gravity = new Vector(0, -800);
35    }
36
37    void LuoKentta()
38    {
39
40        TileMap taustaruudut = TileMap.FromFile("kenttatausta.txt");
41        taustaruudut['='] = LuoKuutio;
42        taustaruudut.Insert(ruudunLeveys, ruudunKorkeus);
43
44        inventory = new List<Weapon>();
45
46
47        TileMap ruudut = TileMap.FromFile("kentta.txt");
48        ruudut['='] = LuoPalikka;
49        ruudut['1'] = LuoPyronPaikka;
50        ruudut['*'] = LuoAse;
51        ruudut['V'] = LuoVihollinen;
52        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
53
54        lisaaPelaajat();
55
56        Level.CreateBorders();
57        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
58
59    }
60
61    GameObject LuoPyronPaikka()
62    {
63        //pyro = new PlatformCharacter(40.0, 20);
64        //pyro.Shape = Shapes.Rectangle;
65        //pyro.Color = Color.Black;
66        //pyro.Mass = 10.0;
67
68        //pyro.Weapon = new AssaultRifle(20, 5);
69
70        pyronPaikka = new GameObject(1, 1);
71        pyronPaikka.IsVisible = false;
72
73        return pyronPaikka;
74    }
75
76    GameObject LuoKuutio()
77    {
78        GameObject kuutio = new GameObject(50, 50, Shapes.Rectangle);
79        kuutio.Color = Color.Blue;
80       
81        return kuutio;
82    }
83
84    PhysicsObject LuoPalikka()
85    {
86        PhysicsObject palikka = PhysicsObject.CreateStaticObject(50.0, 50.0);       
87        return palikka;
88    }
89
90    PhysicsObject LuoAse()
91    {
92        PhysicsObject ase = PhysicsObject.CreateStaticObject(20.0, 20.0);
93        ase.Tag = "ase";
94        return ase;
95    }
96
97    PlatformCharacter LuoVihollinen()
98    {
99        PlatformCharacter vihollinen = new PlatformCharacter(50, 50);
100        vihollinen.Weapon = new AssaultRifle(50, 20);
101        vihollinen.Tag = "vihollinen";
102        vihollinen.Image = vihollinenKuva;
103
104        Add(vihollinen);
105
106        Timer ajastin = new Timer();
107        ajastin.Interval = 0.5;
108        ajastin.Trigger += VihollinenAmpuu;
109        ajastin.Tag = vihollinen;
110        ajastin.Start();
111
112        return vihollinen;
113
114    }
115    void VihollinenAmpuu(Timer ajastin)
116    {
117        PlatformCharacter vihollinen = ((PlatformCharacter)ajastin.Tag);
118
119        if (vihollinen.X > pyro.X) vihollinen.Walk(-0.1);
120        else vihollinen.Walk(0.1);
121
122        if (vihollinen != null)
123        {
124            PhysicsObject ammus = vihollinen.Weapon.Shoot();
125
126            if (ammus != null)
127            {
128                AddCollisionHandler(ammus, vihollisenAmmusOsuu);
129                ammus.Size *= 3;
130            }
131        }
132        {
133
134        }
135    }
136
137    void vihollisenAmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
138    {
139        if (kohde.Tag.ToString() == "vihollinen") return;
140        if (kohde == pyro)
141        {
142            pyro.Destroy();
143        }
144        ammus.Destroy();
145    }
146
147   
148
149    void LisaaTaso(double x, double y)
150    {
151        PhysicsObject taso = PhysicsObject.CreateStaticObject(40, 40);
152        taso.Color = Color.Green;
153        taso.X = x;
154        taso.Y = y;
155        Add(taso);
156    }
157
158    void lisaaPelaajat()
159    {
160        pyro = new PlatformCharacter(40, 20);
161        pyro.Color = Color.Black;
162        pyro.Mass = 10.0;
163        pyro.Image = pyronKuva;
164        AddCollisionHandler(pyro, esineenKerays);
165
166
167        AssaultRifle kivaari = new AssaultRifle(20, 5);
168        inventory.Add(kivaari);
169
170        PlasmaCannon plasma = new PlasmaCannon(20, 5);
171        inventory.Add(plasma);
172
173        LaserGun laserpyssy = new LaserGun(20, 5);
174        inventory.Add(laserpyssy);
175
176        pyro.Weapon = kivaari;
177        valittuAse = 0;
178        //pyro.Weapon = new PlasmaCannon(20, 5);
179   
180   
181        pyro.Position = pyronPaikka.Position;
182        //pyro.X = 0;
183        //pyro.Y = Level.Bottom + 120;
184
185        Add(pyro, 1);
186
187    }
188
189    void esineenKerays(PhysicsObject pyro, PhysicsObject kohde)
190    {
191        if (kohde.Tag.ToString() == "ase")
192        {
193            //inventory.Add(kohde);
194            kohde.Destroy();
195           
196        }
197    }
198
199
200    void LisaaNappaimet()
201    {
202        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
203        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
204
205        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "liikkuu vasemmalle", pyro, -nopeus );
206        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "liikkuu oikealle", pyro, nopeus );
207        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pyro, hyppyvoima );
208
209        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä" );
210
211        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pyro, -nopeus);
212        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pyro, nopeus);
213        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pyro, hyppyvoima);
214
215        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu");
216        Keyboard.Listen(Key.G, ButtonState.Pressed, HeitaKranaatti, "Heitä");
217        Keyboard.Listen(Key.E, ButtonState.Pressed, VaihdaAse, "Vaihda");
218       
219    }
220
221    void liikuta( PlatformCharacter hahmo, double nopeus)
222    {
223        hahmo.Walk( nopeus );
224    }
225
226    void hyppaa( PlatformCharacter hahmo, double voima )
227    {
228        hahmo.Jump(voima);
229    }
230    void AmmuAseella()
231    {
232        PhysicsObject ammus = pyro.Weapon.Shoot();
233
234        if (ammus != null)
235        {
236            AddCollisionHandler(ammus, pyronAmmusOsuu);
237            ammus.Size *= 3;
238        }
239       
240    }
241
242    void pyronAmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
243    {
244        if (kohde == pyro) return;
245        if (kohde.Tag.ToString() == "vihollinen")
246        {
247            kohde.Destroy();
248        }
249        ammus.Destroy();
250    }
251
252    void HeitaKranaatti()
253    {
254        ClusterGrenade kranaatti = new ClusterGrenade(4.0, 2);
255        kranaatti.X = pyro.X + 40;
256        kranaatti.Y = pyro.Y + 10;
257        kranaatti.FuseTime = TimeSpan.FromSeconds(3);
258
259
260        Add(kranaatti);
261        Vector heittoVoima = Vector.FromLengthAndAngle(4000, Angle.Degrees(45));
262        kranaatti.Hit(heittoVoima);
263        kranaatti.NumberOfClusters = 4;
264
265
266    }
267    void VaihdaAse()
268    {
269        int edellinenAse = valittuAse;
270        valittuAse++;
271
272        if (valittuAse >= inventory.Count)
273        {
274            valittuAse = 0;
275        }
276
277        pyro.Remove(inventory[edellinenAse]);
278
279        Remove(pyro);
280        pyro.Weapon = inventory[valittuAse];
281
282        Timer pelaajaTakas = new Timer(); 
283        pelaajaTakas.Interval = 0; 
284        pelaajaTakas.Tag = pyro; 
285        pelaajaTakas.Start(1); 
286        pelaajaTakas.Trigger += PelaajaTakasinAseenVaihdonJalkeen;
287
288    }
289
290    void PelaajaTakasinAseenVaihdonJalkeen(Timer ajastin) 
291    { 
292        PlatformCharacter pelaaja = (PlatformCharacter)ajastin.Tag; 
293        Add(pyro, 1);
294    } 
295
296           
297 
298
299
300
301}
Note: See TracBrowser for help on using the repository browser.