source: 2010/31/ossakama/Erskan kostoretki/Peli.cs @ 1691

Revision 1667, 6.8 KB checked in by ossakama, 10 years ago (diff)

peli valmis. yksi turha kuva(kranumies.png)

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6
7class Tasohyppely : PhysicsGame
8{
9    DoubleMeter Enupalkki;
10
11    const int ruudunLeveys = 50;
12    const int ruudunKorkeus = 50;
13
14    const double nopeus = 200;
15    const double hyppyVoima = 5000;
16
17    PlatformCharacter erska;
18
19    protected override void Begin()
20    {
21        LuoKentta();
22
23        HeitaKranaatti();
24
25        Gravity = new Vector(0, -1000);
26
27        luoKentta();
28        lisaaNappaimet();
29
30        Camera.Follow(erska);
31        Camera.ZoomFactor = 2.0;
32        Camera.StayInLevel = true;
33
34        Enupalkki = new DoubleMeter(100);
35        Enupalkki.MaxValue = 100;
36        BarGauge Enut = new BarGauge(20, 150);
37        Enut.BindTo(Enupalkki);
38        Add(Enut);
39
40        Enut.X = (0.8 * Screen.RightSafe);
41        Enut.Y = (0.8 * Screen.TopSafe);
42        Enut.BarColor = Color.Blue;
43        Enut.BorderColor = Color.White;
44        Enut.Angle = Angle.Degrees(90);
45
46        Enupalkki.LowerLimit += Gameover;
47
48    }
49
50    void luoKentta()
51    {
52        Level.CreateBorders();
53        Level.BackgroundColor = Color.White;
54
55    }
56    void lisaaNappaimet()
57
58    {
59        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
60        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
61
62        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", erska, -nopeus);
63        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", erska, nopeus);
64        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", erska, hyppyVoima);
65        Keyboard.Listen(Key.Space, ButtonState.Down, erska.Weapon.Use, "Ammu");
66        Keyboard.Listen(Key.G, ButtonState.Down, HeitaKranaatti, "kranaatti");
67
68    }
69
70    void liikuta(PlatformCharacter hahmo, double nopeus)
71    {
72        hahmo.Walk(nopeus);
73    }
74
75    void hyppaa(PlatformCharacter hahmo, double voima)
76    {
77        hahmo.Jump(voima);
78    }
79    void LuoKentta()
80    {
81        TileMap ruudut = TileMap.FromFile("kentta.txt");
82        ruudut['='] = LuoPalikka;
83        ruudut['1'] = LuoErska;
84        ruudut['x'] = LuoRyssa;
85        ruudut['P'] = LuoPaakka;
86        ruudut['p'] = LuoPottu;
87        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
88    }
89    PhysicsObject LuoPalikka()
90    {
91        PhysicsObject palikka = PhysicsObject.CreateStaticObject(50.0, 50.0);
92        palikka.Image = LoadImage("palikka");
93        return palikka;
94    }
95    PlatformCharacter LuoErska()
96    {
97        erska = new PlatformCharacter(90, 120);
98        erska.Mass = 4.0;
99        erska.Image = LoadImage("erska");
100        erska.X = 0;
101        erska.Y = Level.Bottom + 120;
102        LaserGun laserPyssy = new LaserGun(80, 20);
103        laserPyssy.LaserCollision = LaserSadeOsuu;
104        erska.Weapon = laserPyssy;
105        AddCollisionHandler(erska, KeraaPottu);
106       
107        erska.Weapon.Y -= 15;
108
109        return erska;
110    }
111    PlatformCharacter LuoRyssa()
112    {
113        PlatformCharacter ryssa = new PlatformCharacter(90, 120);
114        ryssa.Mass = 4000.0;
115        ryssa.Image = LoadImage("ryssa");
116        ryssa.Tag = "vihu";
117        ryssa.X = 0;
118        ryssa.Y = Level.Bottom + 120;
119        PlasmaCannon plasmatykki = new PlasmaCannon(80, 20);
120        plasmatykki.PlasmaParticleCollision = PlasmapalloOsuu;
121        ryssa.Weapon = plasmatykki;
122
123        ryssa.Weapon.Y -= 22;
124
125        Timer ajastin = new Timer();
126        ajastin.Interval = 1.5;
127        ajastin.Trigger += RyssaAmpuu;
128        ajastin.Tag = ryssa;
129        ajastin.Start();
130
131        return ryssa;
132    }
133    void HeitaKranaatti()
134    {
135        ClusterGrenade kranaatti = new ClusterGrenade(100.0, 1);
136        kranaatti.X = erska.X + 0;
137        kranaatti.Y = erska.Y + 0;
138        Add(kranaatti);
139        Vector heittoVoima = Vector.FromLengthAndAngle(40000, Angle.Degrees(45));
140        kranaatti.Hit(heittoVoima);
141        kranaatti.NumberOfClusters = 1;
142        kranaatti.Image = LoadImage("kranu");
143    }
144    void RyssaAmpuu( Timer LauennutAjastin )
145    {
146        PlatformCharacter ryssa = LauennutAjastin.Tag as PlatformCharacter;
147
148        if (ryssa != null)
149        {
150            ryssa.Weapon.Shoot(); 
151        }
152    }
153    void LaserSadeOsuu( PhysicsObject Laser, PhysicsObject toinen )
154    {
155        if (toinen != erska)
156        {
157            Laser.Destroy();
158            Explosion rajahdys = new Explosion(4000);
159            rajahdys.Position = Laser.Position;
160            Add(rajahdys);
161            rajahdys.Speed = 5000.0;
162            rajahdys.Force = 100000;
163            rajahdys.ShockwaveColor = Color.Black;
164        }
165        if (toinen.Tag.ToString() == "vihu")
166        {
167            toinen.Destroy();
168        }
169        if (toinen.Tag.ToString() == "boss")
170        {
171            toinen.Destroy();
172            MessageDisplay.Add("KOSTIT PERHEESI PUOLESTA! PRO! VOITIT PELIN!");
173        }
174    }
175    void PlasmapalloOsuu(PhysicsObject Plasma, PhysicsObject toinen)
176    {
177        if (toinen == erska)
178        {
179            Enupalkki.Value -= 25;
180        }
181    }
182    PlatformCharacter LuoPaakka()
183    {
184        PlatformCharacter paakka = new PlatformCharacter(90, 120);
185        paakka.Mass = 4000.0;
186        paakka.Image = LoadImage("paakka");
187        paakka.Tag = "boss";
188        paakka.X = 0;
189        paakka.Y = Level.Bottom + 120;
190        paakka.Weapon = new PlasmaCannon(80, 20);
191        paakka.Weapon.Y -= 10;
192       
193        Timer ajastin = new Timer();
194        ajastin.Interval = 0.1;
195        ajastin.Trigger += PaakkaAmpuu;
196        ajastin.Tag = paakka;
197        ajastin.Start();
198
199        return paakka;
200    }
201    void PaakkaAmpuu(Timer LauennutAjastin)
202    {
203        PlatformCharacter paakka = LauennutAjastin.Tag as PlatformCharacter;
204
205        if (paakka != null)
206        {
207            paakka.Weapon.Shoot();
208        }
209    }
210    PhysicsObject LuoPottu()
211    {
212        PhysicsObject pottu = new PhysicsObject(40.0, 40.0);
213        pottu.Mass = 10000000.0;
214        pottu.Image = LoadImage("pottu");
215        pottu.Tag = "potion";
216
217        return pottu;
218    }
219    void KeraaPottu(PhysicsObject erska, PhysicsObject kohde)
220    {
221        if (kohde.Tag.ToString() == "potion")
222        {
223            kohde.Destroy();
224            Enupalkki.Value += 50;
225        }
226    }
227    void Gameover(double mittarinArvo)
228    {
229        erska.Destroy();
230        MessageDisplay.Add("GAME OVER! N00B! PAINA ESC LOPETTAAKKSESI!GAME OVER! N00B! PAINA ESC LOPETTAAKKSESI!");
231        Explosion rajahdys = new Explosion(40000000);
232        rajahdys.Position = erska.Position;
233        Add(rajahdys);
234        rajahdys.Speed = 100.0;
235        rajahdys.Force = 99999999999;
236        rajahdys.ShockwaveColor = Color.Red;
237    }
238
239}
Note: See TracBrowser for help on using the repository browser.