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

Revision 1424, 5.5 KB checked in by heanjule, 9 years ago (diff)

jatkoin pyromaani-peliä

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