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

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